Merge branch 'master' into trs80dt1

This commit is contained in:
Frank Palazzolo 2017-11-01 22:41:48 -04:00
commit c86461ae82
186 changed files with 6420 additions and 3157 deletions

View File

@ -383,7 +383,7 @@ Xtal Systems (Xtal Research)
<description>Konami Four Game Arcade</description>
<year>19??</year>
<publisher>Konami</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="4game.dsk" size="225536" crc="19cc28fa" sha1="fed6c4972fc72ac51952f3b800c43f1b1240643b" offset="000000" />
</dataarea>
@ -394,7 +394,7 @@ Xtal Systems (Xtal Research)
<description>256 Games Pack for Einstein 256</description>
<year>1986</year>
<publisher>Merlin Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="432111">
<rom name="256 games pack (1986)(merlin software).dsk" size="432111" crc="2146b276" sha1="f1264ae29aed7ef14a99ce3a851adf0a4888e427" offset="000000" />
</dataarea>
@ -405,7 +405,7 @@ Xtal Systems (Xtal Research)
<description>Agrovator</description>
<year>19??</year>
<publisher>Syntaxsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="432111">
<rom name="agrovator (19xx)(syntaxsoft).dsk" size="432111" crc="c63f389c" sha1="1c83b50e3bbd91ae8a2003734a6028b88aecd42a" offset="000000" />
</dataarea>
@ -416,7 +416,7 @@ Xtal Systems (Xtal Research)
<description>Alice and the March Hare</description>
<year>1986</year>
<publisher>Orion Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="alice and the march hare (1986)(orion software).dsk" size="215296" crc="064166a6" sha1="d7138afc0068fe192ac1718ae6566b016de26571" offset="000000" />
</dataarea>
@ -428,7 +428,7 @@ Xtal Systems (Xtal Research)
<description>Assembly Language Course</description>
<year>1985</year>
<publisher>Glentop</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="assembly.dsk" size="215296" crc="ca014880" sha1="0c512676eb9bd2769459d5f3cf98fa173fe7ae40" offset="000000" />
</dataarea>
@ -439,7 +439,7 @@ Xtal Systems (Xtal Research)
<description>Boardello</description>
<year>1985</year>
<publisher>Bubble Bus</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="boardelo.dsk" size="215296" crc="4f428e86" sha1="1aaecade1d2d7e5ca7ffdd056fe66054d0c1e36d" offset="000000" />
</dataarea>
@ -450,7 +450,7 @@ Xtal Systems (Xtal Research)
<description>Basic Tutorial</description>
<year>1984</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="basic.dsk" size="215296" crc="f3433463" sha1="da34ca555b1173b7683c5288209696f1780386c2" offset="000000" />
</dataarea>
@ -461,7 +461,7 @@ Xtal Systems (Xtal Research)
<description>Castle Quest &amp; Quest</description>
<year>19??</year>
<publisher>Kuma Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="castle.dsk" size="215296" crc="d21a8b66" sha1="cc12ce160e9da03c687f1d325deacf750c63622b" offset="000000" />
</dataarea>
@ -472,7 +472,7 @@ Xtal Systems (Xtal Research)
<description>Chuckie Egg</description>
<year>1984</year>
<publisher>Tatung Einsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="chuckie.dsk" size="215296" crc="646a2e35" sha1="0ec273fef5172259a81a3837904450ad03842e42" offset="000000" />
</dataarea>
@ -483,7 +483,7 @@ Xtal Systems (Xtal Research)
<description>CP/M+</description>
<year>19??</year>
<publisher>Duncan Elvin</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="cpm3.dsk" size="215296" crc="ba285bc6" sha1="862af9d340226fb8f21ab8ae209dba209775bc6e" offset="000000" />
</dataarea>
@ -494,7 +494,7 @@ Xtal Systems (Xtal Research)
<description>Cluedo</description>
<year>1984</year>
<publisher>Leisure Genius</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="cluedo.dsk" size="215296" crc="9c512cd7" sha1="2c0c2db7d7b029b2dac634891429e3b2fc0ab896" offset="000000" />
</dataarea>
@ -505,7 +505,7 @@ Xtal Systems (Xtal Research)
<description>Colour Fantasia</description>
<year>1984</year>
<publisher>Kuma</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="colour fantasia (1984)(kuma).dsk" size="215296" crc="9ba560b0" sha1="315cf7972b5ab4101d7fa36b8473f95bfbb0b5c9" offset="000000" />
</dataarea>
@ -516,7 +516,7 @@ Xtal Systems (Xtal Research)
<description>The Cracker (v2.31c)</description>
<year>1985</year>
<publisher>Tatung</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="cracker, the v2.31c (1985)(tatung).dsk" size="215296" crc="d7281b0d" sha1="92866de491cb5e8dd42d1c1cd458e17b2e0d3dcd" offset="000000" />
</dataarea>
@ -527,7 +527,7 @@ Xtal Systems (Xtal Research)
<description>Cursed Chambers &amp; ZRIM</description>
<year>19??</year>
<publisher>Kuma Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="cchamber.dsk" size="215296" crc="5ed3b3f6" sha1="77deff35d7d68dbf22ebdffe950e0a160a888799" offset="000000" />
</dataarea>
@ -538,7 +538,7 @@ Xtal Systems (Xtal Research)
<description>Cursed Chambers &amp; ZRIM (Alt)</description>
<year>19??</year>
<publisher>Kuma Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="cursed chambers &amp; zrim (198x)(kuma software).dsk" size="215296" crc="e90b6d6e" sha1="42fdd02da64b5141e968a8edbeafbf244a8b67de" offset="000000" />
</dataarea>
@ -549,7 +549,7 @@ Xtal Systems (Xtal Research)
<description>Dan Diamond Trilogy</description>
<year>19??</year>
<publisher>Tatung Einsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="diamond.dsk" size="215296" crc="7995e95b" sha1="af9784f5129c91de29d896cd4ef6eb013abe4b2e" offset="000000" />
</dataarea>
@ -560,7 +560,7 @@ Xtal Systems (Xtal Research)
<description>The Disc</description>
<year>19??</year>
<publisher>Emsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="disk.dsk" size="215296" crc="2a18d569" sha1="45950a6d63d661c4819a53e156da8027055eff42" offset="000000" />
</dataarea>
@ -571,7 +571,7 @@ Xtal Systems (Xtal Research)
<description>Disco Dan</description>
<year>1984</year>
<publisher>Tatung Einsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="disco.dsk" size="215296" crc="21006fae" sha1="0c8563fb3b5d92d10f7560ed70558b74b203e2ca" offset="000000" />
</dataarea>
@ -583,7 +583,7 @@ Xtal Systems (Xtal Research)
<description>Druid</description>
<year>19??</year>
<publisher>Merlin Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="druid.dsk" size="215296" crc="25de2d70" sha1="008fec6fdfa922172cf385166a676c3d76943a71" offset="000000" />
</dataarea>
@ -594,7 +594,7 @@ Xtal Systems (Xtal Research)
<description>Eazidraw</description>
<year>1988</year>
<publisher>Supasoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="eazidraw.dsk" size="215296" crc="8999581b" sha1="49a00d2489ae0e9bc14cf96d5363b916fe242608" offset="000000" />
</dataarea>
@ -605,7 +605,7 @@ Xtal Systems (Xtal Research)
<description>Fire!!! / Para-Shoot / Apocalypse / Headache / Gold Miner / Kentucky Derby</description>
<year>19??</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="6in1.dsk" size="215296" crc="ab3cba74" sha1="42c12012e0053d8017cd2c9c07bd38e9b54f2e03" offset="000000" />
</dataarea>
@ -616,7 +616,7 @@ Xtal Systems (Xtal Research)
<description>Einstein Compendium</description>
<year>19??</year>
<publisher>Emsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="einstein compendium (19xx)(emsoft).dsk" size="215296" crc="40aaf5ff" sha1="c3a4b1b128e77b97b4cfd1a8b6d5e9a718ed8136" offset="000000" />
</dataarea>
@ -627,7 +627,7 @@ Xtal Systems (Xtal Research)
<description>Einstein Micro Plox</description>
<year>1989</year>
<publisher>Henry Philippe</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="microplx.dsk" size="215296" crc="8559318d" sha1="4c585dce341652c37d5066c63864030cd0aaa44b" offset="000000" />
</dataarea>
@ -638,7 +638,7 @@ Xtal Systems (Xtal Research)
<description>Elite</description>
<year>198?</year>
<publisher>Firebird</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="elite.dsk" size="215296" crc="17dad062" sha1="e0ee4579e436ea0de01d6dc68e4034a119ee8777" offset="000000" />
</dataarea>
@ -649,7 +649,7 @@ Xtal Systems (Xtal Research)
<description>Escape from Merlin 8</description>
<year>19??</year>
<publisher>Merlin Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="escape.dsk" size="215296" crc="354f1dc7" sha1="46fff7aaa171c13e370329eed2f8857e3349b74a" offset="000000" />
</dataarea>
@ -660,7 +660,7 @@ Xtal Systems (Xtal Research)
<description>Fathom's Deep</description>
<year>19??</year>
<publisher>Merlin Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="fathoms deep (19xx)(merlin software).dsk" size="215296" crc="303afc4f" sha1="4a619ebc15353c6a7cc0ec4844a430343acec68f" offset="000000" />
</dataarea>
@ -671,7 +671,7 @@ Xtal Systems (Xtal Research)
<description>Flight Simulation</description>
<year>1985</year>
<publisher>ScreenSoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="flightsim.dsk" size="215296" crc="9af55027" sha1="a8187166874feca2bdc8463a2c4c8ce923c4cede" offset="000000" />
</dataarea>
@ -682,7 +682,7 @@ Xtal Systems (Xtal Research)
<description>Fu-Kung in Las Vegas</description>
<year>1985</year>
<publisher>Tatung Einsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="fukung.dsk" size="215296" crc="1fa870f3" sha1="c191b77d3a688a0cc7666e82df4ab767c0985bd7" offset="000000" />
</dataarea>
@ -693,7 +693,7 @@ Xtal Systems (Xtal Research)
<description>Games Compendium</description>
<year>19??</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="games.dsk" size="215296" crc="c3b528b7" sha1="f7065b08ceced334afa94a56bbf9c6f32a9c15f5" offset="000000" />
</dataarea>
@ -704,7 +704,7 @@ Xtal Systems (Xtal Research)
<description>Get Lost &amp; Mr Fixit</description>
<year>1984</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="get lost &amp; mr fixit (1984)(solo software).dsk" size="215296" crc="07b9417b" sha1="078e78f81c251fe3bef2caefe766f21454c06985" offset="000000" />
</dataarea>
@ -715,7 +715,7 @@ Xtal Systems (Xtal Research)
<description>Gronks</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="gronks.dsk" size="215296" crc="706fbb82" sha1="4be0e5f6c901fddbd0d4e3867a4686e24466f9eb" offset="000000" />
</dataarea>
@ -726,7 +726,7 @@ Xtal Systems (Xtal Research)
<description>Heli-Maths</description>
<year>1985</year>
<publisher>Screensoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="heli-maths (1985)(screensoft).dsk" size="215296" crc="05554ee4" sha1="ad180db0a1de09fa9bc33b78a616602515567032" offset="000000" />
</dataarea>
@ -737,7 +737,7 @@ Xtal Systems (Xtal Research)
<description>Highway Encounter</description>
<year>1985</year>
<publisher>Orion Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="highway.dsk" size="1722368" crc="6a0b9186" sha1="dc88e7aa2cdf9d066fece5dc10092a41de077075" offset="000000" />
</dataarea>
@ -748,7 +748,7 @@ Xtal Systems (Xtal Research)
<description>Hitchhikers Guide to the Galaxy</description>
<year>1984</year>
<publisher>Infocom</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="hitchiker.dsk" size="215296" crc="6d67855a" sha1="99f91956d576d815ca28f0f872bbb625d23c9ba8" offset="000000" />
</dataarea>
@ -759,7 +759,7 @@ Xtal Systems (Xtal Research)
<description>Hustler</description>
<year>1985</year>
<publisher>Bubble Bus</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="hustler.dsk" size="215296" crc="86602255" sha1="964e96a6b800bf609546fc5fbb3ceb12a63c73d8" offset="000000" />
</dataarea>
@ -771,7 +771,7 @@ Xtal Systems (Xtal Research)
<description>Island of Artuan</description>
<year>19??</year>
<publisher>Kuma Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="artuan.dsk" size="215296" crc="02a10c4b" sha1="e1db7bdfd057ed98416aea91641489a295e6b977" offset="000000" />
</dataarea>
@ -782,7 +782,7 @@ Xtal Systems (Xtal Research)
<description>Jet Set Willy</description>
<year>19??</year>
<publisher>Software Projects</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="willy.dsk" size="215296" crc="0cb80035" sha1="13e0de50a739103b2e3839cf2274510e2440224c" offset="000000" />
</dataarea>
@ -793,7 +793,7 @@ Xtal Systems (Xtal Research)
<description>Kuma Disc Utility (v1.0)</description>
<year>19??</year>
<publisher>Kuma Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="kumautil.dsk" size="215296" crc="49149c08" sha1="ddb0aa5ac4bb63b9d9c90218db7bad794a564ab9" offset="000000" />
</dataarea>
@ -804,7 +804,7 @@ Xtal Systems (Xtal Research)
<description>Lazy Jones</description>
<year>1985</year>
<publisher>Terminal Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="lazyjone.dsk" size="215296" crc="fff1af5d" sha1="ed44cace57f25ddf865091f1b9753e8e0555b8c6" offset="000000" />
</dataarea>
@ -815,7 +815,7 @@ Xtal Systems (Xtal Research)
<description>Les Flics</description>
<year>1985</year>
<publisher>Electric Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="lesflics.dsk" size="215296" crc="8014e1f0" sha1="e0602ee608b7416089e05929b7bb36116a42344f" offset="000000" />
</dataarea>
@ -826,7 +826,7 @@ Xtal Systems (Xtal Research)
<description>Manic Miner</description>
<year>1985</year>
<publisher>Software Projects</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="manicmin.dsk" size="215296" crc="074d1c59" sha1="1cb57d05ff38517fa7aa4bcedf56a324e57d57c0" offset="000000" />
</dataarea>
@ -837,7 +837,7 @@ Xtal Systems (Xtal Research)
<description>Manik Panik &amp; Galaxoids</description>
<year>19??</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="432111">
<rom name="manik panik &amp; galaxoids (19xx)(solo software).dsk" size="432111" crc="3512fac4" sha1="e48e44ba48535665cd97a54185c94c559bd7813a" offset="000000" />
</dataarea>
@ -848,7 +848,7 @@ Xtal Systems (Xtal Research)
<description>Mathe-Magic &amp; Scoop</description>
<year>19??</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="mathe.dsk" size="215296" crc="88a08a2f" sha1="bfbdd42f5fb5eeeb97c8ab04b1c8474ce59ddf40" offset="000000" />
</dataarea>
@ -859,7 +859,7 @@ Xtal Systems (Xtal Research)
<description>Maths Quest &amp; Alphabet Quest</description>
<year>19??</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="mathsq.dsk" size="215296" crc="e90111b1" sha1="0949b404180115fa914d12f37edfb24de4bc83d2" offset="000000" />
</dataarea>
@ -870,7 +870,7 @@ Xtal Systems (Xtal Research)
<description>Maxima</description>
<year>1985</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="maxima.dsk" size="215296" crc="9af76546" sha1="b8683812dd2f64f5f6048899863cf41ef0f60cc4" offset="000000" />
</dataarea>
@ -881,7 +881,7 @@ Xtal Systems (Xtal Research)
<description>Miner Dick</description>
<year>1984</year>
<publisher>Merlin Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="miner dick (1984)(merlin software).dsk" size="215296" crc="85b403e9" sha1="a5902ca0d2eb6e33840c771fc204a77afc93416b" offset="000000" />
</dataarea>
@ -892,7 +892,7 @@ Xtal Systems (Xtal Research)
<description>Monopoly</description>
<year>19??</year>
<publisher>Leisure Genius</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="monopoly.dsk" size="215296" crc="28059487" sha1="03681989f41e434388b26e58fdc124de39864f60" offset="000000" />
</dataarea>
@ -903,7 +903,7 @@ Xtal Systems (Xtal Research)
<description>Mouse Art</description>
<year>19??</year>
<publisher>Emsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="mouse art (19xx)(emsoft).dsk" size="215296" crc="0645ec91" sha1="4c207b635a8acbf83361659a55953999e33cd335" offset="000000" />
</dataarea>
@ -914,7 +914,7 @@ Xtal Systems (Xtal Research)
<description>Music Composer</description>
<year>1984</year>
<publisher>Kuma Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="mcomposer.dsk" size="215296" crc="24a295c6" sha1="dc9682960157204ec5d2938a96a56a271bbffc11" offset="000000" />
</dataarea>
@ -925,7 +925,7 @@ Xtal Systems (Xtal Research)
<description>Music Workshop</description>
<year>19??</year>
<publisher>Screensoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="mworkshop.dsk" size="215296" crc="a4bfa2ef" sha1="edd4a4aa4ba14f72632099cfe9eaca9519fc0a4a" offset="000000" />
</dataarea>
@ -936,7 +936,7 @@ Xtal Systems (Xtal Research)
<description>Music Workshop (Alt)</description>
<year>19??</year>
<publisher>Screensoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="music workshop (19xx)(screensoft)[a].dsk" size="215296" crc="bc7e66cf" sha1="438398a62e92b003672dd595d7358de662de9b70" offset="000000" />
</dataarea>
@ -947,7 +947,7 @@ Xtal Systems (Xtal Research)
<description>Nightmare Park &amp; Commando Plain</description>
<year>19??</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="nightmare.dsk" size="215296" crc="13b56567" sha1="22776fe320f00fb0908ce29a8908f0dc38e0f719" offset="000000" />
</dataarea>
@ -958,7 +958,7 @@ Xtal Systems (Xtal Research)
<description>Oh Mummy!</description>
<year>1984</year>
<publisher>Tatung Einsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="ohmummy.dsk" size="215296" crc="86ae70c1" sha1="ceb5fb85e83a1af8540a51f70ebac366e0f588d8" offset="000000" />
</dataarea>
@ -969,7 +969,7 @@ Xtal Systems (Xtal Research)
<description>Pakman &amp; Millipede</description>
<year>198?</year>
<publisher>Kuma Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="pakman &amp; millipede (198x)(kuma software).dsk" size="215296" crc="e4873d5c" sha1="9706faecc8a4df33bdcbd0dc7549d6b70257a97d" offset="000000" />
</dataarea>
@ -980,7 +980,7 @@ Xtal Systems (Xtal Research)
<description>Panzer Attack</description>
<year>1985</year>
<publisher>Lothlorien</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="panzer attack (1985)(lothlorien).dsk" size="215296" crc="0ce722b7" sha1="78c2c21534f9299814a6757f7334d4f5b21c3995" offset="000000" />
</dataarea>
@ -991,7 +991,7 @@ Xtal Systems (Xtal Research)
<description>Pete's Utilities</description>
<year>19??</year>
<publisher>Merlin Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="peteutil.dsk" size="215296" crc="33f92503" sha1="551a8b97c5bbf1d9f2202f1fee516455d2d67c7b" offset="000000" />
</dataarea>
@ -1002,7 +1002,7 @@ Xtal Systems (Xtal Research)
<description>Programmers Kit</description>
<year>19??</year>
<publisher>Merlin Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="progkit.dsk" size="215296" crc="2feebf86" sha1="e488c6a92706021f94de645206dafaf1beb52b8c" offset="000000" />
</dataarea>
@ -1013,7 +1013,7 @@ Xtal Systems (Xtal Research)
<description>Punchy</description>
<year>1985</year>
<publisher>Tatung Einsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="punchy.dsk" size="215296" crc="644c1a0a" sha1="ff4c740976a57ec01eb9b11e09af141c20219b02" offset="000000" />
</dataarea>
@ -1024,7 +1024,7 @@ Xtal Systems (Xtal Research)
<description>Quantum</description>
<year>19??</year>
<publisher>Merlin Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="432111">
<rom name="quantum (19xx)(orion software).dsk" size="432111" crc="2145a675" sha1="53aedb6567deafc5a5b29b1b714141ae78a78d20" offset="000000" />
</dataarea>
@ -1035,7 +1035,7 @@ Xtal Systems (Xtal Research)
<description>River Bandits</description>
<year>19??</year>
<publisher>Merlin Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="435183">
<rom name="river bandits (19xx)(merlin software).dsk" size="435183" crc="84f88b5c" sha1="728678c6f3eee525ac752c7f8b0226e6df18ec31" offset="000000" />
</dataarea>
@ -1046,7 +1046,7 @@ Xtal Systems (Xtal Research)
<description>Rocket / Giant Maths / Mighty Writer</description>
<year>19??</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="rocket.dsk" size="215296" crc="8ffe425c" sha1="04036decd519566ab407787d9ce837416182d986" offset="000000" />
</dataarea>
@ -1057,7 +1057,7 @@ Xtal Systems (Xtal Research)
<description>Roverball</description>
<year>19??</year>
<publisher>Merlin Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="432111">
<rom name="roverball (19xx)(merlin software).dsk" size="432111" crc="72ade6bd" sha1="ac2aedfa2cb5565591d444ddf50cfc013a4e23cb" offset="000000" />
</dataarea>
@ -1068,7 +1068,7 @@ Xtal Systems (Xtal Research)
<description>Qoko 2</description>
<year>19??</year>
<publisher>Orion Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="qoko2.dsk" size="215296" crc="bcbd472f" sha1="c53d9272306f119acd9e441ddacb1cd467160cc3" offset="000000" />
</dataarea>
@ -1079,7 +1079,7 @@ Xtal Systems (Xtal Research)
<description>Scrabble</description>
<year>1985</year>
<publisher>Leisure Genius</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="scrabble.dsk" size="215296" crc="d0925441" sha1="6249757df8309764c3c2577b1e682cba7bb25a0c" offset="000000" />
</dataarea>
@ -1090,7 +1090,7 @@ Xtal Systems (Xtal Research)
<description>Screen Plus</description>
<year>1985</year>
<publisher>Syntaxsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="screenpl.dsk" size="215296" crc="a2098af2" sha1="bd8afb974470c6d25c35a4610c5c3717b3bb6971" offset="000000" />
</dataarea>
@ -1101,7 +1101,7 @@ Xtal Systems (Xtal Research)
<description>Southern Belle</description>
<year>19??</year>
<publisher>Merlin Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="southern belle (19xx)(hewson consultants)[rm].dsk" size="215296" crc="fde43d49" sha1="62def9be94e32e6d608534bc9af460d657d0d14b" offset="000000" />
</dataarea>
@ -1112,7 +1112,7 @@ Xtal Systems (Xtal Research)
<description>Space Trap</description>
<year>1985</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="spactrap.dsk" size="215296" crc="ca2fd938" sha1="a17b65b031eafe359c452c28c1ecd6260a21eb2e" offset="000000" />
</dataarea>
@ -1123,7 +1123,7 @@ Xtal Systems (Xtal Research)
<description>Special Operations</description>
<year>198?</year>
<publisher>Lothlorien</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="specops.dsk" size="215296" crc="608c9413" sha1="f5cec117a1a4a1c82a678a5a291c55c91617d26f" offset="000000" />
</dataarea>
@ -1134,7 +1134,7 @@ Xtal Systems (Xtal Research)
<description>Spectrum Emulator Disk 1</description>
<year>19??</year>
<publisher>Syntaxsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="spectrum emulator disk 1 (19xx)(syntaxsoft).dsk" size="215296" crc="51cfd4ef" sha1="17fad087a94be68c659d36d16db73c82ee3fb083" offset="000000" />
</dataarea>
@ -1145,7 +1145,7 @@ Xtal Systems (Xtal Research)
<description>Spell n' Build</description>
<year>19??</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="spelbuld.dsk" size="215296" crc="f59fbfd8" sha1="2fabe45acc4e830ea66778099adadca1a333239e" offset="000000" />
</dataarea>
@ -1156,7 +1156,7 @@ Xtal Systems (Xtal Research)
<description>Spellbreaker</description>
<year>1985</year>
<publisher>Infocom</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="spellbreaker (1985)(infocom).dsk" size="215296" crc="292a832d" sha1="372cfdb1cfb7be518b0f6114fad7d1c26781a227" offset="000000" />
</dataarea>
@ -1167,7 +1167,7 @@ Xtal Systems (Xtal Research)
<description>Spreadsheet</description>
<year>1984</year>
<publisher>Kuma Computers</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="speadsht.dsk" size="215296" crc="96f8e1b8" sha1="976e16127b445ef672f4f7008a0e81e9f8dc4bba" offset="000000" />
</dataarea>
@ -1178,7 +1178,7 @@ Xtal Systems (Xtal Research)
<description>Starcross</description>
<year>198?</year>
<publisher>Infocom</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="star+.dsk" size="215296" crc="fdc09965" sha1="e571189c00bd2f117f84431fb01383debd1d772e" offset="000000" />
</dataarea>
@ -1189,7 +1189,7 @@ Xtal Systems (Xtal Research)
<description>Starquake</description>
<year>19??</year>
<publisher>Merlin Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="starq.dsk" size="215296" crc="c8e4344f" sha1="884aa4fac99205e6972f089d3c41ce757ad17099" offset="000000" />
</dataarea>
@ -1200,7 +1200,7 @@ Xtal Systems (Xtal Research)
<description>Stepper</description>
<year>1986</year>
<publisher>KH Scriven</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="stepper.dsk" size="215296" crc="bf206229" sha1="98bb1935d18ef060b142d6205443a89ae5a49d14" offset="000000" />
</dataarea>
@ -1211,7 +1211,7 @@ Xtal Systems (Xtal Research)
<description>Superchess</description>
<year>1984</year>
<publisher>Kuma Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="schess.dsk" size="215296" crc="330ee711" sha1="ecb705079c67ed7310ace0fd54a17fb938b62aa9" offset="000000" />
</dataarea>
@ -1222,7 +1222,7 @@ Xtal Systems (Xtal Research)
<description>SuperFORTH (v1.12)</description>
<year>1984</year>
<publisher>Tatung Einsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="sforth.dsk" size="215296" crc="adba426f" sha1="1a7b90ff0f5878594c23c2f2d625df50da3987e8" offset="000000" />
</dataarea>
@ -1233,7 +1233,7 @@ Xtal Systems (Xtal Research)
<description>Super Six Game Pack (Tatung)</description>
<year>198?</year>
<publisher>Tatung Einsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="super6.dsk" size="215296" crc="d30f1ed7" sha1="c9d36bec2116db5fa2f376e2f0c52f78ee8b8667" offset="000000" />
</dataarea>
@ -1244,7 +1244,7 @@ Xtal Systems (Xtal Research)
<description>Super Six Game Pack (Tatung, Alt)</description>
<year>198?</year>
<publisher>Tatung Einsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="super six game pack (198x)(tatung einsoft).dsk" size="215296" crc="a2e1621d" sha1="60854afb50f96f64069349635fd91d03ba4cda2a" offset="000000" />
</dataarea>
@ -1255,7 +1255,7 @@ Xtal Systems (Xtal Research)
<description>Super 6 Games (Bell)</description>
<year>19??</year>
<publisher>Bell Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="432111">
<rom name="super 6 games disc (19xx)(bell software).dsk" size="432111" crc="f38c6b10" sha1="7d515b1a84378549e87c9aaa61af106f5201c3bd" offset="000000" />
</dataarea>
@ -1266,7 +1266,7 @@ Xtal Systems (Xtal Research)
<description>Superstore</description>
<year>19??</year>
<publisher>Kuma Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="supstor.dsk" size="215296" crc="cc3c0961" sha1="3bf8f107646e7f45ea0a20a8286eb81da73aa78a" offset="000000" />
</dataarea>
@ -1277,7 +1277,7 @@ Xtal Systems (Xtal Research)
<description>Suspended</description>
<year>19??</year>
<publisher>A.C.E. Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="supend.dsk" size="215296" crc="90d5482c" sha1="c7f7073ef5b643f38ac06c945bad437fe67602b9" offset="000000" />
</dataarea>
@ -1288,7 +1288,7 @@ Xtal Systems (Xtal Research)
<description>System 5</description>
<year>19??</year>
<publisher>Crystal Research</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="system5.dsk" size="215296" crc="d33a17f2" sha1="eeb2a41b244db29fff7b6ac9dde21e860fb018f2" offset="000000" />
</dataarea>
@ -1299,7 +1299,7 @@ Xtal Systems (Xtal Research)
<description>System 80</description>
<year>19??</year>
<publisher>Tatung</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="sys80.dsk" size="215296" crc="e77e6eb0" sha1="0912b399a59003e9fa611f7393f466e27502de25" offset="000000" />
</dataarea>
@ -1310,7 +1310,7 @@ Xtal Systems (Xtal Research)
<description>Tasprint</description>
<year>1985</year>
<publisher>Tasman Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="tasprint.dsk" size="215296" crc="c1d1ffd4" sha1="46c9629c62bbe0394d58cd17837efc0011b79b59" offset="000000" />
</dataarea>
@ -1321,7 +1321,7 @@ Xtal Systems (Xtal Research)
<description>Tasword</description>
<year>1985</year>
<publisher>Tasman Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="tasword.dsk" size="215296" crc="94c27e94" sha1="5141c45b16fbbb4a6b740b2677e17635f63c8695" offset="000000" />
</dataarea>
@ -1332,7 +1332,7 @@ Xtal Systems (Xtal Research)
<description>Theatre Europe</description>
<year>19??</year>
<publisher>Merlin Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="theatre.dsk" size="215296" crc="b429b7e7" sha1="3c7b1686340204776e734652dbdce807301a7e7a" offset="000000" />
</dataarea>
@ -1343,7 +1343,7 @@ Xtal Systems (Xtal Research)
<description>Time Trap</description>
<year>1984</year>
<publisher>Tatung Einsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="timtrap.dsk" size="215296" crc="93d4de6f" sha1="6f947d5b36be85a8b9773c26e472c9a72c610d50" offset="000000" />
</dataarea>
@ -1354,7 +1354,7 @@ Xtal Systems (Xtal Research)
<description>Toado &amp; Fruckles</description>
<year>1986</year>
<publisher>Syntaxsoft</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="toado &amp; fruckles (1986)(syntaxsoft).dsk" size="215296" crc="588f1d91" sha1="727f1ee2f5073c4ffb3980592eb34cda3ff4e255" offset="000000" />
</dataarea>
@ -1365,7 +1365,7 @@ Xtal Systems (Xtal Research)
<description>Tombs of Karnak &amp; Encounter</description>
<year>19??</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="tomb.dsk" size="215296" crc="c0efda16" sha1="9f8d07df2a09e189b17ce0ac43e16119f337ef30" offset="000000" />
</dataarea>
@ -1376,7 +1376,7 @@ Xtal Systems (Xtal Research)
<description>Tournament Snooker</description>
<year>198?</year>
<publisher>Hard Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="snooker.dsk" size="215296" crc="509a8c66" sha1="ded70d23bb2987c59a9221d2f8271ad249a0f7c8" offset="000000" />
</dataarea>
@ -1387,7 +1387,7 @@ Xtal Systems (Xtal Research)
<description>Traditional 16+ Maths &amp; Cyfax</description>
<year>198?</year>
<publisher>Solo Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="cyfax &amp; traditional 16+ maths (198x)(solo software).dsk" size="215296" crc="0c354ecd" sha1="5967d06ae1d0665d8523cb0b688ba5bf807457a5" offset="000000" />
</dataarea>
@ -1398,7 +1398,7 @@ Xtal Systems (Xtal Research)
<description>Tycoon &amp; Pelmanism</description>
<year>198?</year>
<publisher>Kuma Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="tycoon.dsk" size="215296" crc="b019ca6d" sha1="06f58afed1e7f8741aa648a001d79ccaa7b78bb5" offset="000000" />
</dataarea>
@ -1409,7 +1409,7 @@ Xtal Systems (Xtal Research)
<description>Wishbringer</description>
<year>19??</year>
<publisher>Infocom</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="wishbringer (19xx)(infocom).dsk" size="215296" crc="6b9c0abe" sha1="9c9de627961e89cd6944613e96144cf93dacc389" offset="000000" />
</dataarea>
@ -1420,7 +1420,7 @@ Xtal Systems (Xtal Research)
<description>Word Processor 40</description>
<year>19??</year>
<publisher>Surrey Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="wordproc.dsk" size="215296" crc="ebcde8d6" sha1="f8079b7fb1a1422236d3d1a2f5610845c4145a64" offset="000000" />
</dataarea>
@ -1431,7 +1431,7 @@ Xtal Systems (Xtal Research)
<description>The Wreck</description>
<year>19??</year>
<publisher>Electric Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="wreck.dsk" size="215296" crc="53fcd39a" sha1="76dd0102565ba64ad6fa885872c81c366a1a4c44" offset="000000" />
</dataarea>
@ -1442,7 +1442,7 @@ Xtal Systems (Xtal Research)
<description>X-master</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="xmaster.dsk" size="215296" crc="15f20d52" sha1="31fca29a6de3e06c0209e95bb57b27d14a2aa832" offset="000000" />
</dataarea>
@ -1453,7 +1453,7 @@ Xtal Systems (Xtal Research)
<description>Xanagrams &amp; Quadrax</description>
<year>19??</year>
<publisher>Kuma Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="xanagram.dsk" size="215296" crc="1ebdfff2" sha1="9d052b0ae1ab421c7e7e1af4cee61e730235cbd9" offset="000000" />
</dataarea>
@ -1464,7 +1464,7 @@ Xtal Systems (Xtal Research)
<description>Xtaldos 1.31</description>
<year>198?</year>
<publisher>Tatung</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="xtaldos.dsk" size="215296" crc="833a5fe8" sha1="998da7d4470f52ee353abfd1f5aaf5e4d36ce35b" offset="000000" />
</dataarea>
@ -1476,7 +1476,7 @@ Xtal Systems (Xtal Research)
<description>Zen Editor/Assembler</description>
<year>19??</year>
<publisher>Kuma Software</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="zen.dsk" size="215296" crc="6026bd29" sha1="214992bf15a1209eefc55a359e4f64743a2c56db" offset="000000" />
</dataarea>
@ -1487,7 +1487,7 @@ Xtal Systems (Xtal Research)
<description>Zork I - The Great Underground Empire</description>
<year>198?</year>
<publisher>Infocom</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="zork i - the great underground empire (198x)(infocom).dsk" size="215296" crc="f7b3609d" sha1="ba812a81498a55cb333c04f4243b82ad96d7e6bf" offset="000000" />
</dataarea>
@ -1498,7 +1498,7 @@ Xtal Systems (Xtal Research)
<description>Zork II</description>
<year>198?</year>
<publisher>Infocom</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="zork2.dsk" size="215296" crc="001fc68d" sha1="35c86af9a47cf16f434d4c1a58e1203170537779" offset="000000" />
</dataarea>
@ -1509,7 +1509,7 @@ Xtal Systems (Xtal Research)
<description>Zork III - The Dungeon Master</description>
<year>198?</year>
<publisher>Infocom</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="zork iii - the dungeon master (198x)(infocom).dsk" size="215296" crc="35f19012" sha1="0e7a3665bcb52432f5831635196b94cff52490de" offset="000000" />
</dataarea>
@ -1524,7 +1524,7 @@ Xtal Systems (Xtal Research)
<year>19??</year>
<publisher>&lt;homebrew&gt;</publisher>
<info name="author" value="Mario Castro" />
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="100 metres sprint &amp; karate (19xx)(castro, mario).dsk" size="215296" crc="e19fddea" sha1="92e7f6cf7465ca99d3fea300c14a98fffe825087" offset="000000" />
</dataarea>
@ -1536,7 +1536,7 @@ Xtal Systems (Xtal Research)
<year>19??</year>
<publisher>&lt;homebrew&gt;</publisher>
<info name="author" value="Mario Castro" />
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="conan &amp; boxing (19xx)(castro, mario).dsk" size="215296" crc="841c2f87" sha1="ef27be711470e8f1899002a7d2c135365433a7a1" offset="000000" />
</dataarea>
@ -1548,7 +1548,7 @@ Xtal Systems (Xtal Research)
<year>2005</year>
<publisher>&lt;homebrew&gt;</publisher>
<info name="author" value="Mario Castro" />
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="lottery (2005)(castro, mario).dsk" size="215296" crc="356cbdbb" sha1="dc832b72dda5d3997b22f48f26619eecd809b007" offset="000000" />
</dataarea>
@ -1560,7 +1560,7 @@ Xtal Systems (Xtal Research)
<year>19??</year>
<publisher>&lt;homebrew&gt;</publisher>
<info name="author" value="Mario Castro" />
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="ski-jump &amp; nubble trubble (19xx)(castro, mario).dsk" size="215296" crc="589a78d2" sha1="e474ef511c440c8c61b8fa4cfd551cfa60e27f51" offset="000000" />
</dataarea>
@ -1573,7 +1573,7 @@ Xtal Systems (Xtal Research)
<publisher>&lt;homebrew&gt;</publisher>
<info name="author" value="Mario Castro" />
<info name="usage" value="Start with Tatung-Xtaldos 1.31" /> <!-- Star Trek is a Basic Game -->
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="star trek (19xx)(castro, mario).dsk" size="215296" crc="525d1dd2" sha1="0f438ac14b52ff5a5071106b148c81293ba747d7" offset="000000" />
</dataarea>
@ -1585,7 +1585,7 @@ Xtal Systems (Xtal Research)
<year>19??</year>
<publisher>&lt;homebrew&gt;</publisher>
<info name="author" value="Mario Castro" />
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="sword feud (19xx)(a.c.e. software).dsk" size="215296" crc="b871d8f0" sha1="410710023db949bd37d6af41b844650dcfb6cefa" offset="000000" />
</dataarea>
@ -1597,7 +1597,7 @@ Xtal Systems (Xtal Research)
<year>1984?</year>
<publisher>&lt;homebrew&gt;</publisher>
<info name="author" value="R.T. Russell" />
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="bbc basic v2.31 (1984)(russell, r.t.).dsk" size="215296" crc="358103e1" sha1="6d26185b34ea0ac4f6773af7f3fa2a556bd266eb" offset="000000" />
</dataarea>
@ -1609,7 +1609,7 @@ Xtal Systems (Xtal Research)
<year>19??</year>
<publisher>&lt;homebrew&gt;</publisher>
<info name="author" value="Andrew Dunipace" />
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="einstein disk international 1 (19xx)(dunipace, andrew).dsk" size="215296" crc="bc633dd3" sha1="b82eb7b2868e7243559815520143c6b59e966be7" offset="000000" />
</dataarea>
@ -1621,7 +1621,7 @@ Xtal Systems (Xtal Research)
<year>19??</year>
<publisher>&lt;homebrew&gt;</publisher>
<info name="author" value="Andrew Dunipace" />
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="einstein disk international 2 (19xx)(dunipace, andrew).dsk" size="215296" crc="da550c81" sha1="4ca4c297c3d661ccab7e1f7bb2b3a161ae95f2b2" offset="000000" />
</dataarea>
@ -1633,7 +1633,7 @@ Xtal Systems (Xtal Research)
<year>198?</year>
<publisher>&lt;homebrew&gt;</publisher>
<info name="author" value="Andrew Dunipace?" />
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="einstein disk international 3 (19xx)(-).dsk" size="215296" crc="ff3219ea" sha1="505f3b7aafa54addeba34dab7a21009b2f9a7baa" offset="000000" />
</dataarea>
@ -1644,7 +1644,7 @@ Xtal Systems (Xtal Research)
<description>Game Compilation (Cracked)</description>
<year>19??</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="game compilation (19xx)(-)[cr].dsk" size="215296" crc="e9e06cad" sha1="7c584b517c0e961cc3d6ea9424876743fa0706fb" offset="000000" />
</dataarea>
@ -1656,7 +1656,7 @@ Xtal Systems (Xtal Research)
<year>1983</year>
<publisher>&lt;homebrew&gt;</publisher>
<info name="author" value="Dave Rand" />
<part name="flop1" interface="floppy_5_25">
<part name="flop1" interface="floppy_3">
<dataarea name="flop" size="215296">
<rom name="steam computer software volume 22 v1.05 (1983-07-27)(rand, dave).dsk" size="215296" crc="67aa01e8" sha1="b7e7006e7e4e7b95a3a085ccfd64872cab40184b" offset="000000" />
</dataarea>
@ -1664,5 +1664,3 @@ Xtal Systems (Xtal Research)
</software>
</softwarelist>

View File

@ -41,7 +41,7 @@ Arquelphos D.O.
Aska Base Algo 1989/5 SET(CD+FD)
Aska Word Algo 1991/1 SET(CD+FD)
Band-kun Koei 1991/1 SET(CD+FD)
Battle JAM 1992/10 CD
Battle GAM 1992/10 CD
Battle Chess Fujitsu 1991/9 CD
Bell's Avenue Vol. 3 Wendy Magazine 1995/4 CD
Bible Master 2: Aglia no Jashin Glodia 1995/1 SET(CD+FD)
@ -80,7 +80,7 @@ CG Syndicate Vol. 1: Lisa Northpoint R Key
Chiemi & Naomi Fairytale (Red Zone) 1993/12 CD
Chiisana Ensouka Fujitsu Social Science Laboratory 1993/9 CD
Chikyuu no Himitsu (Kankyou Kyouiku Kyouzai) Fujitsu 1994/7 CD
Chinmoku no Kantai JAM 1992/4 SET(CD+FD)
Chinmoku no Kantai GAM 1992/4 SET(CD+FD)
Chinsei Toshiba EMI 1989/11 CD
Chiri Jigsaw World 2 Fujitsu Ooita Software Laboratory 1994/12 SET(CD+FD)
Chotto Shita Ohanashi Fujitsu 1995/11 CD
@ -139,7 +139,6 @@ Doki Doki Vacation Cocktail Soft
Dor Best Selection Gekan D.O. 1993/5 CD×02
Do-Re-Mi Canvas Tokyo Shoseki 1994/12 CD
Dracula Hakushaku Fairytale 1993/3 CD
Dragon Shock Log 1989/11 CD
Dragon Souseiki Basho House 1993/12 CD
Drive Simulator Home Navi Fujitsu Ten 1994/8 SET(CD+FD)
Dynamic Business English 1 DynEd Japan 1994/11 SET(CD+FD)
@ -217,8 +216,8 @@ Fujitsu Habitat V2.1 Fujitsu
Fukui Toshio no Otenki Map Inter Limited Logic 1991/2 CD
Functioning in Business Part 1 DynEd Japan 1992/7 SET(CD+FD)
Functioning in Business Part 2 DynEd Japan 1992/7 SET(CD+FD)
Fuzzy Kakeibo JAM 1993/4 SET(CD+FD)
Fuzzy Kakeibo 3 JAM 1995/11 CD
Fuzzy Kakeibo GAM 1993/4 SET(CD+FD)
Fuzzy Kakeibo 3 GAM 1995/11 CD
G5 AMR 1989/7 CD
Gadget Toshiba EMI 1993/12 CD
Gakuen Bakuretsu Tenkousei! ZyX 1996/3 CD
@ -229,7 +228,7 @@ Game Nihonshi: Tenkabito Hideyoshi to Ieyasu Koei
Garou Densetsu Special Mahou (Nihon Home Data) 1996/9 SET(CD+FD)
GearPOWER V1.1 Fujitsu 1995/1 CD
Gedit Towns Data West 1989/3 CD
Geimu Jan+ JAM 1993/5 CD
Geimu Jan+ GAM 1993/5 CD
Geitassha Towns Shoubi Gakuen 1989/7 CD
Gendai Yougo no Kiso Chishiki (1989) Fujitsu 1989/12 CD
Gendai Yougo no Kiso Chishiki (1991) Fujitsu 1991/1 CD
@ -327,7 +326,7 @@ If 1-2-3 CD Collection Active
If 3 Active 1995/4 CD
Igo Doujou Shodan Kaigan! Kyuu kara Dan e no Chousen Fujitsu OA 1991/5 CD
Igo Doujou Yaburi: Menkyo Kaiden!! Mezase 7-kyuu Fujitsu OA 1990/10 CD
Igo Nyuumon Doujou JAM 1991/6 CD
Igo Nyuumon Doujou GAM 1991/6 CD
Illust Hyakka: Yamashita Hideki no Ikiiki Cut-shuu CSK Research Institute (CRI) 1990/8 CD
Image Art System Raison 1990/6 CD
Image Art System Pro Raison 1990/8 CD
@ -346,7 +345,6 @@ J.League Professional Soccer 1994 Victor Entertainme
JAF Drive Guide JAF Shuppansha 1990/8 SET(CD+FD)
JAF Drive Guide - Best Ski 150 (Resort-hen) JAF Shuppansha 1990/12 SET(CD+FD)
JAF Drive Guide (Ver. 2) JAF Shuppansha 1992/2 SET(CD+FD)
Jealousy Interheart 1995/7 CD
Jinmon Yuugi Fairytale (Red Zone) 1995/8 SET(CD+FD)
Jintaizu System Skeleton Medical System 1995/8 CD
Joker Towns Birdy Soft 1992/7 CD
@ -496,7 +494,6 @@ NHK Eigo de Asobo 1 Fujitsu
NHK Eigo de Asobo 2 Fujitsu 1993/12 CD
NHK Eigo de Asobo 3 Fujitsu 1994/7 CD
NHK Hitori de Dekiru Mon! Ray 1995/3 CD
NHK Jissen Eikaiwa CRC Sougou Kenkyuusho 1991/8 CD
NHK Jissen Eikaiwa (Marty compatible) CRC Sougou Kenkyuusho 1993/3 CD
NHK Jissen Eikaiwa Part 2 CRC Sougou Kenkyuusho 1993/12 CD
Nihon Kiin no Jouseki Daijiten Misawa Home Sougou Kenkyuusho 1992/7 CD
@ -532,12 +529,10 @@ Noushuku Angel 120% Cocktail Soft
Noyama no Kensakuka Fujitsu Social Science Laboratory 1995/3 CD
O Hoshi Senjutsu Daireigen Victor Entertainment 1990/2 CD
Obaachan no Chiebukuro Gyousei 1991/11 CD
Okumanchouja 2 Cosmos Computer 1991/7 CD
Only You: Seikimatsu Juliet-tachi Alice Soft 1996/1 CD
Orient Express Gyousei 1994/12 CD
Oryx Blue Wave: Eikou e no Kiseki Data West 1995/10 SET(CD+FD)
Oshare Club Misawa Home Sougou Kenkyuusho 1991/3 CD
Oshare Cooking 2 Misawa Home Sougou Kenkyuusho 1990/9 CD
Oshiete, Nouveau TDK Core 1994/3 CD
Otto Anime-kun Nihon Micom Hanbai 1990/3 CD
Palamedes Ving 1991/10 CD
@ -593,7 +588,7 @@ Sakura no Mori Active
Sangokushi 2 Koei 1990/6 SET(CD+FD)
Sangokushi 4 Koei 1994/6 SET(CD+FD)
Sanseido Word Hunter Multi CD-ROM Jiten Fujitsu 1991/10 CD
Sargon 5 JAM 1992/11 CD
Sargon 5 GAM 1992/11 CD
Sayonara no Mukougawa Foster 1997/8 CD
School Accessory Illust-hen V1.0 Fujitsu 1993/2 CD
School Navi Nihon no Rekishi CD : Heian, Kamakura Unitybell 1995/8 CD
@ -661,7 +656,7 @@ Stingo Monogatari ST-3: Stingo Umi ni Iku Technos Yashima
Stingo Monogatari ST-4: Stingo Yuuenchi ni Iku Technos Yashima 1995/1 CD
Stingo Monogatari ST-5: Stingo no Christmas Technos Yashima 1995/1 CD
Stress Toshiba EMI 1989/11 CD
Suikoden: Tenmei no Sakai Koei 1990/2 SET(CD+FD)
* Suikoden: Tenmei no Chikai Koei 1990/2 SET(CD+FD)
Suisai Graphic Art Software NTT Data Tsuushin 1993/8 CD
Sunshine 1-nen Uchida Youkou 1993/7 CD
Sunshine 2-nen Uchida Youkou 1993/7 CD
@ -669,7 +664,7 @@ Super Kakitaoshi Nikkonren Kikaku
Super Real Mahjong PII & PIII + Ving 1993/3 CD
Super Zurukamashi Nikkonren Kikaku 1993/? SET(CD+FD)
Suzaku Wolf Team 1992/10 SET(CD+FD)
Tactical Tank Corps DX JAM 1995/2 SET(CD+FD)
Tactical Tank Corps DX GAM 1995/2 SET(CD+FD)
Taiken Shiyou! Marty Channel Fujitsu 1993/2 SET(CD+FD)
Taiken Shiyou! Marty Channel 2 Fujitsu 1993/6 CD×02
Takken Ou Techno Business 1994/10 CD
@ -706,13 +701,11 @@ Think Read: Chuugaku Series Catena
Think Read: Shougaku Series Catena ? SET(CD+FD)
Time Stripper Mako-chan Foster 1996/1 CD
Tom Snyder's Puppy Love Fujitsu 1989/7 CD
Tom Snyder's Puppy Love 2 Fujitsu 1993/3 CD
Total English 1-nen Uchida Youkou 1993/9 CD
Total English 2-nen Uchida Youkou 1993/9 CD
Touch the Music by Casiopea Fujitsu 1994/3 SET(CD+FD)
Tougenkyou (Shichuusuimeigaku Nyuumon) Nanken Koubou 1991/2 CD
Toukyou Genshikai - Tokyo Sexy Ave. HOP 1994/7 SET(CD+FD)
Toushin Toshi II Alice Soft 1995/4 CD
Towns Amone Kozu System 1990/4 SET(CD+FD)
Towns Chiri Jigsaw World Fujitsu Ooita Software Laboratory 1991/3 CD
Towns Chiri Shizen no Naritachi Fujitsu Ooita Software Laboratory 1991/9 CD
@ -751,7 +744,7 @@ Ujibushi no Chiiku Game Nihon Keisoku Souc
Unmei no Tobira Fujitsu 1992/9 CD
URM: 15 Wakusei ni Umarete Japan Home Video (JHV) 1994/12 CD
Ushiro no Shoumen Raison 1991/9 CD
Utaimasenka JAM 1995/11 SET(CD+FD)
Utaimasenka GAM 1995/11 SET(CD+FD)
Vampire High School Interheart 1993/6 CD
Vanishing Point: Tenshi no Kieta Machi Tiara 1995/10 CD
Vector Moji Pattern 2 Fujitsu 1992/12 IC
@ -765,8 +758,8 @@ VIPER V12 Sogna
VIPER V8 Turbo RS Sogna 1995/6 CD
Virtuacall 2 Fairytale 1995/12 SET(CD+FD)
Virtual Tours V1.0 Fujitsu 1995/1 SET(CD+FD)
Watashi no Tsukue JAM 1994/9 SET(CD+FD)
Watashi no Tsukue 2 JAM 1995/11 SET(CD+FD)
Watashi no Tsukue GAM 1994/9 SET(CD+FD)
Watashi no Tsukue 2 GAM 1995/11 SET(CD+FD)
Watashi-tachi no Iseikatsu Uchida Youkou 1994/3 CD
Watashi-tachi no Shokuji Shindan Uchida Youkou 1994/3 CD
Wedding Plan Computer System 1990/4 CD
@ -1863,6 +1856,22 @@ User/save disks that can be created from the game itself are not included.
</part>
</software>
<software name="anotowns">
<!--
Origin: P2P
<rom name="[FM-TOWNS] AnotherTOWNSあなたOne to Sevenフリーソフトウェアコレクション.iso" size="655826944" crc="28e553ac" sha1="4b5ca2bc9ae2b3b6fe9da0b2a9378123d99e5206"/>
-->
<description>AnotherTOWNS - Anata~ Free Software Collection</description>
<year>1999?</year>
<publisher>&lt;doujin&gt;</publisher>
<info name="usage" value="Requires 32 MB of RAM" />
<part name="cdrom" interface="fmt_cdrom">
<diskarea name="cdrom">
<disk name="anotowns" sha1="f6b1a56808d9abd79b50a830b409c1b87659ab01" />
</diskarea>
</part>
</software>
<software name="appare1">
<!--
Origin: P2P
@ -3318,6 +3327,23 @@ User/save disks that can be created from the game itself are not included.
</part>
</software>
<software name="drgshock">
<!--
Origin: P2P
<rom name="Image.cue" size="381" crc="5bf84c71" sha1="a16d98615fb735b3e2f54e78c98159c6d7a137cd"/>
<rom name="Image.img" size="235011840" crc="c0c9d26f" sha1="6acfa1aa858f9cbbd1afea603af8af9b03236cda"/>
-->
<description>Dragon Shock</description>
<year>1989</year>
<publisher>ログ (Log)</publisher>
<info name="release" value="198911xx" />
<part name="cdrom" interface="fmt_cdrom">
<diskarea name="cdrom">
<disk name="drgshock" sha1="3cce3b9b985d523593d26ac7cf3040160df57aec" />
</diskarea>
</part>
</software>
<software name="drakkhen">
<!--
Origin: Neo Kobe Collection
@ -6585,6 +6611,23 @@ User/save disks that can be created from the game itself are not included.
</part>
</software>
<software name="nhkeikai">
<!--
Origin: P2P
<rom name="Image.cue" size="135" crc="25b78af5" sha1="59f27e03d61c1a8bc9b9b268a5ec903353df4abd"/>
<rom name="Image.img" size="487040400" crc="0afe5df8" sha1="bae8c46b1c27b75e5afe2ebe7c94d987725baaaa"/>
-->
<description>NHK Jissen Eikaiwa</description>
<year>1991</year>
<publisher>CRC総合研究所 (CRC Sougou Kenkyuusho)</publisher>
<info name="release" value="199108xx" />
<part name="cdrom" interface="fmt_cdrom">
<diskarea name="cdrom">
<disk name="nhkeikai" sha1="aa3f3c0a48bde7032fb8357f446ce4f2736dee53" />
</diskarea>
</part>
</software>
<software name="nihonmb">
<!--
Origin: Tokugawa Corporate Forums (yukin)
@ -6801,6 +6844,23 @@ User/save disks that can be created from the game itself are not included.
</part>
</software>
<software name="okuman2">
<!--
Origin: P2P
<rom name="image.cue" size="2800" crc="602de601"/>
<rom name="image.img" size="544546800" crc="b7cb448c"/>
-->
<description>Okumanchouja II</description>
<year>1991</year>
<publisher>コスモス・コンピュータ (Cosmos Computer)</publisher>
<info name="release" value="199107xx" />
<part name="cdrom" interface="fmt_cdrom">
<diskarea name="cdrom">
<disk name="okuman2" sha1="0b646c69dc9a4e8c0e9343885c188d6b9456f513" />
</diskarea>
</part>
</software>
<software name="opwolf">
<!--
Origin: Neo Kobe Collection
@ -6830,7 +6890,7 @@ User/save disks that can be created from the game itself are not included.
-->
<description>Oshare Cooking</description>
<year>1989</year>
<publisher>Misawa Home</publisher>
<publisher>ミサワホーム総合研究所 (Misawa Home Sougou Kenkyuusho)</publisher>
<part name="cdrom" interface="fmt_cdrom">
<diskarea name="cdrom">
<disk name="oshare cooking" sha1="d6175d9a81760fbd9e497e6a396dbaf2aad6d57c" />
@ -6838,6 +6898,23 @@ User/save disks that can be created from the game itself are not included.
</part>
</software>
<software name="oshacoo2">
<!--
Origin: P2P
<rom name="Image.cue" size="1160" crc="885a0d6d" sha1="77a34d0a15c9361a934ace3dec67f651777d6a2c"/>
<rom name="Image.img" size="361137840" crc="1bef4781" sha1="3de4e86c6f63e3c7c2bacda7982277059def3536"/>
-->
<description>Oshare Cooking II</description>
<year>1990</year>
<publisher>ミサワホーム総合研究所 (Misawa Home Sougou Kenkyuusho)</publisher>
<info name="release" value="199011xx" />
<part name="cdrom" interface="fmt_cdrom">
<diskarea name="cdrom">
<disk name="oshacoo2" sha1="dfcd058c69ec2a8cd1a29978b0f1cc772a1fe51c" />
</diskarea>
</part>
</software>
<software name="ougonras">
<!--
Origin: Neo Kobe Collection
@ -7393,6 +7470,23 @@ User/save disks that can be created from the game itself are not included.
</part>
</software>
<software name="puplove2">
<!--
Origin: P2P
<rom name="image.cue" size="1611" crc="e66faddb"/>
<rom name="image.img" size="513676800" crc="ba0073f5"/>
-->
<description>Tom Snyder's Puppy Love 2</description>
<year>1993</year>
<publisher>富士通 (Fujitsu)</publisher>
<info name="release" value="199303xx" />
<part name="cdrom" interface="fmt_cdrom">
<diskarea name="cdrom">
<disk name="puplove2" sha1="35c86cc71dfbdc0d4351892f1270b6b8772e1b67" />
</diskarea>
</part>
</software>
<software name="puyopuyo">
<!--
Origin: Neo Kobe Collection
@ -8586,6 +8680,24 @@ User/save disks that can be created from the game itself are not included.
</part>
</software>
<!-- Missing a floppy disk, the game doesn't work without it -->
<software name="suikoden" supported="no">
<!--
Origin: P2P
<rom name="SUIKODEN.BIN" size="451226496" crc="ea330a93" sha1="8c56e2b77b58ac136f80cb19e6dffdef4adb0d2c"/>
<rom name="SUIKODEN.CUE" size="584" crc="46e415ae" sha1="e1169e4b277d495c1b90cf20b97ba6071186e1d3"/>
-->
<description>Suikoden - Tenmei no Chikai</description>
<year>1990</year>
<publisher>光栄 (Koei)</publisher>
<info name="release" value="199002xx" />
<part name="cdrom" interface="fmt_cdrom">
<diskarea name="cdrom">
<disk name="suikoden" sha1="e0276dafedb588a7d2b455f72d94a0c9039fe990" />
</diskarea>
</part>
</software>
<software name="syndicat">
<!--
Origin: Neo Kobe Collection
@ -8861,7 +8973,27 @@ User/save disks that can be created from the game itself are not included.
</part>
</software>
<software name="toshint2">
<software name="toshin2">
<!--
Origin: P2P
<rom name="Image.cdm" size="7055" crc="878fdc3f" sha1="d0a1af456f758de8a3aae8ca5aae4407a29a21ee"/>
<rom name="Image.cue" size="1406" crc="ab5112e6" sha1="caddbfdaa9002bd2cbd9d44a0320de0ba83188e4"/>
<rom name="Image.img" size="604240560" crc="3a4479b0" sha1="59fa6c2e95b8e2a79d25ec3b70b9c7902642faf5"/>
<rom name="Image.sub" size="24662880" crc="20f890dc" sha1="4fe043a928835600b7cdddc517aac410323384bd"/>
-->
<description>Toushin Toshi II</description>
<year>1995</year>
<publisher>アリスソフト (AliceSoft)</publisher>
<info name="release" value="199504xx" />
<info name="usage" value="Requires HDD installation"/>
<part name="cdrom" interface="fmt_cdrom">
<diskarea name="cdrom">
<disk name="toshin2" sha1="4316f227a3809c089f086cf216d76d7c09466407" />
</diskarea>
</part>
</software>
<software name="toshin2s">
<!--
Origin: Neo Kobe Collection
<rom name="Toushin Toshi II - Soshite Sorekara....ccd" size="3809" crc="9c8e2336" sha1="02d5cc4f6c53bf8119209973cc8997e0419baa2c"/>

View File

@ -5306,6 +5306,17 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="qnxdemo">
<description>QNX Demonstration (Apr 17th, 1989)</description>
<year>1989</year>
<publisher>Quantum Software Systems</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="qnx1989.img" size="368640" crc="1f63eb66" sha1="746d459686e4b8f9ca6e22c20138557e2bff363d" offset="0"/>
</dataarea>
</part>
</software>
<!-- "Thoroughbred Passport" copy-protection dongle not emulated -->
<software name="tbos" supported="no">
<description>Thoroughbred/OS 6.6.2-6</description>
@ -5586,6 +5597,123 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="azurebnd">
<description>Advanced Dungeons &amp; Dragons - Curse of the Azure Bonds (V1.2)</description>
<year>1989</year>
<publisher>SSI</publisher>
<info name="version" value="1.2" />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="azurebnd_1.img" size="368640" crc="9fa8ca28" sha1="236ca717a0eede9a8f90cb9e4fe3250ffaa46595" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="azurebnd_2.img" size="368640" crc="44f4999f" sha1="cb4b65d94c96caaeeaf3a4bd84fdf23185b14cbf" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="azurebnd_3.img" size="368640" crc="17b7d451" sha1="c574643cb1808037a250ba5da624ab89b5feab4f" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="azurebnd_4.img" size="368640" crc="ecea8cc9" sha1="33f8fcac0f0c8d6fb0e8d45d98afb5754fc22380" offset="0"/>
</dataarea>
</part>
</software>
<software name="azurebnda" cloneof="azurebnd">
<description>Advanced Dungeons &amp; Dragons - Curse of the Azure Bonds (V1.1)</description>
<year>1989</year>
<publisher>SSI</publisher>
<info name="version" value="1.1" />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Curse of the Azure Bonds (USA) (5.25'') (Disk 1).img" size="368640" crc="8edb2f3c" sha1="d43ee33399e3594b4cd1afd35a1a062089e40c5c" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Curse of the Azure Bonds (USA) (5.25'') (Disk 2).img" size="368640" crc="7cec17f4" sha1="a8cad973fa508e88f16b681d230857249b30f02d" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Curse of the Azure Bonds (USA) (5.25'') (Disk 3).img" size="368640" crc="5c55a8ca" sha1="23165433804e07706b450e3aa51cde23f39bb992" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_5_25">
<dataarea name="flop" size = "368640">
<rom name="Curse of the Azure Bonds (USA) (5.25'') (Disk 4).img" size="368640" crc="08644e84" sha1="4f2443861e454e716470c9d3128c4c76a6ea4b5f" offset="0"/>
</dataarea>
</part>
</software>
<software name="poolrad">
<description>Advanced Dungeons &amp; Dragons - Pool of Radiance</description>
<year>1988</year>
<publisher>SSI</publisher>
<info name="version" value="1.2" />
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Pool of Radiance (USA) (Disk 1).img" size="737280" crc="7fceae07" sha1="a081a9f811ba0cf8d6fedb0aca4771bbe8e787de" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Pool of Radiance (USA) (Disk 2).img" size="737280" crc="360019c5" sha1="9b2b08d5bd64c635032fa0582362f218cf4a1b94" offset="0"/>
</dataarea>
</part>
</software>
<software name="pooldark">
<description>Advanced Dungeons &amp; Dragons - Pools of Darkness</description>
<year>1991</year>
<publisher>SSI</publisher>
<info name="version" value="1.00" />
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Pools of Darkness (USA) (Disk 1).img" size="737280" crc="732e3424" sha1="5345521c5e6083641fc3cf4a7c37bfc63c7b079c" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Pools of Darkness (USA) (Disk 2).img" size="737280" crc="18e5a10d" sha1="1602709a31850016a608d7298b81afd0b2bbb23d" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Pools of Darkness (USA) (Disk 3).img" size="737280" crc="576daf15" sha1="0fd8ecf7a44be7b1f1e6dfb24e9016e77039ab73" offset="0"/>
</dataarea>
</part>
</software>
<software name="silvblad">
<description>Advanced Dungeons &amp; Dragons - Secret of the Silver Blades (1.20)</description>
<year>1990</year>
<publisher>SSI</publisher>
<info name="version" value="1.20" />
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Secret of the Silver Blades (1990)(SSI).dsk" size="737280" crc="fac4327b" sha1="05c4a640183fb83d7c539eefb4f82cb213ebaa9f" offset="0"/>
</dataarea>
</part>
</software>
<software name="silvblada" cloneof="silvblad">
<description>Advanced Dungeons &amp; Dragons - Secret of the Silver Blades (1.10)</description>
<year>1990</year>
<publisher>SSI</publisher>
<info name="version" value="1.10" />
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Secret of the Silver Blades (USA).img" size="737280" crc="64b5ce63" sha1="66f92af0f871081d3c1ff7554ab8b6b1c3402344" offset="0"/>
</dataarea>
</part>
</software>
<software name="captcom">
<description>The Adventures of Captain Comic</description>
<year>1988</year>
@ -5598,6 +5726,20 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="alpntram">
<!-- Dumped via Kryoflux, four tracks show as modified -->
<description>Alpine Tram Ride</description>
<year>1987</year>
<publisher>Learning Technologies</publisher>
<info name="version" value="1.1" />
<info name="user_notes" value="Must be run from drive A" />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "1167427">
<rom name="Alpine Tram Ride 1.1 for IBM PC (1987) (Kryoflux).mfm" size="1167427" crc="65210439" sha1="f47d610d0c539f2e8d41ee9ea95f7246255e3f44" offset="0" status="baddump"/>
</dataarea>
</part>
</software>
<software name="aaow">
<description>The Ancient Art of War</description>
<year>1984</year>
@ -7990,17 +8132,6 @@ has been replaced with an all-zero block. -->
</part>
</software>
<software name="silvblad">
<description>Secret of the Silver Blades</description>
<year>1990</year>
<publisher>SSI</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size = "737280">
<rom name="Secret of the Silver Blades (1990)(SSI).dsk" size="737280" crc="fac4327b" sha1="05c4a640183fb83d7c539eefb4f82cb213ebaa9f" offset="0"/>
</dataarea>
</part>
</software>
<software name="agidemos">
<description>Sierra Demo</description>
<year>1987</year>

View File

@ -2409,6 +2409,192 @@
</part>
</software>
<software name="pcmos1">
<description>PC-MOS/386 Version 1.02</description>
<year>1987</year>
<publisher>The Software Link</publisher>
<info name="version" value="1.02" />
<info name="serial" value="05-04648" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="Disk1.img" size="1474560" crc="615acf20" sha1="6e5b14f2c457f653cf09c8b4c0cb7ef7b2d56573" offset="0"/>
</dataarea>
</part>
</software>
<software name="pcmos3">
<description>PC-MOS/386 Version 3.00</description>
<year>1988</year>
<publisher>The Software Link</publisher>
<info name="version" value="3.00" />
<info name="serial" value="05-018868" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="Disk1.img" size="1474560" crc="06981cb6" sha1="23ee2c0646cae310f8c8db5fd74200d641dfa9b0" offset="0"/>
</dataarea>
</part>
</software>
<software name="pcmos5">
<description>PC-MOS Version 5.01</description>
<year>1994</year>
<publisher>The Software Link</publisher>
<info name="version" value="5.01" />
<info name="serial" value="09-50003953" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="PCMOS386-9-user.img" size="1474560" crc="936c016a" sha1="d31ef3d07b11b12085546e1b5a45f8ecfa4163d3" offset="0"/>
</dataarea>
</part>
</software>
<software name="qnx4demo">
<description>QNX Internet Appliance Toolkit Demo (v1.0a)</description>
<year>1997</year>
<publisher>QNX Software Systems</publisher>
<info name="version" value="1.0a" />
<info name="user_notes" value="8MB RAM required" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<!-- source image is only 1469440 bytes, added 0xF6 padding -->
<rom name="qnxdemo v10a.dat" size="1474560" crc="909bb0ae" sha1="a234d02397d4af648a77d46ab277c5e674b4f1cb" offset="0"/>
</dataarea>
</part>
</software>
<software name="qnx4demoa" cloneof="qnx4demo">
<description>QNX Internet Appliance Toolkit Demo (v1.0a Beta)</description>
<year>1997</year>
<publisher>QNX Software Systems</publisher>
<info name="version" value="1.0a" />
<info name="user_notes" value="8MB RAM required" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<!-- source image is only 1469440 bytes, added 0xF6 padding -->
<rom name="qnxdemo v10a beta.dat" size="1474560" crc="e5df63c4" sha1="0c9423ede835c7f867baf945bab52ebdae40183a" offset="0"/>
</dataarea>
</part>
</software>
<software name="qnx4demob" cloneof="qnx4demo">
<description>QNX Internet Appliance Toolkit Demo (v1.0)</description>
<year>1997</year>
<publisher>QNX Software Systems</publisher>
<info name="version" value="1.0" />
<info name="user_notes" value="8MB RAM required" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<!-- source image is only 1469440 bytes, added 0xF6 padding -->
<rom name="qnxdemo v10.dat" size="1474560" crc="c0a120e4" sha1="bf8fbf753e978e00bb95f1da4a6d2e37a91092e7" offset="0"/>
</dataarea>
</part>
</software>
<software name="qnx4demoru" cloneof="qnx4demo">
<description>QNX Internet Appliance Toolkit Demo (v1.1 - Russian)</description>
<year>1998</year>
<publisher>QNX Software Systems</publisher>
<info name="version" value="1.1" />
<info name="user_notes" value="8MB RAM required" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<!-- source image is only 1469440 bytes, added 0xF6 padding -->
<rom name="qnxdemo v11 russian.dat" size="1474560" crc="3e50f719" sha1="9336ff81e57169baa363108cde8a9b2babe77765" offset="0"/>
</dataarea>
</part>
</software>
<software name="qnx4modd">
<description>QNX Demo (Modem v405)</description>
<year>1999</year>
<publisher>QNX Software Systems</publisher>
<info name="version" value="4.05" />
<info name="user_notes" value="8MB RAM required" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="qnxdemo modem v405.dat" size="1474560" crc="1449909a" sha1="e35b2822eb2391ebcac04cb5f3ec8a284f601bb8" offset="0"/>
</dataarea>
</part>
</software>
<software name="qnx4modda" cloneof="qnx4modd">
<description>QNX Demo (Modem v4.00)</description>
<year>1999</year>
<publisher>QNX Software Systems</publisher>
<info name="version" value="4.00" />
<info name="user_notes" value="8MB RAM required" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="qnxdemo modem v400.dat" size="1474560" crc="7cc3be15" sha1="3ded9ef17784b18f1c356e2bfeacfd9ecef4f716" offset="0"/>
</dataarea>
</part>
</software>
<software name="qnx4moddb" cloneof="qnx4modd">
<description>QNX Internet Appliance Toolkit Demo (Modem v3.03)</description>
<year>1998</year>
<publisher>QNX Software Systems</publisher>
<info name="version" value="3.03" />
<info name="user_notes" value="8MB RAM required" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="qnxdemo modem v303.dat" size="1474560" crc="de42476d" sha1="b330dc04a920886f2243377c9edd80c23bc3e90a" offset="0"/>
</dataarea>
</part>
</software>
<software name="qnx4netd">
<description>QNX Demo (Network v405)</description>
<year>1999</year>
<publisher>QNX Software Systems</publisher>
<info name="version" value="4.05" />
<info name="user_notes" value="8MB RAM required" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="qnxdemo network v405.dat" size="1474560" crc="315a822c" sha1="c8baa52161c069dae25410ce09a3b1c095961323" offset="0"/>
</dataarea>
</part>
</software>
<software name="qnx4netda" cloneof="qnx4netd">
<description>QNX Demo (Network v4.00)</description>
<year>1999</year>
<publisher>QNX Software Systems</publisher>
<info name="version" value="4.00" />
<info name="user_notes" value="8MB RAM required" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="qnxdemo network v400.dat" size="1474560" crc="72d7de91" sha1="bcc589a419500376cf5101ddf80d416ee43c0c1d" offset="0"/>
</dataarea>
</part>
</software>
<software name="qnx4netdb" cloneof="qnx4netd">
<description>QNX Internet Appliance Toolkit Demo (Network v3.03)</description>
<year>1998</year>
<publisher>QNX Software Systems</publisher>
<info name="version" value="3.03" />
<info name="user_notes" value="8MB RAM required" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="qnxdemo network v303.dat" size="1474560" crc="694a0448" sha1="d1bb83273ae2da9fb1fe93ae08c951ec91d6ea3f" offset="0"/>
</dataarea>
</part>
</software>
<software name="qnx4netdc" cloneof="qnx4netd">
<description>QNX Internet Appliance Toolkit Demo (Network v2.0)</description>
<year>1998</year>
<publisher>QNX Software Systems</publisher>
<info name="version" value="2.0" />
<info name="user_notes" value="8MB RAM required" />
<part name="disk1" interface="floppy_3_5">
<dataarea name="flop" size = "1474560">
<rom name="qnxdemo network v20.dat" size="1474560" crc="2026021a" sha1="a8a49d60accc19f67b09e8fe5b84ae6c3c18806e" offset="0"/>
</dataarea>
</part>
</software>
<software name="win95b">
<description>Microsoft Windows 95 (Bootdisk)</description>
<year>1995</year>
@ -2900,37 +3086,37 @@
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size="737280">
<rom name="disk1.img" size="737280" crc="f7ae33c3" sha1="b19fcad2e0c77fb7b3f574b7feb499ee9bcc42f0" offset="0" />
<rom name="disk1dd.img" size="737280" crc="f7ae33c3" sha1="b19fcad2e0c77fb7b3f574b7feb499ee9bcc42f0" offset="0" />
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size="737280">
<rom name="disk2.img" size="737280" crc="8d3b4522" sha1="3099e82c7974ea33e6498dbb5f308a1ef38ade4b" offset="0" />
<rom name="disk2dd.img" size="737280" crc="8d3b4522" sha1="3099e82c7974ea33e6498dbb5f308a1ef38ade4b" offset="0" />
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<dataarea name="flop" size="737280">
<rom name="disk3.img" size="737280" crc="75ed39ee" sha1="fe87c98f020541a0f44aeabd612cf3ac746285f4" offset="0" />
<rom name="disk3dd.img" size="737280" crc="75ed39ee" sha1="fe87c98f020541a0f44aeabd612cf3ac746285f4" offset="0" />
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
<dataarea name="flop" size="737280">
<rom name="disk4.img" size="737280" crc="0bbb5163" sha1="afd7e856c7ffa6ba1518a4443e63d4e85af90eee" offset="0" />
<rom name="disk4dd.img" size="737280" crc="0bbb5163" sha1="afd7e856c7ffa6ba1518a4443e63d4e85af90eee" offset="0" />
</dataarea>
</part>
<part name="flop5" interface="floppy_3_5">
<dataarea name="flop" size="737280">
<rom name="disk5.img" size="737280" crc="9bad78fc" sha1="717e55075c33d04f73b728fb00455175e01f6207" offset="0" />
<rom name="disk5dd.img" size="737280" crc="9bad78fc" sha1="717e55075c33d04f73b728fb00455175e01f6207" offset="0" />
</dataarea>
</part>
<part name="flop6" interface="floppy_3_5">
<dataarea name="flop" size="737280">
<rom name="disk6.img" size="737280" crc="aece5056" sha1="7e8786d56a13dcc6dbe604e773cfef3dcb81526f" offset="0" />
<rom name="disk6dd.img" size="737280" crc="aece5056" sha1="7e8786d56a13dcc6dbe604e773cfef3dcb81526f" offset="0" />
</dataarea>
</part>
<part name="flop7" interface="floppy_3_5">
<dataarea name="flop" size="737280">
<rom name="disk7.img" size="737280" crc="53978e51" sha1="8aca13779c8d142a8989d854482d019c2d7252de" offset="0" />
<rom name="disk7dd.img" size="737280" crc="53978e51" sha1="8aca13779c8d142a8989d854482d019c2d7252de" offset="0" />
</dataarea>
</part>
</software>
@ -2942,27 +3128,27 @@
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size="1228800">
<rom name="disk1.img" size="1228800" crc="062ea5a7" sha1="4c1a2a22c68bb82e90db7c454f71f4fef3d5e1b9" offset="0" />
<rom name="disk1mf.img" size="1228800" crc="062ea5a7" sha1="4c1a2a22c68bb82e90db7c454f71f4fef3d5e1b9" offset="0" />
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size="1228800">
<rom name="disk2.img" size="1228800" crc="1946eee6" sha1="adaf696fd6f1458ee5a73dea8b0a5fb5e306be90" offset="0" />
<rom name="disk2mf.img" size="1228800" crc="1946eee6" sha1="adaf696fd6f1458ee5a73dea8b0a5fb5e306be90" offset="0" />
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<dataarea name="flop" size="1228800">
<rom name="disk3.img" size="1228800" crc="93fbd992" sha1="271a52a62a83ce7bdcf6514f779b46c534cdf2a6" offset="0" />
<rom name="disk3mf.img" size="1228800" crc="93fbd992" sha1="271a52a62a83ce7bdcf6514f779b46c534cdf2a6" offset="0" />
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
<dataarea name="flop" size="1228800">
<rom name="disk4.img" size="1228800" crc="a6b5cba5" sha1="10dfb52912edbb02e6ffc48a7d46038dba9d499c" offset="0" />
<rom name="disk4mf.img" size="1228800" crc="a6b5cba5" sha1="10dfb52912edbb02e6ffc48a7d46038dba9d499c" offset="0" />
</dataarea>
</part>
<part name="flop5" interface="floppy_3_5">
<dataarea name="flop" size="1228800">
<rom name="disk5.img" size="1228800" crc="54cc9762" sha1="b07c0c8f56bf005a3d526fb3ea9fe29e6204add2" offset="0" />
<rom name="disk5mf.img" size="1228800" crc="54cc9762" sha1="b07c0c8f56bf005a3d526fb3ea9fe29e6204add2" offset="0" />
</dataarea>
</part>
</software>
@ -3464,47 +3650,47 @@
<publisher>Microsoft</publisher>
<part name="flop1" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="disk01.img" size="1474560" crc="a456c5c1" sha1="845136f162498e0a53444f269abf4f49986e19bd" offset="0" />
<rom name="disk01u.img" size="1474560" crc="a456c5c1" sha1="845136f162498e0a53444f269abf4f49986e19bd" offset="0" />
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="disk02.img" size="1474560" crc="60a61b4e" sha1="f2c1bd78ec784b2a4544901f38b6343875a9a1ed" offset="0" />
<rom name="disk02u.img" size="1474560" crc="60a61b4e" sha1="f2c1bd78ec784b2a4544901f38b6343875a9a1ed" offset="0" />
</dataarea>
</part>
<part name="flop3" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="disk03.img" size="1474560" crc="f7b18361" sha1="7d9e8bc8ce54ee6ce6d0c6198b8c5a62c9c0f25e" offset="0" />
<rom name="disk03u.img" size="1474560" crc="f7b18361" sha1="7d9e8bc8ce54ee6ce6d0c6198b8c5a62c9c0f25e" offset="0" />
</dataarea>
</part>
<part name="flop4" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="disk04.img" size="1474560" crc="e2946dbd" sha1="130eda5a79750a1b08a897c0c235235d0aba3f66" offset="0" />
<rom name="disk04u.img" size="1474560" crc="e2946dbd" sha1="130eda5a79750a1b08a897c0c235235d0aba3f66" offset="0" />
</dataarea>
</part>
<part name="flop5" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="disk05.img" size="1474560" crc="a94d27b4" sha1="3d453878879922594d05f6451d6e5636c215c219" offset="0" />
<rom name="disk05u.img" size="1474560" crc="a94d27b4" sha1="3d453878879922594d05f6451d6e5636c215c219" offset="0" />
</dataarea>
</part>
<part name="flop6" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="disk06.img" size="1474560" crc="f46858ea" sha1="f7243506ec484095fece35acacc54189ea9eb65c" offset="0" />
<rom name="disk06u.img" size="1474560" crc="f46858ea" sha1="f7243506ec484095fece35acacc54189ea9eb65c" offset="0" />
</dataarea>
</part>
<part name="flop7" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="disk07.img" size="1474560" crc="21f25ba7" sha1="adcb00920e352cc28ec5bf3ffb7893eb1938dac2" offset="0" />
<rom name="disk07u.img" size="1474560" crc="21f25ba7" sha1="adcb00920e352cc28ec5bf3ffb7893eb1938dac2" offset="0" />
</dataarea>
</part>
<part name="flop8" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="disk08.img" size="1474560" crc="46802720" sha1="f5ef16231c078c8f818a8edac77074b0edeb34fb" offset="0" />
<rom name="disk08u.img" size="1474560" crc="46802720" sha1="f5ef16231c078c8f818a8edac77074b0edeb34fb" offset="0" />
</dataarea>
</part>
<part name="flop9" interface="floppy_3_5">
<dataarea name="flop" size="1474560">
<rom name="disk09.img" size="1474560" crc="44177162" sha1="f7b6b911c9efff0e6ba1c3dbc43c7cf1709fc52b" offset="0" />
<rom name="disk09u.img" size="1474560" crc="44177162" sha1="f7b6b911c9efff0e6ba1c3dbc43c7cf1709fc52b" offset="0" />
</dataarea>
</part>
</software>
@ -4607,6 +4793,45 @@
</part>
</software>
<software name="pct71_525" cloneof="pct71">
<!-- Dumped via Kryoflux, shows as good and unmodified -->
<description>PC Tools 7.1 (5.25" HD)</description>
<year>1991</year>
<publisher>Central Point Software, Inc.</publisher>
<info name="version" value="7.1" />
<info name="developer" value="Central Point Software, Inc." />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="pct71_525_1.img" size="1228800" crc="062b12dd" sha1="b7cca618cc0d80b77438700372e42d624bae8e5d" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="pct71_525_2.img" size="1228800" crc="cce86276" sha1="da795768cda4625720faccb30c6b20377b5fc3dc" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="pct71_525_3.img" size="1228800" crc="b5a89a5a" sha1="c7e70749fb9a1850eb26d9c455217da7314df1d8" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="pct71_525_4.img" size="1228800" crc="e505d407" sha1="82426b2d00fbc41c095c3dc6b47045619adb09e8" offset="0"/>
</dataarea>
</part>
<part name="flop5" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="pct71_525_5.img" size="1228800" crc="4dd1e757" sha1="6906b8b1af5aa8ebeebdec4643e4528b69b68973" offset="0"/>
</dataarea>
</part>
<part name="flop6" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="pct71_525_6.img" size="1228800" crc="a85217c9" sha1="5a12930041ae333d56aff308078eb16e4ff98030" offset="0"/>
</dataarea>
</part>
</software>
<software name="pct8">
<description>PC Tools 8 (5.25" HD)</description>
<year>1992</year>
@ -4615,32 +4840,32 @@
<info name="developer" value="Central Point Software, Inc." />
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="PC Tools 8 [Central Point Software] [1992] [3.5DD] [Disk 1 of 6].img" size="1228800" crc="9e32b700" sha1="e3448a677db9da18f3933dcad536b712883276a5" offset="0"/>
<rom name="PC Tools 8 [Central Point Software] [1992] [5.25HD] [Disk 1 of 6].img" size="1228800" crc="9e32b700" sha1="e3448a677db9da18f3933dcad536b712883276a5" offset="0"/>
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="PC Tools 8 [Central Point Software] [1992] [3.5DD] [Disk 2 of 6].img" size="1228800" crc="58e67911" sha1="bb2b9b4447fbc3e469caa0d2ea651162e15a62da" offset="0"/>
<rom name="PC Tools 8 [Central Point Software] [1992] [5.25HD] [Disk 2 of 6].img" size="1228800" crc="58e67911" sha1="bb2b9b4447fbc3e469caa0d2ea651162e15a62da" offset="0"/>
</dataarea>
</part>
<part name="flop3" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="PC Tools 8 [Central Point Software] [1992] [3.5DD] [Disk 3 of 6].img" size="1228800" crc="8950b0bb" sha1="ab3c91b07df198168d259643d05df123a67cebb9" offset="0"/>
<rom name="PC Tools 8 [Central Point Software] [1992] [5.25HD] [Disk 3 of 6].img" size="1228800" crc="8950b0bb" sha1="ab3c91b07df198168d259643d05df123a67cebb9" offset="0"/>
</dataarea>
</part>
<part name="flop4" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="PC Tools 8 [Central Point Software] [1992] [3.5DD] [Disk 4 of 6].img" size="1228800" crc="0fb54af3" sha1="909de4592581fcc56a47452a13f32c7f3455fdc7" offset="0"/>
<rom name="PC Tools 8 [Central Point Software] [1992] [5.25HD] [Disk 4 of 6].img" size="1228800" crc="0fb54af3" sha1="909de4592581fcc56a47452a13f32c7f3455fdc7" offset="0"/>
</dataarea>
</part>
<part name="flop5" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="PC Tools 8 [Central Point Software] [1992] [3.5DD] [Disk 5 of 6].img" size="1228800" crc="be00b76b" sha1="012617155cbcbb2ee1fbd3227ddfc585197f751d" offset="0"/>
<rom name="PC Tools 8 [Central Point Software] [1992] [5.25HD] [Disk 5 of 6].img" size="1228800" crc="be00b76b" sha1="012617155cbcbb2ee1fbd3227ddfc585197f751d" offset="0"/>
</dataarea>
</part>
<part name="flop6" interface="floppy_5_25">
<dataarea name="flop" size = "1228800">
<rom name="PC Tools 8 [Central Point Software] [1992] [3.5DD] [Disk 6 of 6].img" size="1228800" crc="25def657" sha1="ef253ae828ddd915c4e67a121b257368a21f7d2e" offset="0"/>
<rom name="PC Tools 8 [Central Point Software] [1992] [5.25HD] [Disk 6 of 6].img" size="1228800" crc="25def657" sha1="ef253ae828ddd915c4e67a121b257368a21f7d2e" offset="0"/>
</dataarea>
</part>
</software>

View File

@ -181,18 +181,6 @@ KinderComp (Spinnaker)
</part>
</software>
<!-- This rom acts as a bios replacement, this is not yet supported by the driver -->
<software name="quiksilv" supported="no">
<description>QuickSilver</description>
<year>19??</year>
<publisher>Synectics</publisher>
<part name="cart" interface="ibmpcjr_cart">
<dataarea name="rom" size="65536">
<rom name="quiksilv.bin" size="65536" crc="86aaa1c4" sha1="b3d7e8ce5de17441891e0b71e5261ed01a169dc1" offset="0" />
</dataarea>
</part>
</software>
<software name="riveraid">
<description>River Raid</description>
<year>1984</year>

View File

@ -5,7 +5,6 @@ Undumped games:
* Hyperdrome (Telegames 1999)
Undumped Self-Published Titles:
* Alpine Games (R. & J. Graf)
* CGE 5th (Songbird Productions, CF30B2)
* Championship Rally (Songbird Productions, CF2006)
* Cyber Virus (Songbird Productions, CF2007)
@ -1062,6 +1061,18 @@ Known undumped prototypes:
</part>
</software>
<software name="alpineg" supported="no"> <!-- Needs granularity set as 0x400 instead as 0x800 like the driver expects for 512k cartridges. Also will need eeprom support -->
<description>Alpine Games</description>
<year>2004</year>
<publisher>&lt;homebrew&gt;</publisher>
<info name="developer" value="R. &amp; J. Graf" />
<part name="cart" interface="lynx_cart">
<dataarea name="rom" size="524288">
<rom name="AlpineGames.bin" size="524288" crc="95a1ea09" sha1="fb71ad96f0730f88acd7d51eaa761e475a015d6c" offset="000000" />
</dataarea>
</part>
</software>
<software name="dragnet">
<description>Dragnet Sound Demo</description>
<year>1995</year>

View File

@ -25,4 +25,37 @@
</part>
</software>
<software name="rsz">
<description>PX-4 Rom Writer</description>
<year>198?</year>
<publisher>EPSON</publisher>
<part name="cart" interface="px4_cart">
<dataarea name="rom" size="32768">
<rom name="px4rsz.bin" size="32768" crc="12aa3f9c" sha1="c51af300c3d5bc7e8fa45ca9193f093e769cc611" offset="0" />
</dataarea>
</part>
</software>
<software name="rmwr">
<description>PX-4 Prom Writer Cartridge V2.0</description>
<year>198?</year>
<publisher>EPSON</publisher>
<part name="cart" interface="px4_cart">
<dataarea name="rom" size="32768">
<rom name="px4rmwr.bin" size="32768" crc="9a91bde0" sha1="aa650613672e702572b98eebf048555c988c7f5b" offset="0" />
</dataarea>
</part>
</software>
<software name="pw2">
<description>PX-4 Rom Write</description>
<year>198?</year>
<publisher>EPSON</publisher>
<part name="cart" interface="px4_cart">
<dataarea name="rom" size="32768">
<rom name="px4promwriter2.bin" size="32768" crc="5c54faf3" sha1="4879a126b1975f09fadba8831e14c7e8f41c40f3" offset="0" />
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: MAME\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-10-03 10:32+1100\n"
"PO-Revision-Date: 2016-02-20 18:03+0100\n"
"PO-Revision-Date: 2017-10-26 22:51+0100\n"
"Last-Translator: pmos69\n"
"Language-Team: MAME Language Team\n"
"Language: pt\n"
@ -501,7 +501,7 @@ msgstr "Cor de fundo do rato-premido"
#: src/frontend/mame/ui/custui.cpp:469
msgid "Restore originals colors"
msgstr "restaurar cores originais"
msgstr "Restaurar cores originais"
#: src/frontend/mame/ui/custui.cpp:481
msgid "UI Colors Settings"
@ -677,7 +677,7 @@ msgstr "Não Mecânico"
#: src/frontend/mame/ui/utils.cpp:64
msgid "Category"
msgstr "categoria"
msgstr "Categoria"
#: src/frontend/mame/ui/utils.cpp:65
msgid "Favorites"
@ -1272,11 +1272,11 @@ msgstr "Requer Artwork\tNão\n"
#: src/frontend/mame/ui/selgame.cpp:947
msgid "Requires Clickable Artwork\tYes\n"
msgid "Requer Artwork Clicável\tSim\n"
msgstr "Requer Artwork Clicável\tSim\n"
#: src/frontend/mame/ui/selgame.cpp:947
msgid "Requires Clickable Artwork\tNo\n"
msgid "Requer Artwork Clicável\tNão\n"
msgstr "Requer Artwork Clicável\tNão\n"
#: src/frontend/mame/ui/selgame.cpp:948
msgid "Support Cocktail\tYes\n"
@ -1312,31 +1312,31 @@ msgstr "Orientação de Ecrã\tHorizontal\n"
#: src/frontend/mame/ui/selgame.cpp:961
msgid "Requires CHD\tYes\n"
msgid "Requer CHD\tSim\n"
msgstr "Requer CHD\tSim\n"
#: src/frontend/mame/ui/selgame.cpp:961
msgid "Requires CHD\tNo\n"
msgid "Requer CHD\tNão\n"
msgstr "Requer CHD\tNão\n"
#: src/frontend/mame/ui/selgame.cpp:974
msgid "ROM Audit Result\tOK\n"
msgid "Resultado da Audit à ROM\tOK\n"
msgstr "Resultado da Audit à ROM\tOK\n"
#: src/frontend/mame/ui/selgame.cpp:976
msgid "ROM Audit Result\tBAD\n"
msgid "Resultado da Audit à ROM\tFALHA\n"
msgstr "Resultado da Audit à ROM\tFALHA\n"
#: src/frontend/mame/ui/selgame.cpp:979
msgid "Samples Audit Result\tNone Needed\n"
msgid "Resultado da Audit às Samples\tNenhuma Necessária\n"
msgstr "Resultado da Audit às Samples\tNenhuma Necessária\n"
#: src/frontend/mame/ui/selgame.cpp:981
msgid "Samples Audit Result\tOK\n"
msgid "Resultado da Audit às Samples\tOK\n"
msgstr "Resultado da Audit às Samples\tOK\n"
#: src/frontend/mame/ui/selgame.cpp:983
msgid "Samples Audit Result\tBAD\n"
msgid "Resultado da Audit às Samples\tFALHA\n"
msgstr "Resultado da Audit às Samples\tFALHA\n"
#: src/frontend/mame/ui/selgame.cpp:987
msgid ""
@ -2124,7 +2124,7 @@ msgstr "Impulso da Moeda"
#: src/frontend/mame/ui/submenu.cpp:87
msgid "Device Mapping"
msgstr "mapeamento de Dispositivos"
msgstr "Mapeamento de Dispositivos"
#: src/frontend/mame/ui/submenu.cpp:88
msgid "Lightgun Device Assignment"
@ -2132,7 +2132,7 @@ msgstr "Atribuição do Dispositivo Pistola de Luz"
#: src/frontend/mame/ui/submenu.cpp:89
msgid "Trackball Device Assignment"
msgstr "Atribuição do Dispositivo trackball"
msgstr "Atribuição do Dispositivo Trackball"
#: src/frontend/mame/ui/submenu.cpp:90
msgid "Pedal Device Assignment"
@ -2184,7 +2184,7 @@ msgstr "Filtragem Bi-linear"
#: src/frontend/mame/ui/submenu.cpp:108
msgid "Bitmap Prescaling"
msgstr "Bitmap Prescaling"
msgstr "Prescaling de Bitmaps"
#: src/frontend/mame/ui/submenu.cpp:109
msgid "Window Mode"

View File

@ -1760,6 +1760,8 @@ if (BUSES["A2BUS"]~=null) then
MAME_DIR .. "src/devices/bus/a2bus/agat7ram.h",
MAME_DIR .. "src/devices/bus/a2bus/ssprite.cpp",
MAME_DIR .. "src/devices/bus/a2bus/ssprite.h",
MAME_DIR .. "src/devices/bus/a2bus/ssbapple.cpp",
MAME_DIR .. "src/devices/bus/a2bus/ssbapple.h",
}
end
@ -3280,3 +3282,33 @@ if (BUSES["INTERPRO_KEYBOARD"]~=null) then
MAME_DIR .. "src/devices/bus/interpro/keyboard/hle.h"
}
end
---------------------------------------------------
--
--@src/devices/bus/einstein/pipe/pipe.h,BUSES["TATUNG_PIPE"] = true
---------------------------------------------------
if (BUSES["TATUNG_PIPE"]~=null) then
files {
MAME_DIR .. "src/devices/bus/einstein/pipe/pipe.cpp",
MAME_DIR .. "src/devices/bus/einstein/pipe/pipe.h",
MAME_DIR .. "src/devices/bus/einstein/pipe/tk02.cpp",
MAME_DIR .. "src/devices/bus/einstein/pipe/tk02.h",
}
end
---------------------------------------------------
--
--@src/devices/bus/einstein/userport/userport.h,BUSES["EINSTEIN_USERPORT"] = true
---------------------------------------------------
if (BUSES["EINSTEIN_USERPORT"]~=null) then
files {
MAME_DIR .. "src/devices/bus/einstein/userport/userport.cpp",
MAME_DIR .. "src/devices/bus/einstein/userport/userport.h",
MAME_DIR .. "src/devices/bus/einstein/userport/mouse.cpp",
MAME_DIR .. "src/devices/bus/einstein/userport/mouse.h",
MAME_DIR .. "src/devices/bus/einstein/userport/speech.cpp",
MAME_DIR .. "src/devices/bus/einstein/userport/speech.h",
}
end

View File

@ -663,6 +663,7 @@ BUSES["CRVISION"] = true
BUSES["DMV"] = true
BUSES["ECBBUS"] = true
BUSES["ECONET"] = true
BUSES["EINSTEIN_USERPORT"] = true
BUSES["ELECTRON"] = true
BUSES["EP64"] = true
BUSES["EPSON_SIO"] = true
@ -731,6 +732,7 @@ BUSES["SPECTRUM"] = true
BUSES["SUNKBD"] = true
BUSES["SVI_EXPANDER"] = true
BUSES["SVI_SLOT"] = true
BUSES["TATUNG_PIPE"] = true
BUSES["TI8X"] = true
BUSES["TI99"] = true
BUSES["TI99X"] = true
@ -3061,6 +3063,7 @@ files {
MAME_DIR .. "src/mame/drivers/tv910.cpp",
MAME_DIR .. "src/mame/drivers/tv950.cpp",
MAME_DIR .. "src/mame/drivers/tv990.cpp",
MAME_DIR .. "src/mame/drivers/ts3000.cpp",
}
createMESSProjects(_target, _subtarget, "tem")
@ -3406,11 +3409,13 @@ files {
createMESSProjects(_target, _subtarget, "skeleton")
files {
MAME_DIR .. "src/mame/drivers/acd.cpp",
MAME_DIR .. "src/mame/drivers/aceex.cpp",
MAME_DIR .. "src/mame/drivers/akaiax80.cpp",
MAME_DIR .. "src/mame/drivers/alesis_qs.cpp",
MAME_DIR .. "src/mame/drivers/alphasma.cpp",
MAME_DIR .. "src/mame/drivers/ampro.cpp",
MAME_DIR .. "src/mame/drivers/ampscarp.cpp",
MAME_DIR .. "src/mame/drivers/amust.cpp",
MAME_DIR .. "src/mame/drivers/anzterm.cpp",
MAME_DIR .. "src/mame/drivers/applix.cpp",
@ -3501,6 +3506,7 @@ files {
MAME_DIR .. "src/mame/drivers/lft.cpp",
MAME_DIR .. "src/mame/drivers/lg-dvd.cpp",
MAME_DIR .. "src/mame/drivers/lola8a.cpp",
MAME_DIR .. "src/mame/drivers/lilith.cpp",
MAME_DIR .. "src/mame/drivers/m79152pc.cpp",
MAME_DIR .. "src/mame/drivers/mccpm.cpp",
MAME_DIR .. "src/mame/drivers/mes.cpp",
@ -3538,6 +3544,7 @@ files {
MAME_DIR .. "src/mame/drivers/p8k.cpp",
MAME_DIR .. "src/mame/drivers/pegasus.cpp",
MAME_DIR .. "src/mame/drivers/pencil2.cpp",
MAME_DIR .. "src/mame/drivers/perq.cpp",
MAME_DIR .. "src/mame/drivers/pes.cpp",
MAME_DIR .. "src/mame/includes/pes.h",
MAME_DIR .. "src/mame/drivers/pipbug.cpp",
@ -3545,6 +3552,7 @@ files {
MAME_DIR .. "src/mame/drivers/pm68k.cpp",
MAME_DIR .. "src/mame/drivers/pockchal.cpp",
MAME_DIR .. "src/mame/drivers/poly.cpp",
MAME_DIR .. "src/mame/drivers/powerstack.cpp",
MAME_DIR .. "src/mame/drivers/proteus3.cpp",
MAME_DIR .. "src/mame/drivers/pt68k4.cpp",
MAME_DIR .. "src/mame/drivers/ptcsol.cpp",
@ -3561,6 +3569,7 @@ files {
MAME_DIR .. "src/mame/drivers/softbox.cpp",
MAME_DIR .. "src/mame/includes/softbox.h",
MAME_DIR .. "src/mame/drivers/squale.cpp",
MAME_DIR .. "src/mame/drivers/solbourne.cpp",
MAME_DIR .. "src/mame/drivers/swtpc.cpp",
MAME_DIR .. "src/mame/drivers/swyft.cpp",
MAME_DIR .. "src/mame/drivers/symbolics.cpp",
@ -3582,6 +3591,7 @@ files {
MAME_DIR .. "src/mame/drivers/vii.cpp",
MAME_DIR .. "src/mame/drivers/vsmilepro.cpp",
MAME_DIR .. "src/mame/drivers/wicat.cpp",
MAME_DIR .. "src/mame/drivers/wyse.cpp",
MAME_DIR .. "src/mame/drivers/xor100.cpp",
MAME_DIR .. "src/mame/includes/xor100.h",
MAME_DIR .. "src/mame/drivers/xavix.cpp",

View File

@ -39,8 +39,8 @@
DEFINE_DEVICE_TYPE(A2BUS_VIDEOTERM, a2bus_videoterm_device, "a2vidtrm", "Videx VideoTerm")
DEFINE_DEVICE_TYPE(A2BUS_IBSAP16, a2bus_ap16_device, "a2ap16", "IBS AP-16 80 column card")
DEFINE_DEVICE_TYPE(A2BUS_IBSAP16ALT, a2bus_ap16alt_device, "a2ap16a", "IBS AP-16 80 column card (alt. version)")
DEFINE_DEVICE_TYPE(A2BUS_VTC1, a2bus_vtc1_device, "a2vtc1", "Unknown VideoTerm clone #1")
DEFINE_DEVICE_TYPE(A2BUS_VTC2, a2bus_vtc2_device, "a2vtc2", "Unknown VideoTerm clone #2")
DEFINE_DEVICE_TYPE(A2BUS_VTC1, a2bus_vtc1_device, "a2vtc1", "unknown VideoTerm clone #1")
DEFINE_DEVICE_TYPE(A2BUS_VTC2, a2bus_vtc2_device, "a2vtc2", "unknown VideoTerm clone #2")
DEFINE_DEVICE_TYPE(A2BUS_AEVIEWMASTER80, a2bus_aevm80_device, "a2aevm80", "Applied Engineering Viewmaster 80")
#define VIDEOTERM_ROM_REGION "vterm_rom"

View File

@ -0,0 +1,91 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
/*********************************************************************
ssbapple.c
Implementation of the SSB Apple speech card
Must be in slot 2 for the provided software to work!
*********************************************************************/
#include "emu.h"
#include "ssbapple.h"
#include "sound/tms5220.h"
#include "speaker.h"
/***************************************************************************
PARAMETERS
***************************************************************************/
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
DEFINE_DEVICE_TYPE(A2BUS_SSBAPPLE, a2bus_ssb_device, "a2ssbapl", "Multitech Industrial SSB Apple speech card")
#define TMS_TAG "tms5220"
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
MACHINE_CONFIG_MEMBER( a2bus_ssb_device::device_add_mconfig )
MCFG_SPEAKER_STANDARD_MONO("ssbapple")
MCFG_SOUND_ADD(TMS_TAG, TMS5220, 640000) // guess - this gives 8 kHz output according to the datasheet
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "ssbapple", 1.0)
MACHINE_CONFIG_END
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
a2bus_ssb_device::a2bus_ssb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
device_a2bus_card_interface(mconfig, *this),
m_tms(*this, TMS_TAG)
{
}
a2bus_ssb_device::a2bus_ssb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
a2bus_ssb_device(mconfig, A2BUS_SSBAPPLE, tag, owner, clock)
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void a2bus_ssb_device::device_start()
{
// set_a2bus_device makes m_slot valid
set_a2bus_device();
if (m_slot != 2)
{
popmessage("SSB Card should be in slot 2!\n");
}
}
void a2bus_ssb_device::device_reset()
{
}
bool a2bus_ssb_device::take_c800()
{
return false;
}
uint8_t a2bus_ssb_device::read_cnxx(address_space &space, uint8_t offset)
{
return 0x1f | m_tms->status_r(space, 0);
}
void a2bus_ssb_device::write_cnxx(address_space &space, uint8_t offset, uint8_t data)
{
m_tms->data_w(space, 0, data);
}

View File

@ -0,0 +1,50 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont
/*********************************************************************
ssbapple.h
Implementation of the SSB Apple speech card
*********************************************************************/
#ifndef MAME_BUS_A2BUS_SSBAPPLE_H
#define MAME_BUS_A2BUS_SSBAPPLE_H
#pragma once
#include "a2bus.h"
#include "sound/tms5220.h"
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
class a2bus_ssb_device:
public device_t,
public device_a2bus_card_interface
{
public:
// construction/destruction
a2bus_ssb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static constexpr feature_type imperfect_features() { return feature::SOUND; }
required_device<tms5220_device> m_tms;
protected:
a2bus_ssb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override;
// overrides of standard a2bus slot functions
virtual uint8_t read_cnxx(address_space &space, uint8_t offset) override;
virtual void write_cnxx(address_space &space, uint8_t offset, uint8_t data) override;
virtual bool take_c800() override;
};
// device type definition
DECLARE_DEVICE_TYPE(A2BUS_SSBAPPLE, a2bus_ssb_device)
#endif // MAME_BUS_A2BUS_A2SSBAPPLE_H

View File

@ -150,16 +150,14 @@ DEFINE_DEVICE_TYPE(COCOSSC_SAC, cocossc_sac_device, "cocossc_sac", "CoCo SSC Sou
// MACHINE FRAGMENTS AND ADDRESS MAPS
//**************************************************************************
static ADDRESS_MAP_START(ssc_io_map, AS_IO, 8, coco_ssc_device)
AM_RANGE(TMS7000_PORTA, TMS7000_PORTA) AM_READ(ssc_port_a_r)
AM_RANGE(TMS7000_PORTB, TMS7000_PORTB) AM_WRITE(ssc_port_b_w)
AM_RANGE(TMS7000_PORTC, TMS7000_PORTC) AM_READWRITE(ssc_port_c_r, ssc_port_c_w)
AM_RANGE(TMS7000_PORTD, TMS7000_PORTD) AM_READWRITE(ssc_port_d_r, ssc_port_d_w)
ADDRESS_MAP_END
MACHINE_CONFIG_MEMBER(coco_ssc_device::device_add_mconfig)
MCFG_CPU_ADD(PIC_TAG, TMS7040, DERIVED_CLOCK(1, 2))
MCFG_CPU_IO_MAP(ssc_io_map)
MCFG_TMS7000_IN_PORTA_CB(READ8(coco_ssc_device, ssc_port_a_r))
MCFG_TMS7000_OUT_PORTB_CB(WRITE8(coco_ssc_device, ssc_port_b_w))
MCFG_TMS7000_IN_PORTC_CB(READ8(coco_ssc_device, ssc_port_c_r))
MCFG_TMS7000_OUT_PORTC_CB(WRITE8(coco_ssc_device, ssc_port_c_w))
MCFG_TMS7000_IN_PORTD_CB(READ8(coco_ssc_device, ssc_port_d_r))
MCFG_TMS7000_OUT_PORTD_CB(WRITE8(coco_ssc_device, ssc_port_d_w))
MCFG_RAM_ADD("staticram")
MCFG_RAM_DEFAULT_SIZE("2K")

View File

@ -6,7 +6,10 @@
*
* Terco T4426 CNC Programming Station multi cart
*
* The code here is heavily inspired by coco_pak and coco_232
* The T4426 is based on a Color Computer II PCB revision 26-3134A with a modified
* Extended Basic fitted through an adapter and a soldered wire as one address line
* was missing. Modifications involved obfuscation changing names of some common
* commands such as LIST renamed to LARS (which happens to be the name of the CEO).
*
* +-------------------------------------------------------------------------------+
* ||__|+-----+ oo 75 |O ||||||||||||||| O| |
@ -51,7 +54,7 @@
#define LOG_PIA (1U << 2)
#define LOG_ACIA (1U << 3)
//#define VERBOSE (LOG_ACIA|LOG_GENERAL) // (LOG_PIA | LOG_GENERAL | LOG_SETUP)
//#define VERBOSE (LOG_PIA) // (LOG_PIA | LOG_GENERAL | LOG_SETUP)
//#define LOG_OUTPUT_STREAM std::cout
#include "logmacro.h"
@ -182,7 +185,7 @@ ROM_START( coco_t4426 )
// 8 banked ROM:s
ROM_LOAD("tercoED4426-0-8549-5.3.bin", 0x0000, 0x2000, CRC(45665428) SHA1(ff49a79275772c4c4ab1ae29db662c9b10a744a7))
ROM_LOAD("tercoED4426-1-8549-5.3.bin", 0x2000, 0x2000, CRC(44baba33) SHA1(01cee1b208c158e598e7ecd2189b5e0ffa7f3ab9))
ROM_LOAD("tercoED4426-1-8549-5.3.bin", 0x2000, 0x2000, CRC(854cd50d) SHA1(0786391b4e7a78af0a984b6313eec7f71fb4ad9e))
ROM_LOAD("tercoPD4426-2-8632-6.4.bin", 0x4000, 0x2000, CRC(258e443a) SHA1(9d8901f3e70ae4f8526dde1b5208b22f066f801f))
ROM_LOAD("tercoPD4426-3-8638-6.4.bin", 0x6000, 0x2000, CRC(640d1de4) SHA1(5ae7427cb5729fd3920361855d954ea1f97f6ae5))
ROM_LOAD("tercoCA4426-4-8549-3.4.bin", 0x8000, 0x2000, CRC(df18397b) SHA1(2f9de210c039619c649be223c37a4eff873fa600))

View File

@ -0,0 +1,119 @@
// license: GPL-2.0+
// copyright-holders: Dirk Best
/***************************************************************************
Einstein "Tatung Pipe"
***************************************************************************/
#include "emu.h"
#include "pipe.h"
// supported devices
#include "tk02.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
DEFINE_DEVICE_TYPE(TATUNG_PIPE, tatung_pipe_device, "tatung_pipe", "Tatung Pipe Slot")
//**************************************************************************
// SLOT DEVICE
//**************************************************************************
//-------------------------------------------------
// tatung_pipe_device - constructor
//-------------------------------------------------
tatung_pipe_device::tatung_pipe_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, TATUNG_PIPE, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_program(nullptr),
m_io(nullptr),
m_card(nullptr),
m_int_handler(*this),
m_nmi_handler(*this),
m_reset_handler(*this)
{
}
//-------------------------------------------------
// tatung_pipe_device - destructor
//-------------------------------------------------
tatung_pipe_device::~tatung_pipe_device()
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void tatung_pipe_device::device_start()
{
// resolve callbacks
m_int_handler.resolve_safe();
m_nmi_handler.resolve_safe();
m_reset_handler.resolve_safe();
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void tatung_pipe_device::device_reset()
{
}
//-------------------------------------------------
// set_program_space - set address space we are attached to
//-------------------------------------------------
void tatung_pipe_device::set_program_space(address_space *program)
{
m_program = program;
}
//-------------------------------------------------
// set_io_space - set address space we are attached to
//-------------------------------------------------
void tatung_pipe_device::set_io_space(address_space *io)
{
m_io = io;
}
//**************************************************************************
// CARD INTERFACE
//**************************************************************************
//-------------------------------------------------
// device_tatung_pipe_interface - constructor
//-------------------------------------------------
device_tatung_pipe_interface::device_tatung_pipe_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig, device)
{
m_slot = dynamic_cast<tatung_pipe_device *>(device.owner());
}
//-------------------------------------------------
// ~device_tatung_pipe_interface - destructor
//-------------------------------------------------
device_tatung_pipe_interface::~device_tatung_pipe_interface()
{
}
//**************************************************************************
// SLOT INTERFACE
//**************************************************************************
SLOT_INTERFACE_START( tatung_pipe_cards )
SLOT_INTERFACE("tk02", TK02_80COL)
SLOT_INTERFACE_END

View File

@ -0,0 +1,135 @@
// license: GPL-2.0+
// copyright-holders: Dirk Best
/***************************************************************************
Einstein "Tatung Pipe"
60-pin slot
+5V 1 2 D7
+5V 3 4 D6
GND 5 6 D5
GND 7 8 D4
GND 9 10 D3
GND 11 12 D2
GND 13 14 D1
GND 15 16 D0
GND 17 18 A15
A14 19 20 A13
A12 21 22 A11
A10 23 24 A9
A8 25 26 A7
A6 27 28 A5
A4 29 30 A3
A2 31 32 A1
A0 33 34 /RESET
GND 35 36 /RFSH
GND 37 38 /M1
GND 39 40 /BUSACK
GND 41 42 /WR
GND 43 44 /RD
GND 45 46 /IORQ
GND 47 48 /MREQ
GND 49 50 /HALT
GND 51 52 /NMI
GND 53 54 /INT
GND 55 56 /WAIT
GND 57 58 /BUSREQ
GND 59 60 SYSCLK
***************************************************************************/
#ifndef MAME_BUS_EINSTEIN_PIPE_PIPE_H
#define MAME_BUS_EINSTEIN_PIPE_PIPE_H
#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_TATUNG_PIPE_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, TATUNG_PIPE, 0) \
MCFG_DEVICE_SLOT_INTERFACE(tatung_pipe_cards, nullptr, false)
#define MCFG_TATUNG_PIPE_INT_HANDLER(_devcb) \
devcb = &tatung_pipe_device::set_int_handler(*device, DEVCB_##_devcb);
#define MCFG_TATUNG_PIPE_NMI_HANDLER(_devcb) \
devcb = &tatung_pipe_device::set_nmi_handler(*device, DEVCB_##_devcb);
#define MCFG_TATUNG_PIPE_RESET_HANDLER(_devcb) \
devcb = &tatung_pipe_device::set_reset_handler(*device, DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
class device_tatung_pipe_interface;
class tatung_pipe_device : public device_t, public device_slot_interface
{
friend class device_tatung_pipe_interface;
public:
// construction/destruction
tatung_pipe_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~tatung_pipe_device();
void set_program_space(address_space *program);
void set_io_space(address_space *io);
// callbacks
template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb)
{ return downcast<tatung_pipe_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); }
template <class Object> static devcb_base &set_nmi_handler(device_t &device, Object &&cb)
{ return downcast<tatung_pipe_device &>(device).m_nmi_handler.set_callback(std::forward<Object>(cb)); }
template <class Object> static devcb_base &set_reset_handler(device_t &device, Object &&cb)
{ return downcast<tatung_pipe_device &>(device).m_reset_handler.set_callback(std::forward<Object>(cb)); }
// called from card device
DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int_handler(state); }
DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_nmi_handler(state); }
DECLARE_WRITE_LINE_MEMBER( reset_w ) { m_reset_handler(state); }
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
address_space *m_program;
address_space *m_io;
device_tatung_pipe_interface *m_card;
private:
devcb_write_line m_int_handler;
devcb_write_line m_nmi_handler;
devcb_write_line m_reset_handler;
};
// class representing interface-specific live pipe device
class device_tatung_pipe_interface : public device_slot_card_interface
{
public:
// construction/destruction
device_tatung_pipe_interface(const machine_config &mconfig, device_t &device);
virtual ~device_tatung_pipe_interface();
protected:
address_space &program_space() { return *m_slot->m_program; }
address_space &io_space() { return *m_slot->m_io; }
tatung_pipe_device *m_slot;
};
// device type definition
DECLARE_DEVICE_TYPE(TATUNG_PIPE, tatung_pipe_device)
// supported devices
SLOT_INTERFACE_EXTERN(tatung_pipe_cards);
#endif // MAME_BUS_EINSTEIN_PIPE_PIPE_H

View File

@ -0,0 +1,231 @@
// license: GPL-2.0+
// copyright-holders: Dirk Best, Phill Harvey-Smith
/***************************************************************************
TK02 80 Column Monochrome Unit
***************************************************************************/
#include "emu.h"
#include "tk02.h"
#include "screen.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
DEFINE_DEVICE_TYPE(TK02_80COL, tk02_device, "tk02", "TK02 80 Column Monochrome Unit")
//-------------------------------------------------
// device_address_map
//-------------------------------------------------
DEVICE_ADDRESS_MAP_START(map, 8, tk02_device)
// AM_RANGE(0x00, 0x07) AM_SELECT(0xff00) AM_READWRITE(ram_r, ram_w) // no AM_SELECT (or AM_MASK) support here
AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) AM_DEVWRITE("crtc", mc6845_device, address_w)
AM_RANGE(0x09, 0x09) AM_MIRROR(0xff00) AM_DEVWRITE("crtc", mc6845_device, register_w)
AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff00) AM_READ(status_r)
ADDRESS_MAP_END
//-------------------------------------------------
// rom_region - device-specific ROM region
//-------------------------------------------------
ROM_START( tk02 )
ROM_REGION(0x2000, "gfx", 0)
ROM_LOAD("tk02-v100.bin", 0x0000, 0x2000, CRC(ad3c4346) SHA1(cd57e630371b4d0314e3f15693753fb195c7257d))
ROM_END
const tiny_rom_entry *tk02_device::device_rom_region() const
{
return ROM_NAME( tk02 );
}
//-------------------------------------------------
// input_ports - device-specific input ports
//-------------------------------------------------
static INPUT_PORTS_START( tk02_links )
PORT_START("M001")
PORT_DIPUNUSED_DIPLOC(0x01, 0x01, "M001:1")
PORT_START("M002")
PORT_DIPNAME(0x01, 0x00, "TV Standard") PORT_DIPLOCATION("M002:1")
PORT_DIPSETTING(0x00, "625 lines/50 Hz")
PORT_DIPSETTING(0x01, "525 lines/60 Hz")
PORT_START("M003")
PORT_DIPNAME(0x01, 0x00, "Startup Mode") PORT_DIPLOCATION("M003:1")
PORT_DIPSETTING(0x00, "Normal")
PORT_DIPSETTING(0x01, "Automatic 80 Column")
PORT_START("M004")
PORT_DIPNAME(0x01, 0x00, "Character Set") PORT_DIPLOCATION("M004:1")
PORT_DIPSETTING(0x00, "Modified")
PORT_DIPSETTING(0x01, "Normal")
INPUT_PORTS_END
ioport_constructor tk02_device::device_input_ports() const
{
return INPUT_PORTS_NAME( tk02_links );
}
//-------------------------------------------------
// gfx_layout - only for the char viewer
//-------------------------------------------------
static const gfx_layout tk02_charlayout =
{
8, 10,
256,
1,
{ 0 },
{ 0, 1, 2, 3, 4, 5, 6, 7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 0x800*8, 0x801*8 },
8*8
};
static GFXDECODE_START( tk02 )
GFXDECODE_ENTRY("gfx", 0x0000, tk02_charlayout, 0, 1)
GFXDECODE_ENTRY("gfx", 0x1000, tk02_charlayout, 0, 1)
GFXDECODE_END
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
MACHINE_CONFIG_MEMBER( tk02_device::device_add_mconfig )
MCFG_SCREEN_ADD_MONOCHROME("mono", RASTER, rgb_t::green())
MCFG_SCREEN_RAW_PARAMS(XTAL_8MHz * 2, 1024, 0, 640, 312, 0, 250)
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
MCFG_PALETTE_ADD_MONOCHROME("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", tk02)
MCFG_MC6845_ADD("crtc", MC6845, "mono", XTAL_8MHz / 4)
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8)
MCFG_MC6845_UPDATE_ROW_CB(tk02_device, crtc_update_row)
MCFG_MC6845_OUT_DE_CB(WRITELINE(tk02_device, de_w))
MCFG_TATUNG_PIPE_ADD("pipe")
MACHINE_CONFIG_END
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
// tk02_device - constructor
//-------------------------------------------------
tk02_device::tk02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, TK02_80COL, tag, owner, clock),
device_tatung_pipe_interface(mconfig, *this),
m_pipe(*this, "pipe"),
m_crtc(*this, "crtc"),
m_palette(*this, "palette"),
m_gfx(*this, "gfx"),
m_links(*this, "M00%u", 1),
m_de(0)
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void tk02_device::device_start()
{
// setup ram
m_ram = std::make_unique<uint8_t[]>(0x800);
memset(m_ram.get(), 0xff, 0x800);
// register for save states
save_pointer(NAME(m_ram.get()), 0x800);
save_item(NAME(m_de));
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void tk02_device::device_reset()
{
m_pipe->set_io_space(&io_space());
m_pipe->set_program_space(&program_space());
io_space().install_device(0x40, 0x4f, *this, &tk02_device::map);
io_space().install_readwrite_handler(0x40, 0x47, 0, 0, 0xff00, read8_delegate(FUNC(tk02_device::ram_r), this), write8_delegate(FUNC(tk02_device::ram_w), this));
}
//**************************************************************************
// IMPLEMENTATION
//**************************************************************************
MC6845_UPDATE_ROW( tk02_device::crtc_update_row )
{
const pen_t *pen = m_palette->pens();
for (int i = 0; i < x_count; i++)
{
uint8_t code = m_ram[(ma + i) & 0x07ff];
// 12-------------- link M004
// --11------------ ra3
// ----109876543--- data from ram
// -------------210 ra0..2
uint8_t data = m_gfx->as_u8((m_links[3]->read() << 12) | ((ra & 0x08) << 8) | (code << 3) | (ra & 0x07));
if (i == cursor_x)
data ^= 0xff;
bitmap.pix32(y, i * 8 + 0) = pen[BIT(data, 7)];
bitmap.pix32(y, i * 8 + 1) = pen[BIT(data, 6)];
bitmap.pix32(y, i * 8 + 2) = pen[BIT(data, 5)];
bitmap.pix32(y, i * 8 + 3) = pen[BIT(data, 4)];
bitmap.pix32(y, i * 8 + 4) = pen[BIT(data, 3)];
bitmap.pix32(y, i * 8 + 5) = pen[BIT(data, 2)];
bitmap.pix32(y, i * 8 + 6) = pen[BIT(data, 1)];
bitmap.pix32(y, i * 8 + 7) = pen[BIT(data, 0)];
}
}
WRITE_LINE_MEMBER( tk02_device::de_w )
{
m_de = state;
}
// lower 3 bits of address define a 256-byte "row"
// upper 8 bits define the offset in the row
READ8_MEMBER( tk02_device::ram_r )
{
return m_ram[((offset & 0x07) << 8) | ((offset >> 8) & 0xff)];
}
WRITE8_MEMBER( tk02_device::ram_w )
{
m_ram[((offset & 0x07) << 8) | ((offset >> 8) & 0xff)] = data;
}
READ8_MEMBER( tk02_device::status_r )
{
// 7654---- unused
// ----3--- link M001
// -----2-- link M002
// ------1- link M003
// -------0 mc6845 display enabled
uint8_t data = 0xf0;
data |= m_links[0]->read() << 3;
data |= m_links[1]->read() << 2;
data |= m_links[2]->read() << 1;
data |= m_de << 0;
return data;
}

View File

@ -0,0 +1,61 @@
// license: GPL-2.0+
// copyright-holders: Dirk Best, Phill Harvey-Smith
/***************************************************************************
TK02 80 Column Monochrome Unit
***************************************************************************/
#ifndef MAME_BUS_EINSTEIN_TK02_H
#define MAME_BUS_EINSTEIN_TK02_H
#pragma once
#include "pipe.h"
#include "video/mc6845.h"
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> tk02_device
class tk02_device : public device_t, public device_tatung_pipe_interface
{
public:
// construction/destruction
tk02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual const tiny_rom_entry *device_rom_region() const override;
virtual void device_add_mconfig(machine_config &config) override;
virtual ioport_constructor device_input_ports() const override;
virtual void device_start() override;
virtual void device_reset() override;
private:
DECLARE_ADDRESS_MAP(map, 8);
DECLARE_WRITE_LINE_MEMBER(de_w);
DECLARE_READ8_MEMBER(ram_r);
DECLARE_WRITE8_MEMBER(ram_w);
DECLARE_READ8_MEMBER(status_r);
MC6845_UPDATE_ROW(crtc_update_row);
required_device<tatung_pipe_device> m_pipe;
required_device<mc6845_device> m_crtc;
required_device<palette_device> m_palette;
required_memory_region m_gfx;
required_ioport_array<4> m_links;
std::unique_ptr<uint8_t[]> m_ram;
int m_de;
};
// device type definition
DECLARE_DEVICE_TYPE(TK02_80COL, tk02_device)
#endif // MAME_BUS_EINSTEIN_TK02_H

View File

@ -0,0 +1,106 @@
// license: GPL-2.0+
// copyright-holders: Dirk Best
/***************************************************************************
Einstein Mouse
TODO: Verify implementation (mouse directions are digital only?)
***************************************************************************/
#include "emu.h"
#include "mouse.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
DEFINE_DEVICE_TYPE(EINSTEIN_MOUSE, einstein_mouse_device, "einstein_mouse", "Einstein Mouse")
//-------------------------------------------------
// input_ports - device-specific input ports
//-------------------------------------------------
static INPUT_PORTS_START( mouse )
PORT_START("mouse_b")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) PORT_NAME("Mouse Left Button")
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1) PORT_NAME("Mouse Right Button")
PORT_START("mouse_x")
PORT_BIT(0xff, 0x00, IPT_MOUSE_X) PORT_PLAYER(1) PORT_SENSITIVITY(100) PORT_KEYDELTA(5)
PORT_START("mouse_y")
PORT_BIT(0xff, 0x00, IPT_MOUSE_Y) PORT_PLAYER(1) PORT_SENSITIVITY(100) PORT_KEYDELTA(5)
INPUT_PORTS_END
ioport_constructor einstein_mouse_device::device_input_ports() const
{
return INPUT_PORTS_NAME( mouse );
}
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
// einstein_speech_device - constructor
//-------------------------------------------------
einstein_mouse_device::einstein_mouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, EINSTEIN_MOUSE, tag, owner, clock),
device_einstein_userport_interface(mconfig, *this),
m_mouse_b(*this, "mouse_b"),
m_mouse_x(*this, "mouse_x"),
m_mouse_y(*this, "mouse_y"),
m_x(0), m_y(0)
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void einstein_mouse_device::device_start()
{
// register for save states
save_item(NAME(m_x));
save_item(NAME(m_y));
}
//**************************************************************************
// IMPLEMENTATION
//**************************************************************************
// 7------- not used
// -6------ not used
// --5----- right button
// ---4---- left button
// ----3--- right
// -----2-- left
// ------1- down
// -------0 up
uint8_t einstein_mouse_device::read()
{
uint8_t data = 0;
uint8_t x = m_mouse_x->read();
uint8_t y = m_mouse_y->read();
int dx = m_x - x;
int dy = m_y - y;
data |= m_mouse_b->read() << 4;
data |= (dx < 0) ? 0 : 1 << 3;
data |= (dx > 0) ? 0 : 1 << 2;
data |= (dy < 0) ? 0 : 1 << 1;
data |= (dy > 0) ? 0 : 1 << 0;
m_x = x;
m_y = y;
return data;
}

View File

@ -0,0 +1,47 @@
// license: GPL-2.0+
// copyright-holders: Dirk Best
/***************************************************************************
Einstein Mouse
***************************************************************************/
#ifndef MAME_BUS_EINSTEIN_USERPORT_MOUSE_H
#define MAME_BUS_EINSTEIN_USERPORT_MOUSE_H
#pragma once
#include "userport.h"
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> einstein_mouse_device
class einstein_mouse_device : public device_t, public device_einstein_userport_interface
{
public:
// construction/destruction
einstein_mouse_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual ioport_constructor device_input_ports() const override;
virtual void device_start() override;
virtual uint8_t read() override;
private:
required_ioport m_mouse_b;
required_ioport m_mouse_x;
required_ioport m_mouse_y;
int m_x;
int m_y;
};
// device type definition
DECLARE_DEVICE_TYPE(EINSTEIN_MOUSE, einstein_mouse_device)
#endif // MAME_BUS_EINSTEIN_USERPORT_MOUSE_H

View File

@ -0,0 +1,88 @@
// license: GPL-2.0+
// copyright-holders: Dirk Best
/***************************************************************************
Einstein Speech Synthesiser (J&K Software)
TODO: Verify implementation
***************************************************************************/
#include "emu.h"
#include "speech.h"
#include "speaker.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
DEFINE_DEVICE_TYPE(EINSTEIN_SPEECH, einstein_speech_device, "einstein_speech", "Einstein Speech Synthesiser")
//-------------------------------------------------
// rom_region - device-specific ROM region
//-------------------------------------------------
ROM_START( sp0256 )
ROM_REGION(0x10000, "sp0256", 0)
ROM_LOAD("sp0256a-al2.bin", 0x1000, 0x0800, CRC(b504ac15) SHA1(e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc))
ROM_END
const tiny_rom_entry *einstein_speech_device::device_rom_region() const
{
return ROM_NAME( sp0256 );
}
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
MACHINE_CONFIG_MEMBER( einstein_speech_device::device_add_mconfig )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("sp0256", SP0256, 3120000) // ???
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MACHINE_CONFIG_END
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
// einstein_speech_device - constructor
//-------------------------------------------------
einstein_speech_device::einstein_speech_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, EINSTEIN_SPEECH, tag, owner, clock),
device_einstein_userport_interface(mconfig, *this),
m_sp0256(*this, "sp0256")
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void einstein_speech_device::device_start()
{
}
//**************************************************************************
// IMPLEMENTATION
//**************************************************************************
// 7------- reset?
// -6------ sp0256 lrq
// --543210 sp0256 ald
uint8_t einstein_speech_device::read()
{
return m_sp0256->lrq_r() ? 0x00 : 0x40;
}
void einstein_speech_device::write(uint8_t data)
{
if (BIT(data, 7) == 0)
m_sp0256->ald_w(machine().dummy_space(), 0, data & 0x3f);
}

View File

@ -0,0 +1,45 @@
// license: GPL-2.0+
// copyright-holders: Dirk Best
/***************************************************************************
Einstein Speech Synthesiser (J&K Software)
***************************************************************************/
#ifndef MAME_BUS_EINSTEIN_USERPORT_SPEECH_H
#define MAME_BUS_EINSTEIN_USERPORT_SPEECH_H
#pragma once
#include "userport.h"
#include "sound/sp0256.h"
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> einstein_speech_device
class einstein_speech_device : public device_t, public device_einstein_userport_interface
{
public:
// construction/destruction
einstein_speech_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual const tiny_rom_entry *device_rom_region() const override;
virtual void device_add_mconfig(machine_config &config) override;
virtual void device_start() override;
virtual uint8_t read() override;
virtual void write(uint8_t data) override;
private:
required_device<sp0256_device> m_sp0256;
};
// device type definition
DECLARE_DEVICE_TYPE(EINSTEIN_SPEECH, einstein_speech_device)
#endif // MAME_BUS_EINSTEIN_USERPORT_SPEECH_H

View File

@ -0,0 +1,124 @@
// license: GPL-2.0+
// copyright-holders: Dirk Best
/***************************************************************************
Einstein User Port
***************************************************************************/
#include "emu.h"
#include "userport.h"
// supported devices
#include "mouse.h"
#include "speech.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
DEFINE_DEVICE_TYPE(EINSTEIN_USERPORT, einstein_userport_device, "einstein_userport", "Einstein User Port")
//**************************************************************************
// SLOT DEVICE
//**************************************************************************
//-------------------------------------------------
// einstein_userport_device - constructor
//-------------------------------------------------
einstein_userport_device::einstein_userport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, EINSTEIN_USERPORT, tag, owner, clock),
device_slot_interface(mconfig, *this),
m_card(nullptr),
m_bstb_handler(*this)
{
}
//-------------------------------------------------
// einstein_userport_device - destructor
//-------------------------------------------------
einstein_userport_device::~einstein_userport_device()
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void einstein_userport_device::device_start()
{
// resolve callbacks
m_bstb_handler.resolve_safe();
m_card = dynamic_cast<device_einstein_userport_interface *>(get_card_device());
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void einstein_userport_device::device_reset()
{
}
//**************************************************************************
// I/O PORTS
//**************************************************************************
READ8_MEMBER( einstein_userport_device::read )
{
if (m_card)
return m_card->read();
else
return 0xff;
}
WRITE8_MEMBER( einstein_userport_device::write )
{
if (m_card)
m_card->write(data);
}
WRITE_LINE_MEMBER( einstein_userport_device::brdy_w )
{
if (m_card)
m_card->brdy_w(state);
}
//**************************************************************************
// CARTRIDGE INTERFACE
//**************************************************************************
//-------------------------------------------------
// device_einstein_userport_interface - constructor
//-------------------------------------------------
device_einstein_userport_interface::device_einstein_userport_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig, device)
{
m_slot = dynamic_cast<einstein_userport_device *>(device.owner());
}
//-------------------------------------------------
// ~device_einstein_userport_interface - destructor
//-------------------------------------------------
device_einstein_userport_interface::~device_einstein_userport_interface()
{
}
//**************************************************************************
// SLOT INTERFACE
//**************************************************************************
SLOT_INTERFACE_START( einstein_userport_cards )
SLOT_INTERFACE("mouse", EINSTEIN_MOUSE)
SLOT_INTERFACE("speech", EINSTEIN_SPEECH)
SLOT_INTERFACE_END

View File

@ -0,0 +1,96 @@
// license: GPL-2.0+
// copyright-holders: Dirk Best
/***************************************************************************
Einstein User Port
16-pin slot
+5V 1 2 D0
GND 3 4 D1
BRDY 5 6 D2
GND 7 8 D3
GND 9 10 D4
/BSTB 11 12 D5
GND 13 14 D6
+5V 15 16 D7
***************************************************************************/
#ifndef MAME_BUS_EINSTEIN_USERPORT_USERPORT_H
#define MAME_BUS_EINSTEIN_USERPORT_USERPORT_H
#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_EINSTEIN_USERPORT_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, EINSTEIN_USERPORT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(einstein_userport_cards, nullptr, false)
#define MCFG_EINSTEIN_USERPORT_BSTB_HANDLER(_devcb) \
devcb = &einstein_userport_device::set_bstb_handler(*device, DEVCB_##_devcb);
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
class device_einstein_userport_interface;
class einstein_userport_device : public device_t, public device_slot_interface
{
public:
// construction/destruction
einstein_userport_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~einstein_userport_device();
// callbacks
template <class Object> static devcb_base &set_bstb_handler(device_t &device, Object &&cb)
{ return downcast<einstein_userport_device &>(device).m_bstb_handler.set_callback(std::forward<Object>(cb)); }
// called from card device
DECLARE_WRITE_LINE_MEMBER( bstb_w ) { m_bstb_handler(state); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER (write );
DECLARE_WRITE_LINE_MEMBER( brdy_w );
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
device_einstein_userport_interface *m_card;
private:
devcb_write_line m_bstb_handler;
};
// class representing interface-specific live userport device
class device_einstein_userport_interface : public device_slot_card_interface
{
public:
// construction/destruction
virtual ~device_einstein_userport_interface();
virtual uint8_t read() { return 0xff; }
virtual void write(uint8_t data) { }
virtual void brdy_w(int state) { }
protected:
device_einstein_userport_interface(const machine_config &mconfig, device_t &device);
einstein_userport_device *m_slot;
};
// device type definition
DECLARE_DEVICE_TYPE(EINSTEIN_USERPORT, einstein_userport_device)
// supported devices
SLOT_INTERFACE_EXTERN(einstein_userport_cards);
#endif // MAME_BUS_EINSTEIN_USERPORT_USERPORT_H

View File

@ -40,10 +40,6 @@
#define RS232_BAUD_57600 (0x0c)
#define RS232_BAUD_115200 (0x0d)
// Some systems may not include a dedicated XTAL capable of producing standard baud rates for the UART.
// These slightly deviant rates, which might lie within tolerance limits of actual hardware, have been found in use.
#define RS232_BAUD_9615 (0x0e)
#define MCFG_RS232_BAUD(_tag, _default_baud, _description, _class, _write_line) \
PORT_START(_tag) \
PORT_CONFNAME(0xff, _default_baud, _description) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, _class, _write_line) \
@ -55,7 +51,6 @@
PORT_CONFSETTING( RS232_BAUD_2400, "2400") \
PORT_CONFSETTING( RS232_BAUD_4800, "4800") \
PORT_CONFSETTING( RS232_BAUD_9600, "9600") \
PORT_CONFSETTING( RS232_BAUD_9615, "9615") \
PORT_CONFSETTING( RS232_BAUD_14400, "14400") \
PORT_CONFSETTING( RS232_BAUD_19200, "19200") \
PORT_CONFSETTING( RS232_BAUD_28800, "28800") \
@ -204,8 +199,7 @@ protected:
28800,
38400,
57600,
115200,
9615
115200
};
return values[baud];

View File

@ -2245,13 +2245,24 @@ enum
oso_device::oso_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
bus::hexbus::hexbus_chained_device(mconfig, TI99_OSO, tag, owner, clock),
m_int(*this),
m_data(0),
m_status(0xff),
m_control(0),
m_xmit(0),
m_xmit(0), m_lasthxvalue(0x01),
m_clkcount(0),
m_xmit_send(0)
m_sbav(false), m_sbavold(true),
m_bav(false), m_bavhold(false),
m_shsk(false), m_shskold(true),
m_hsk(false), m_hskhold(false),
m_wq1(false), m_wq1old(true), m_wq2(false), m_wq2old(true),
m_wnp(false),
m_wbusy(false), m_wbusyold(false),
m_sendbyte(false),
m_wrst(false), m_counting(false),
m_rq2(false), m_rq2old(true)
{
(void)m_shskold;
m_hexbus_inbound = nullptr;
m_hexbus_outbound = nullptr;
}
@ -2270,7 +2281,11 @@ READ8_MEMBER( oso_device::read )
case 1:
// read 5FFA: read status register
value = m_status;
if (TRACE_OSO) logerror("Read status %02x\n", value);
clear_int_status();
if (TRACE_OSO) logerror("Read status %02x (HSKWT=%d,HSKRD=%d,BAVIAS=%d,BAVAIS=%d,SBAV=%d,WBUSY=%d,RBUSY=%d,SHSK=%d)\n", value,
(value&HSKWT)? 1:0, (value&HSKRD)? 1:0, (value&BAVIAS)? 1:0,
(value&BAVAIS)? 1:0, (value&SBAV)? 1:0, (value&WBUSY)? 1:0,
(value&RBUSY)? 1:0,(value&SHSK)? 1:0);
break;
case 2:
// read 5FFC: read control register
@ -2294,14 +2309,30 @@ WRITE8_MEMBER( oso_device::write )
case 0:
// write 5FF8: write transmit register
if (TRACE_OSO) logerror("Write transmit register %02x\n", data);
// trigger some actions in the write subsystem
m_sendbyte = true;
if (!m_wq1)
{
m_wbusy = true;
m_wbusyold = true;
set_status(WBUSY, m_wbusy);
}
m_xmit = data;
m_xmit_send = 2;
m_status |= HSKWT;
break;
case 1:
// write 5FFA: write control register
if (TRACE_OSO) logerror("Write control register %02x\n", data);
if (TRACE_OSO) logerror("Write control register %02x (WIEN=%d, RIEN=%d, BAVIAEN=%d, BAVAIEN=%d, BAVC=%d, WEN=%d, REN=%d)\n",
data, (data & WIEN)? 1:0, (data & RIEN)? 1:0, (data&BAVIAEN)? 1:0, (data&BAVAIEN)? 1:0,
(data & BAVC)? 1:0, (data & WEN)? 1:0, (data & REN)? 1:0);
m_control = data;
if (!control_bit(WEN))
{
// Reset some flipflops in the write timing section
m_wq1 = m_wq2 = m_wrst = false;
}
m_bav = control_bit(BAVC);
break;
default:
// write 5FFC, 5FFE: undefined
@ -2310,6 +2341,12 @@ WRITE8_MEMBER( oso_device::write )
}
}
void oso_device::clear_int_status()
{
m_status &= ~(HSKWT | HSKRD | BAVIAS | BAVAIS);
m_int(CLEAR_LINE);
}
void oso_device::hexbus_value_changed(uint8_t data)
{
if (TRACE_OSO) logerror("Hexbus value changed to %02x\n", data);
@ -2320,28 +2357,185 @@ void oso_device::hexbus_value_changed(uint8_t data)
*/
WRITE_LINE_MEMBER( oso_device::clock_in )
{
if (state==ASSERT_LINE) m_clkcount++;
if (m_clkcount > 30 && ((m_control & WEN)!=0) && (m_xmit_send > 0))
if (state==ASSERT_LINE)
{
if (TRACE_OSO) logerror("Write nibble %d\n", 3-m_xmit_send);
hexbus_write(((m_xmit & 0x0c)<<4) | (m_xmit & 0x03));
m_xmit >>= 4;
m_clkcount = 0;
m_xmit_send--;
// Control lines SHSK, SBAV
// When BAV/HSK is 0/1 for two rising edges of Phi3*, SBAV/SHSK goes to
// 0/1 at the following falling edge of Phi3*.
// Page 5
m_sbav = m_bavhold && m_bav;
m_bavhold = m_bav;
m_shsk = m_hskhold && m_hsk;
m_hskhold = m_hsk;
set_status(SHSK, m_shsk);
set_status(SBAV, m_sbav);
// Implement the write timing logic
// This subcircuit in the OSO chip autonomously runs the Hexbus
// protocol. After loading a byte into the transmit register, it sends
// both nibbles (little-endian) one after another over the Hexbus,
// pausing for 30 cycles, and checking the HSK line.
// The schematics show some fascinating signal line spaghetti with
// embedded JK* flipflops which may give you some major headaches.
// Compared to that, the lines below are a true relief.
if (control_bit(WEN)) // Nothing happens without WEN
{
if (TRACE_OSO) if (!m_wrst && m_sendbyte) logerror("Starting write process\n");
// Page 3: Write timing
// Note: First pass counts to 30, second to 31
bool cnt30 = ((m_clkcount & 0x1e) == 30);
bool cont = (m_wrst && !m_wq2 && !m_wq1) || (cnt30 && m_wq2 && !m_wq1)
|| (cnt30 && !m_wq2 && m_wq1) || (m_shsk && m_wq2 && m_wq1);
bool jwq1 = cont && m_wq2;
bool kwq1 = !((cont && !m_wq2) || (!cont && m_wq2 && m_wnp));
bool jwq2 = cont;
bool kwq2 = !(m_wq1 && !cont);
if (m_wq1 == m_wq2) m_clkcount = 0;
// Reset "byte loaded" flipflop during the second phase
if (m_wq1 == true)
m_sendbyte = false;
// WBUSY is asserted on byte load, during phase 1, and phase 2.
m_wbusy = m_sendbyte || m_wq1 || m_wq2;
// Set status bits and raise interrupt (p. 4)
set_status(WBUSY, m_wbusy);
if (m_wbusy != m_wbusyold)
{
// Raising edge of wbusy*
if (!m_wbusy) set_status(HSKWT, !m_wbusy);
m_wbusyold = m_wbusy;
}
if (m_rq2 != m_rq2old)
{
// Raising edge of RQ2*
if (!m_rq2)
{
set_status(HSKRD, m_rq2);
}
m_wbusyold = m_wbusy;
}
if (m_sbav != m_sbavold)
{
// Raising edge of SBAV -> BAVIA
// Falling edge of SBAV -> BAVAI
if (m_sbav)
set_status(BAVIAS, m_sbav);
else
set_status(BAVAIS, !m_sbav);
}
// Operate flipflops
// Write phases
// 74LS109: J-K* flipflop (inverted K)
if (jwq1)
{
if (!kwq1) m_wq1 = !m_wq1;
else m_wq1 = true;
}
else
if (!kwq1) m_wq1 = false;
if (jwq2)
{
if (!kwq2) m_wq2 = !m_wq2;
else m_wq2 = true;
}
else
if (!kwq2) m_wq2 = false;
// Set WNP on rising edge of WQ2*
if (m_wq2 != m_wq2old)
{
if (!m_wq2)
m_wnp = true;
m_wq2old = m_wq2;
}
m_wq1old = m_wq1;
// Set HSK
m_hsk = !m_wq1 && m_wq2;
// Reset WNP if phases are done
if (!m_wq2 && !m_wq1)
{
m_wnp = false;
}
update_hexbus();
}
else
{
m_wq1 = m_wq2 = m_wrst = m_counting = false;
m_clkcount = 0;
}
}
// Actions that occur for Phi3=0
else
{
m_wrst = m_sendbyte;
// Only count when one phase is active
m_counting = !(m_wq1==m_wq2);
if (m_counting)
m_clkcount++;
else
m_clkcount = 0; // Reset when not counting
}
// Show some lines in log
if (TRACE_OSO) {
if (m_sbav != m_sbavold) {
logerror("SBAV = %d\n", m_sbav? 1 : 0);
m_sbavold = m_sbav;
}
}
// Raise interrupt
if ((control_bit(WIEN) && status_bit(HSKWT))
|| (control_bit(RIEN) && status_bit(HSKRD))
|| (control_bit(BAVAIEN) && status_bit(BAVAIS))
|| (control_bit(BAVIAEN) && status_bit(BAVIAS)))
{
m_int(ASSERT_LINE);
}
}
void oso_device::update_hexbus()
{
uint8_t value = 0x00;
uint8_t nibble = m_xmit;
if (m_wnp) nibble >>= 4;
value = ((m_xmit & 0x0c)<<4) | (m_xmit & 0x03);
if (!m_hsk) value |= 0x10;
if (!m_bav) value |= 0x04;
if (value != m_lasthxvalue)
{
if (TRACE_OSO) logerror("Set hexbus = %02x (BAV*=%d, HSK*=%d, data=%01x)\n", value, (value & 0x04)? 1:0, (value & 0x10)? 1:0, ((value>>4)&0x0c) | (value&0x03));
hexbus_write(value);
}
m_lasthxvalue = value;
}
void oso_device::device_start()
{
logerror("Starting\n");
m_status = m_xmit = m_control = m_data = 0;
m_int.resolve_safe();
m_hexbus_outbound = dynamic_cast<bus::hexbus::hexbus_device*>(machine().device(TI_HEXBUS_TAG));
// Establish callback for inbound propagations
m_hexbus_outbound->set_chain_element(this);
// Establish callback
m_hexbus_outbound->set_chain_element(this);
save_item(NAME(m_data));
save_item(NAME(m_status));

View File

@ -436,15 +436,51 @@ public:
WRITE_LINE_MEMBER( clock_in );
// INT line
devcb_write_line m_int;
private:
bool control_bit(int bit) { return (m_control & bit)!=0; }
bool status_bit(int bit) { return (m_status & bit)!=0; }
void clear_int_status();
void set_status(int bit, bool set) { m_status = (set)? (m_status | bit) : (m_status & ~bit); }
void update_hexbus();
uint8_t m_data;
uint8_t m_status;
uint8_t m_control;
uint8_t m_xmit;
uint8_t m_lasthxvalue;
int m_clkcount;
int m_xmit_send;
bool m_sbav;
bool m_sbavold;
bool m_bav;
bool m_bavhold;
bool m_shsk;
bool m_shskold;
bool m_hsk;
bool m_hskhold;
// Page 3 in OSO schematics
bool m_wq1;
bool m_wq1old;
bool m_wq2;
bool m_wq2old;
bool m_wnp;
bool m_wbusy;
bool m_wbusyold;
bool m_sendbyte;
bool m_wrst;
bool m_counting;
bool m_rq2;
bool m_rq2old;
};
class mainboard8_device : public device_t
@ -612,6 +648,9 @@ private:
#define MCFG_MAINBOARD8_HOLD_CALLBACK(_write) \
devcb = &bus::ti99::internal::mainboard8_device::set_hold_wr_callback(*device, DEVCB_##_write);
#define MCFG_OSO_INT_CALLBACK(_int) \
devcb = &bus::ti99::internal::oso_device::set_int_callback(*device, DEVCB##_int);
DECLARE_DEVICE_TYPE_NS(TI99_MAINBOARD8, bus::ti99::internal, mainboard8_device)
DECLARE_DEVICE_TYPE_NS(TI99_VAQUERRO, bus::ti99::internal, vaquerro_device)
DECLARE_DEVICE_TYPE_NS(TI99_MOFETTA, bus::ti99::internal, mofetta_device)

View File

@ -120,11 +120,6 @@ DEFINE_DEVICE_TYPE(VME_MZR8300, vme_mzr8300_card_device, "mzr8300", "Mizar 8300
* once a proper serial board hardware (ie MZ 8300) is found and emulated. */
static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9615 )
DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9615 )
DEVICE_INPUT_DEFAULTS_END
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
@ -137,10 +132,9 @@ MACHINE_CONFIG_MEMBER( vme_mzr8300_card_device::device_add_mconfig )
MCFG_DEVICE_ADD("sio1", UPD7201_NEW, XTAL_4MHz)
MCFG_RS232_PORT_ADD ("rs232p1", default_rs232_devices, "terminal")
MCFG_RS232_RXD_HANDLER (DEVWRITELINE ("sio0", upd7201_new_device, rxb_w))
MCFG_RS232_CTS_HANDLER (DEVWRITELINE ("sio0", upd7201_new_device, ctsb_w))
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", terminal)
MCFG_RS232_PORT_ADD("rs232p1", default_rs232_devices, "terminal")
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sio0", upd7201_new_device, rxb_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("sio0", upd7201_new_device, ctsb_w))
MCFG_DEVICE_ADD("stc", AM9513, XTAL_4MHz)
MCFG_AM9513_OUT1_CALLBACK(DEVWRITELINE("sio0", upd7201_new_device, rxca_w))

View File

@ -948,7 +948,7 @@ inline void h6280_device::bpl()
***************************************************************/
inline void h6280_device::brk()
{
logerror("BRK %04xn",PCW);
logerror("BRK %04x\n",PCW);
clear_t();
PCW++;
push(PCH);

View File

@ -1672,8 +1672,24 @@ static inline void m68ki_exception_address_error(m68000_base_device *m68k)
}
m68k->run_mode = RUN_MODE_BERR_AERR_RESET;
/* Note: This is implemented for 68000 only! */
m68ki_stack_frame_buserr(m68k, sr);
if (!CPU_TYPE_IS_010_PLUS(m68k->cpu_type))
{
/* Note: This is implemented for 68000 only! */
m68ki_stack_frame_buserr(m68k, sr);
}
else if (CPU_TYPE_IS_010(m68k->cpu_type))
{
/* only the 68010 throws this unique type-1000 frame */
m68ki_stack_frame_1000(m68k, REG_PPC(m68k), sr, EXCEPTION_BUS_ERROR);
}
else if (m68k->mmu_tmp_buserror_address == REG_PPC(m68k))
{
m68ki_stack_frame_1010(m68k, sr, EXCEPTION_BUS_ERROR, REG_PPC(m68k), m68k->mmu_tmp_buserror_address);
}
else
{
m68ki_stack_frame_1011(m68k, sr, EXCEPTION_BUS_ERROR, REG_PPC(m68k), m68k->mmu_tmp_buserror_address);
}
m68ki_jump_vector(m68k, EXCEPTION_ADDRESS_ERROR);

View File

@ -7,7 +7,13 @@
reimplement as a push, not a pull
- T0 output clock
- get rid of i/o addressmap, use devcb for mcu pins
- add CMOS devices, 1 new opcode(01 HALT)
- add CMOS devices, 1 new opcode (01 HALT)
- make timer update cleaner:
timer is updated on S4 while I/O happens on S5
due to very bad coding, Kaypro 10 keyboard depends on being able to see T=0 before interrupt is taken
right now this is implemented with a hack in the mov_a_t handler
in theory it should also be possible to see the timer flag before the interrupt is taken
mov_t_a should also update the T register after it's incremented
*/
/***************************************************************************
@ -121,24 +127,6 @@
MACROS
***************************************************************************/
/* ROM is mapped to AS_PROGRAM */
#define program_r(a) m_program->read_byte(a)
/* RAM is mapped to AS_DATA */
#define ram_r(a) m_data->read_byte(a)
#define ram_w(a,V) m_data->write_byte(a, V)
/* ports are mapped to AS_IO and callbacks */
#define ext_r(a) m_io->read_byte(a)
#define ext_w(a,V) m_io->write_byte(a, V)
#define port_r(a) m_port_in_cb[a-1]()
#define port_w(a,V) m_port_out_cb[a-1](V)
#define test_r(a) m_test_in_cb[a]()
#define test_w(a,V) m_test_out_cb[a](V)
#define bus_r() m_bus_in_cb()
#define bus_w(V) m_bus_out_cb(V)
#define prog_w(V) m_prog_out_cb(V)
/* r0-r7 map to memory via the regptr */
#define R0 m_regptr[0]
#define R1 m_regptr[1]
@ -151,24 +139,24 @@
DEFINE_DEVICE_TYPE(I8021, i8021_device, "i8021", "I8021")
DEFINE_DEVICE_TYPE(I8022, i8022_device, "i8022", "I8022")
DEFINE_DEVICE_TYPE(I8035, i8035_device, "i8035", "I8035")
DEFINE_DEVICE_TYPE(I8048, i8048_device, "i8048", "I8048")
DEFINE_DEVICE_TYPE(I8648, i8648_device, "i8648", "I8648")
DEFINE_DEVICE_TYPE(I8748, i8748_device, "i8748", "I8748")
DEFINE_DEVICE_TYPE(I8039, i8039_device, "i8039", "I8039")
DEFINE_DEVICE_TYPE(I8049, i8049_device, "i8049", "I8049")
DEFINE_DEVICE_TYPE(I8749, i8749_device, "i8749", "I8749")
DEFINE_DEVICE_TYPE(I8040, i8040_device, "i8040", "I8040")
DEFINE_DEVICE_TYPE(I8050, i8050_device, "i8050", "I8050")
DEFINE_DEVICE_TYPE(I8041, i8041_device, "i8041", "I8041")
DEFINE_DEVICE_TYPE(I8741, i8741_device, "i8741", "I8741")
DEFINE_DEVICE_TYPE(I8042, i8042_device, "i8042", "I8042")
DEFINE_DEVICE_TYPE(I8242, i8242_device, "i8242", "I8242")
DEFINE_DEVICE_TYPE(I8742, i8742_device, "i8742", "I8742")
DEFINE_DEVICE_TYPE(I8021, i8021_device, "i8021", "I8021")
DEFINE_DEVICE_TYPE(I8022, i8022_device, "i8022", "I8022")
DEFINE_DEVICE_TYPE(I8035, i8035_device, "i8035", "I8035")
DEFINE_DEVICE_TYPE(I8048, i8048_device, "i8048", "I8048")
DEFINE_DEVICE_TYPE(I8648, i8648_device, "i8648", "I8648")
DEFINE_DEVICE_TYPE(I8748, i8748_device, "i8748", "I8748")
DEFINE_DEVICE_TYPE(I8039, i8039_device, "i8039", "I8039")
DEFINE_DEVICE_TYPE(I8049, i8049_device, "i8049", "I8049")
DEFINE_DEVICE_TYPE(I8749, i8749_device, "i8749", "I8749")
DEFINE_DEVICE_TYPE(I8040, i8040_device, "i8040", "I8040")
DEFINE_DEVICE_TYPE(I8050, i8050_device, "i8050", "I8050")
DEFINE_DEVICE_TYPE(I8041, i8041_device, "i8041", "I8041")
DEFINE_DEVICE_TYPE(I8741, i8741_device, "i8741", "I8741")
DEFINE_DEVICE_TYPE(I8042, i8042_device, "i8042", "I8042")
DEFINE_DEVICE_TYPE(I8242, i8242_device, "i8242", "I8242")
DEFINE_DEVICE_TYPE(I8742, i8742_device, "i8742", "I8742")
DEFINE_DEVICE_TYPE(MB8884, mb8884_device, "mb8884", "MB8884")
DEFINE_DEVICE_TYPE(N7751, n7751_device, "n7751", "N7751")
DEFINE_DEVICE_TYPE(N7751, n7751_device, "n7751", "N7751")
DEFINE_DEVICE_TYPE(M58715, m58715_device, "m58715", "M58715")
@ -756,7 +744,7 @@ OPHANDLER( mov_a_r6 ) { m_a = R6; return 1; }
OPHANDLER( mov_a_r7 ) { m_a = R7; return 1; }
OPHANDLER( mov_a_xr0 ) { m_a = ram_r(R0); return 1; }
OPHANDLER( mov_a_xr1 ) { m_a = ram_r(R1); return 1; }
OPHANDLER( mov_a_t ) { m_a = m_timer; return 1; }
OPHANDLER( mov_a_t ) { m_a = m_timer + ((m_timecount_enabled & TIMER_ENABLED) ? 1 : 0); return 1; }
OPHANDLER( mov_psw_a ) { m_psw = m_a; update_regptr(); return 1; }
OPHANDLER( mov_sts_a ) { m_sts = (m_sts & 0x0f) | (m_a & 0xf0); return 1; }

View File

@ -242,6 +242,23 @@ protected:
typedef int (mcs48_cpu_device::*mcs48_ophandler)();
static const mcs48_ophandler s_opcode_table[256];
/* ROM is mapped to AS_PROGRAM */
uint8_t program_r(offs_t a) { return m_program->read_byte(a); }
/* RAM is mapped to AS_DATA */
uint8_t ram_r(offs_t a) { return m_data->read_byte(a); }
void ram_w(offs_t a, uint8_t v) { m_data->write_byte(a, v); }
/* ports are mapped to AS_IO and callbacks */
uint8_t ext_r(offs_t a) { return m_io->read_byte(a); }
void ext_w(offs_t a, uint8_t v) { m_io->write_byte(a, v); }
uint8_t port_r(offs_t a) { return m_port_in_cb[a - 1](); }
void port_w(offs_t a, uint8_t v) { m_port_out_cb[a - 1](v); }
int test_r(offs_t a) { return m_test_in_cb[a](); }
uint8_t bus_r() { return m_bus_in_cb(); }
void bus_w(uint8_t v) { m_bus_out_cb(v); }
void prog_w(int v) { m_prog_out_cb(v); }
uint8_t opcode_fetch();
uint8_t argument_fetch();
void update_regptr();

View File

@ -161,12 +161,6 @@ void mips3_device::mips3drc_set_options(uint32_t options)
-------------------------------------------------*/
void mips3_device::clear_fastram(uint32_t select_start)
{
for (int i=select_start; i<MIPS3_MAX_FASTRAM; i++) {
m_fastram[i].start = 0;
m_fastram[i].end = 0;
m_fastram[i].readonly = false;
m_fastram[i].base = nullptr;
}
m_fastram_select=select_start;
// Set cache to dirty so that re-mapping occurs
m_cache_dirty = true;
@ -189,6 +183,8 @@ void mips3_device::add_fastram(offs_t start, offs_t end, uint8_t readonly, void
m_fastram[m_fastram_select].offset_base16 = (uint16_t*)((uint8_t*)base - start);
m_fastram[m_fastram_select].offset_base32 = (uint32_t*)((uint8_t*)base - start);
m_fastram_select++;
// Set cache to dirty so that re-mapping occurs
m_cache_dirty = true;
}
}
@ -911,8 +907,8 @@ void mips3_device::static_generate_memory_accessor(int mode, int size, int iswri
UML_ROLINS(block, I0, I3, 0, 0xfffff000); // rolins i0,i3,0,0xfffff000
if ((machine().debug_flags & DEBUG_FLAG_ENABLED) == 0)
for (ramnum = 0; ramnum < MIPS3_MAX_FASTRAM; ramnum++)
if (m_fastram[ramnum].base != nullptr && (!iswrite || !m_fastram[ramnum].readonly))
for (ramnum = 0; ramnum < m_fastram_select; ramnum++)
if (!(iswrite && m_fastram[ramnum].readonly))
{
void *fastbase = (uint8_t *)m_fastram[ramnum].base - m_fastram[ramnum].start;
uint32_t skip = label++;
@ -926,7 +922,6 @@ void mips3_device::static_generate_memory_accessor(int mode, int size, int iswri
UML_CMP(block, I0, m_fastram[ramnum].start);// cmp i0,fastram_start
UML_JMPc(block, COND_B, skip); // jb skip
}
if (!iswrite)
{
if (size == 1)

View File

@ -2597,8 +2597,6 @@ static void cfunc_CHECKIRQ(void *param) { ((sh34_base_device *)param)->func_CHEC
void sh34_base_device::generate_update_cycles(drcuml_block *block, compiler_state *compiler, uml::parameter param, bool allow_exception)
{
/* TODO: this is likely wrong? - I've not seen it called when compiler->checkints is true */
/* check full interrupts if pending */
if (compiler->checkints)
{
@ -2606,7 +2604,7 @@ void sh34_base_device::generate_update_cycles(drcuml_block *block, compiler_stat
/* param is pc + 2 (the opcode after the current one)
as we're calling from opcode handlers here that will point to the current opcode instead
but I believe the exception functoin requires it to point to the next one so update the
but I believe the exception function requires it to point to the next one so update the
local copy of the PC variable here for that? */
UML_MOV(block, mem(&m_sh2_state->pc), param);
@ -3028,7 +3026,7 @@ bool sh34_base_device::generate_group_0_STCDBR(drcuml_block *block, compiler_sta
}
void sh34_base_device::func_RTE() { RTE(); }
static void cfunc_RTE(void *param) { ((sh34_base_device *)param)->func_RTE(); };
static void cfunc_RTE(void *param) { ((sh34_base_device *)param)->func_RTE(); };
bool sh34_base_device::generate_group_0_RTE(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, uint16_t opcode, int in_delay_slot, uint32_t ovrpc)
{
@ -3036,6 +3034,9 @@ bool sh34_base_device::generate_group_0_RTE(drcuml_block *block, compiler_state
save_fast_iregs(block);
UML_CALLC(block, cfunc_RTE, this);
load_fast_iregs(block);
compiler->checkints = true;
UML_MOV(block, mem(&m_sh2_state->pc), mem(&m_sh2_state->m_delay));
generate_update_cycles(block, compiler, mem(&m_sh2_state->ea), true); // <subtract cycles>
UML_HASHJMP(block, 0, mem(&m_sh2_state->pc), *m_nocode); // and jump to the "resume PC"
@ -3065,6 +3066,9 @@ bool sh34_base_device::generate_group_4_LDCSR(drcuml_block *block, compiler_stat
UML_MOV(block, mem(&m_sh2_state->arg0), desc->opptr.w[0]);
UML_CALLC(block, cfunc_LDCSR, this);
load_fast_iregs(block);
compiler->checkints = true;
return true;
}
@ -3077,6 +3081,11 @@ bool sh34_base_device::generate_group_4_LDCMSR(drcuml_block *block, compiler_sta
UML_MOV(block, mem(&m_sh2_state->arg0), desc->opptr.w[0]);
UML_CALLC(block, cfunc_LDCMSR, this);
load_fast_iregs(block);
compiler->checkints = true;
if (!in_delay_slot)
generate_update_cycles(block, compiler, desc->pc + 2, true);
return true;
}

View File

@ -51,10 +51,6 @@ DEFINE_DEVICE_TYPE(TMS70C46, tms70c46_device, "tms70c46", "TMC70C46")
// internal memory maps
static ADDRESS_MAP_START(tms7000_io, AS_IO, 8, tms7000_device)
AM_RANGE(TMS7000_PORTB, TMS7000_PORTB) AM_READNOP
ADDRESS_MAP_END
static ADDRESS_MAP_START(tms7000_mem, AS_PROGRAM, 8, tms7000_device )
AM_RANGE(0x0000, 0x007f) AM_RAM // 128 bytes internal RAM
AM_RANGE(0x0080, 0x00ff) AM_READWRITE(tms7000_unmapped_rf_r, tms7000_unmapped_rf_w)
@ -114,7 +110,8 @@ tms7000_device::tms7000_device(const machine_config &mconfig, const char *tag, d
tms7000_device::tms7000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal, uint32_t info_flags)
: cpu_device(mconfig, type, tag, owner, clock),
m_program_config("program", ENDIANNESS_BIG, 8, 16, 0, internal),
m_io_config("io", ENDIANNESS_BIG, 8, 8, 0, ADDRESS_MAP_NAME(tms7000_io)),
m_port_in_cb{{*this}, {*this}, {*this}, {*this}, {*this}},
m_port_out_cb{{*this}, {*this}, {*this}, {*this}, {*this}},
m_info_flags(info_flags)
{
}
@ -177,8 +174,7 @@ tms70c46_device::tms70c46_device(const machine_config &mconfig, const char *tag,
device_memory_interface::space_config_vector tms7000_device::memory_space_config() const
{
return space_config_vector {
std::make_pair(AS_PROGRAM, &m_program_config),
std::make_pair(AS_IO, &m_io_config)
std::make_pair(AS_PROGRAM, &m_program_config)
};
}
@ -192,13 +188,17 @@ void tms7000_device::device_start()
// init/zerofill
m_program = &space(AS_PROGRAM);
m_direct = &m_program->direct();
m_io = &space(AS_IO);
m_icountptr = &m_icount;
m_irq_state[TMS7000_INT1_LINE] = false;
m_irq_state[TMS7000_INT3_LINE] = false;
for (auto &cb : m_port_in_cb)
cb.resolve_safe(0xff);
for (auto &cb : m_port_out_cb)
cb.resolve_safe();
m_idle_state = false;
m_idle_halt = false;
m_pc = 0;
@ -512,7 +512,7 @@ READ8_MEMBER(tms7000_device::tms7000_pf_r)
// note: port B is write-only, reading it returns the output value as if ddr is 0xff
int port = offset / 2 - 2;
if (!machine().side_effect_disabled())
return (m_io->read_byte(port) & ~m_port_ddr[port]) | (m_port_latch[port] & m_port_ddr[port]);
return (m_port_in_cb[port]() & ~m_port_ddr[port]) | (m_port_latch[port] & m_port_ddr[port]);
break;
}
@ -594,7 +594,7 @@ WRITE8_MEMBER(tms7000_device::tms7000_pf_w)
// note: in memory expansion modes, some port output pins are used for memory strobes.
// this is currently ignored, since port writes will always be visible externally on peripheral expansion anyway.
int port = offset / 2 - 2;
m_io->write_byte(port, data & m_port_ddr[port]);
m_port_out_cb[port](data & m_port_ddr[port]);
m_port_latch[port] = data;
break;
}
@ -888,7 +888,9 @@ void tms70c46_device::device_start()
void tms70c46_device::device_reset()
{
m_control = 0;
m_io->write_byte(TMS7000_PORTE, 0xff);
// reset port E
m_port_out_cb[4](0xff);
tms7000_device::device_reset();
}
@ -902,7 +904,7 @@ WRITE8_MEMBER(tms70c46_device::control_w)
{
// d5: enable external databus
if (~m_control & data & 0x20)
m_io->write_byte(TMS7000_PORTE, 0xff); // go into high impedance
m_port_out_cb[4](0xff); // put port E into high impedance
// d4: enable clock divider when accessing slow memory (not emulated)
// known fast memory areas: internal ROM/RAM, system RAM

View File

@ -14,6 +14,33 @@
#include "debugger.h"
// read-only on 70x0
#define MCFG_TMS7000_IN_PORTA_CB(_devcb) \
devcb = &tms7000_device::set_port_read_cb(*device, 0, DEVCB_##_devcb);
#define MCFG_TMS7000_OUT_PORTA_CB(_devcb) \
devcb = &tms7000_device::set_port_write_cb(*device, 0, DEVCB_##_devcb);
// write-only
#define MCFG_TMS7000_OUT_PORTB_CB(_devcb) \
devcb = &tms7000_device::set_port_write_cb(*device, 1, DEVCB_##_devcb);
#define MCFG_TMS7000_IN_PORTC_CB(_devcb) \
devcb = &tms7000_device::set_port_read_cb(*device, 2, DEVCB_##_devcb);
#define MCFG_TMS7000_OUT_PORTC_CB(_devcb) \
devcb = &tms7000_device::set_port_write_cb(*device, 2, DEVCB_##_devcb);
#define MCFG_TMS7000_IN_PORTD_CB(_devcb) \
devcb = &tms7000_device::set_port_read_cb(*device, 3, DEVCB_##_devcb);
#define MCFG_TMS7000_OUT_PORTD_CB(_devcb) \
devcb = &tms7000_device::set_port_write_cb(*device, 3, DEVCB_##_devcb);
// TMS70C46 only
#define MCFG_TMS7000_IN_PORTE_CB(_devcb) \
devcb = &tms7000_device::set_port_read_cb(*device, 4, DEVCB_##_devcb);
#define MCFG_TMS7000_OUT_PORTE_CB(_devcb) \
devcb = &tms7000_device::set_port_write_cb(*device, 4, DEVCB_##_devcb);
enum { TMS7000_PC=1, TMS7000_SP, TMS7000_ST };
enum
@ -23,15 +50,6 @@ enum
TMS7000_INT3_LINE
};
enum
{
TMS7000_PORTA = 0, /* read-only on 70x0 */
TMS7000_PORTB, /* write-only */
TMS7000_PORTC,
TMS7000_PORTD,
TMS7000_PORTE /* TMS70C46 only */
};
class tms7000_device : public cpu_device
{
@ -39,6 +57,12 @@ public:
// construction/destruction
tms7000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// static configuration
template<class Object>
static devcb_base &set_port_read_cb(device_t &device, int p, Object &&object) { return downcast<tms7000_device &>(device).m_port_in_cb[p].set_callback(std::move(object)); }
template<class Object>
static devcb_base &set_port_write_cb(device_t &device, int p, Object &&object) { return downcast<tms7000_device &>(device).m_port_out_cb[p].set_callback(std::move(object)); }
DECLARE_READ8_MEMBER(tms7000_unmapped_rf_r) { if (!machine().side_effect_disabled()) logerror("'%s' (%04X): unmapped_rf_r @ $%04x\n", tag(), m_pc, offset + 0x80); return 0; };
DECLARE_WRITE8_MEMBER(tms7000_unmapped_rf_w) { logerror("'%s' (%04X): unmapped_rf_w @ $%04x = $%02x\n", tag(), m_pc, offset + 0x80, data); };
@ -91,13 +115,14 @@ protected:
virtual void execute_one(uint8_t op);
address_space_config m_program_config;
address_space_config m_io_config;
devcb_read8 m_port_in_cb[5];
devcb_write8 m_port_out_cb[5];
uint32_t m_info_flags;
address_space *m_program;
direct_read_data *m_direct;
address_space *m_io;
int m_icount;
bool m_irq_state[2];
@ -319,8 +344,8 @@ public:
DECLARE_WRITE8_MEMBER(dockbus_data_w);
// access I/O port E if databus is disabled
DECLARE_READ8_MEMBER(e_bus_data_r) { return machine().side_effect_disabled() ? 0xff : ((m_control & 0x20) ? 0xff : m_io->read_byte(TMS7000_PORTE)); }
DECLARE_WRITE8_MEMBER(e_bus_data_w) { if (~m_control & 0x20) m_io->write_byte(TMS7000_PORTE, data); }
DECLARE_READ8_MEMBER(e_bus_data_r) { return machine().side_effect_disabled() ? 0xff : ((m_control & 0x20) ? 0xff : m_port_in_cb[4]()); }
DECLARE_WRITE8_MEMBER(e_bus_data_w) { if (~m_control & 0x20) m_port_out_cb[4](data); }
protected:
// device-level overrides

View File

@ -100,6 +100,9 @@ DEFINE_DEVICE_TYPE(SONY_OA_D31V, sony_oa_d31v, "sony_oa_d31v", "Sony OA-D31V Mic
DEFINE_DEVICE_TYPE(SONY_OA_D32W, sony_oa_d32w, "sony_oa_d32w", "Sony OA-D32W Micro Floppydisk Drive")
DEFINE_DEVICE_TYPE(SONY_OA_D32V, sony_oa_d32v, "sony_oa_d32v", "Sony OA-D32V Micro Floppydisk Drive")
// TEAC 3" drives
DEFINE_DEVICE_TYPE(TEAC_FD_30A, teac_fd_30a, "teac_fd_30a", "TEAC FD-30A FDD")
// TEAC 5.25" drives
#if 0
DEFINE_DEVICE_TYPE(TEAC_FD_55A, teac_fd_55a, "teac_fd_55a", "TEAC FD-55A FDD")
@ -2150,6 +2153,39 @@ void sony_oa_d32v::handled_variants(uint32_t *variants, int &var_count) const
variants[var_count++] = floppy_image::SSDD;
}
//-------------------------------------------------
// TEAC FD-30A
//
// track to track: 12 ms
// average: 171 ms
// setting time: 15 ms
// motor start time: 400 ms
//
//-------------------------------------------------
teac_fd_30a::teac_fd_30a(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
floppy_image_device(mconfig, TEAC_FD_30A, tag, owner, clock)
{
}
teac_fd_30a::~teac_fd_30a()
{
}
void teac_fd_30a::setup_characteristics()
{
form_factor = floppy_image::FF_3;
tracks = 40;
sides = 1;
set_rpm(300);
}
void teac_fd_30a::handled_variants(uint32_t *variants, int &var_count) const
{
var_count = 0;
variants[var_count++] = floppy_image::SSSD;
}
//-------------------------------------------------
// TEAC FD-55E
//

View File

@ -261,6 +261,7 @@ DECLARE_FLOPPY_IMAGE_DEVICE(EPSON_SD_321, epson_sd_321, "floppy_5_
DECLARE_FLOPPY_IMAGE_DEVICE(SONY_OA_D31V, sony_oa_d31v, "floppy_3_5")
DECLARE_FLOPPY_IMAGE_DEVICE(SONY_OA_D32W, sony_oa_d32w, "floppy_3_5")
DECLARE_FLOPPY_IMAGE_DEVICE(SONY_OA_D32V, sony_oa_d32v, "floppy_3_5")
DECLARE_FLOPPY_IMAGE_DEVICE(TEAC_FD_30A, teac_fd_30a, "floppy_3")
DECLARE_FLOPPY_IMAGE_DEVICE(TEAC_FD_55E, teac_fd_55e, "floppy_5_25")
DECLARE_FLOPPY_IMAGE_DEVICE(TEAC_FD_55F, teac_fd_55f, "floppy_5_25")
DECLARE_FLOPPY_IMAGE_DEVICE(TEAC_FD_55G, teac_fd_55g, "floppy_5_25")

View File

@ -313,16 +313,27 @@ WRITE8_MEMBER(addressable_latch_device::write_a3)
}
//-------------------------------------------------
// write_nibble - write handler using LSB of
// write_nibble_d0 - write handler using LSB of
// data as input and next three bits as address
// (offset is ignored)
//-------------------------------------------------
WRITE8_MEMBER(addressable_latch_device::write_nibble)
WRITE8_MEMBER(addressable_latch_device::write_nibble_d0)
{
write_bit((data & 0x0e) >> 1, data & 0x01);
}
//-------------------------------------------------
// write_nibble_d3 - write handler using bit 3 of
// data as input and lowest three bits as address
// (offset is ignored)
//-------------------------------------------------
WRITE8_MEMBER(addressable_latch_device::write_nibble_d3)
{
write_bit(data & 0x07, BIT(data, 3));
}
//-------------------------------------------------
// clear - pulse clear line from bus write
//-------------------------------------------------

View File

@ -77,7 +77,8 @@ public:
DECLARE_WRITE8_MEMBER(write_d7);
DECLARE_WRITE8_MEMBER(write_a0);
DECLARE_WRITE8_MEMBER(write_a3);
DECLARE_WRITE8_MEMBER(write_nibble);
DECLARE_WRITE8_MEMBER(write_nibble_d0);
DECLARE_WRITE8_MEMBER(write_nibble_d3);
DECLARE_WRITE8_MEMBER(clear);
// read handlers (inlined for the sake of optimization)

View File

@ -100,13 +100,17 @@ void am9513_device::device_start()
std::fill(std::begin(m_counter_armed), std::end(m_counter_armed), false);
std::fill(std::begin(m_counter_running), std::end(m_counter_running), false);
std::fill(std::begin(m_alternate_count), std::end(m_alternate_count), false);
std::fill(std::begin(m_src), std::end(m_src), true);
std::fill(std::begin(m_gate), std::end(m_gate), true);
std::fill(std::begin(m_gate_alt), std::end(m_gate_alt), true);
std::fill(std::begin(m_gate_active), std::end(m_gate_active), true);
std::fill(std::begin(m_tc), std::end(m_tc), false);
std::fill(std::begin(m_toggle), std::end(m_toggle), false);
// Unused SRC and GATE inputs are typically grounded
std::fill(std::begin(m_src), std::end(m_src), false);
std::fill(std::begin(m_gate), std::end(m_gate), false);
std::fill(std::begin(m_gate_active), std::end(m_gate_active), false);
// Alternate gate inputs should be tied high if not used
std::fill(std::begin(m_gate_alt), std::end(m_gate_alt), true);
// Set up frequency timers
for (int f = 0; f < 5; f++)
{

View File

@ -3,8 +3,6 @@
#include "emu.h"
#include "ds128x.h"
/// TODO: Only DV2/DV1/DV0 == 0/1/0 is supported as the chip only has a 15 stage divider and not 22.
DEFINE_DEVICE_TYPE(DS12885, ds12885_device, "ds12885", "DS12885 RTC/NVRAM")
//-------------------------------------------------
@ -15,3 +13,13 @@ ds12885_device::ds12885_device(const machine_config &mconfig, const char *tag, d
: mc146818_device(mconfig, DS12885, tag, owner, clock)
{
}
int ds12885_device::get_timer_bypass()
{
if( !( m_data[REG_A] & REG_A_DV0 ) ) //DV0 must be 0 for timekeeping
{
return 7; // Fixed at 1 Hz with clock at 32768Hz
}
return 22; // No tick
}

View File

@ -18,6 +18,7 @@ public:
protected:
virtual int data_size() override { return 128; }
virtual int get_timer_bypass() override;
};
// device type definition

View File

@ -317,8 +317,8 @@ void eeprom_base_device::internal_write(offs_t address, uint32_t data)
{
if (m_data_bits == 16)
{
m_data[address*2] = data;
m_data[address*2+1] = data >> 8;
m_data[address * 2] = data;
m_data[address * 2 + 1] = data >> 8;
} else
m_data[address] = data;
}

View File

@ -314,7 +314,7 @@ DECLARE_SERIAL_EEPROM_DEVICE(93cxx, s29190, S29190, 16)
DECLARE_SERIAL_EEPROM_DEVICE(93cxx, s29290, S29290, 16)
DECLARE_SERIAL_EEPROM_DEVICE(93cxx, s29390, S29390, 16)
// X24c44 8 bit 32byte ram/eeprom combo
// X24c44 16 bit 32byte ram/eeprom combo
DECLARE_SERIAL_EEPROM_DEVICE(x24c44, x24c44, X24C44, 16)
#endif // MAME_MACHINE_EEPROMSER_H

View File

@ -15,6 +15,9 @@
#include <algorithm>
#include <iterator>
//#define VERBOSE 1
#include "logmacro.h"
//**************************************************************************
// DEVICE DEFINITIONS
@ -79,6 +82,7 @@ TIMER_CALLBACK_MEMBER(input_merger_device::update_state)
{
if (BIT(m_state, param >> 1) != BIT(param, 0))
{
LOG("state[%d] = %d\n", param >> 1, BIT(param, 0));
m_state ^= u32(1) << (param >> 1);
m_output_handler((m_state ^ m_xorval) ? m_active : !m_active);
}

View File

@ -412,31 +412,7 @@ void mc146818_device::update_timer()
{
int bypass;
switch (m_data[REG_A] & (REG_A_DV2 | REG_A_DV1 | REG_A_DV0))
{
case 0:
bypass = 0;
break;
case REG_A_DV0:
bypass = 2;
break;
case REG_A_DV1:
bypass = 7;
break;
case REG_A_DV2 | REG_A_DV1:
case REG_A_DV2 | REG_A_DV1 | REG_A_DV0:
bypass = 22;
break;
default:
// TODO: other combinations of divider bits are used for test purposes only
bypass = 22;
break;
}
bypass = get_timer_bypass();
attotime update_period = attotime::never;
attotime update_interval = attotime::never;
@ -472,6 +448,41 @@ void mc146818_device::update_timer()
m_periodic_timer->adjust(periodic_period, 0, periodic_interval);
}
//---------------------------------------------------------------
// get_timer_bypass - get main clock divisor based on A register
//---------------------------------------------------------------
int mc146818_device::get_timer_bypass()
{
int bypass;
switch (m_data[REG_A] & (REG_A_DV2 | REG_A_DV1 | REG_A_DV0))
{
case 0:
bypass = 0;
break;
case REG_A_DV0:
bypass = 2;
break;
case REG_A_DV1:
bypass = 7;
break;
case REG_A_DV2 | REG_A_DV1:
case REG_A_DV2 | REG_A_DV1 | REG_A_DV0:
bypass = 22;
break;
default:
// TODO: other combinations of divider bits are used for test purposes only
bypass = 22;
break;
}
return bypass;
}
//-------------------------------------------------
// update_irq - Update irq based on B & C register

View File

@ -91,7 +91,6 @@ protected:
virtual int data_size() { return 64; }
private:
enum
{
REG_SECONDS = 0,
@ -153,7 +152,7 @@ private:
void set_base_datetime();
void update_irq();
void update_timer();
virtual int get_timer_bypass();
int get_seconds();
void set_seconds(int seconds);
int get_minutes();

View File

@ -200,15 +200,15 @@ void wd_fdc_device_base::set_floppy(floppy_image_device *_floppy)
ready_callback(floppy, next_ready);
}
void wd_fdc_device_base::dden_w(bool _dden)
WRITE_LINE_MEMBER(wd_fdc_device_base::dden_w)
{
if(disable_mfm) {
logerror("Error, this chip does not have a dden line\n");
return;
}
if(dden != _dden) {
dden = _dden;
if(dden != bool(state)) {
dden = bool(state);
if (TRACE_LINES) logerror("select %s\n", dden ? "fm" : "mfm");
}
}
@ -1368,27 +1368,27 @@ void wd_fdc_device_base::index_callback(floppy_image_device *floppy, int state)
general_continue();
}
bool wd_fdc_device_base::intrq_r()
READ_LINE_MEMBER(wd_fdc_device_base::intrq_r)
{
return intrq;
}
bool wd_fdc_device_base::drq_r()
READ_LINE_MEMBER(wd_fdc_device_base::drq_r)
{
return drq;
}
bool wd_fdc_device_base::hld_r()
READ_LINE_MEMBER(wd_fdc_device_base::hld_r)
{
return hld;
}
void wd_fdc_device_base::hlt_w(bool state)
WRITE_LINE_MEMBER(wd_fdc_device_base::hlt_w)
{
hlt = state;
hlt = bool(state);
}
bool wd_fdc_device_base::enp_r()
READ_LINE_MEMBER(wd_fdc_device_base::enp_r)
{
return enp;
}

View File

@ -145,7 +145,7 @@ public:
void soft_reset();
void dden_w(bool dden);
DECLARE_WRITE_LINE_MEMBER(dden_w);
void set_floppy(floppy_image_device *floppy);
void set_force_ready(bool force_ready);
void set_disable_motor_control(bool _disable_motor_control);
@ -175,13 +175,13 @@ public:
DECLARE_READ8_MEMBER( read ) { return gen_r(offset); }
DECLARE_WRITE8_MEMBER( write ) { gen_w(offset,data); }
bool intrq_r();
bool drq_r();
DECLARE_READ_LINE_MEMBER(intrq_r);
DECLARE_READ_LINE_MEMBER(drq_r);
bool hld_r();
void hlt_w(bool state);
DECLARE_READ_LINE_MEMBER(hld_r);
DECLARE_WRITE_LINE_MEMBER(hlt_w);
bool enp_r();
DECLARE_READ_LINE_MEMBER(enp_r);
void index_callback(floppy_image_device *floppy, int state);

View File

@ -122,10 +122,6 @@ z80sio_device::z80sio_device(const machine_config &mconfig, device_type type, co
device_z80daisy_interface(mconfig, *this),
m_chanA(*this, CHANA_TAG),
m_chanB(*this, CHANB_TAG),
m_rxca(0),
m_txca(0),
m_rxcb(0),
m_txcb(0),
m_out_txda_cb(*this),
m_out_dtra_cb(*this),
m_out_rtsa_cb(*this),
@ -164,11 +160,12 @@ i8274_new_device::i8274_new_device(const machine_config &mconfig, const char *ta
}
//-------------------------------------------------
// device_start - device-specific startup
// device_resolve_objects - device-specific setup
//-------------------------------------------------
void z80sio_device::device_start()
void z80sio_device::device_resolve_objects()
{
LOG("%s\n", FUNCNAME);
// resolve callbacks
m_out_txda_cb.resolve_safe();
m_out_dtra_cb.resolve_safe();
@ -185,14 +182,14 @@ void z80sio_device::device_start()
m_out_txdrqa_cb.resolve_safe();
m_out_rxdrqb_cb.resolve_safe();
m_out_txdrqb_cb.resolve_safe();
}
// configure channel A
m_chanA->m_rxc = m_rxca;
m_chanA->m_txc = m_txca;
// configure channel B
m_chanB->m_rxc = m_rxcb;
m_chanB->m_txc = m_txcb;
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void z80sio_device::device_start()
{
LOG("%s\n", FUNCNAME);
// state saving
save_item(NAME(m_int_state));
@ -514,8 +511,13 @@ WRITE8_MEMBER( z80sio_device::ba_cd_w )
z80sio_channel::z80sio_channel(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, Z80SIO_CHANNEL, tag, owner, clock)
, device_serial_interface(mconfig, *this)
, m_rx_error(0)
, m_rx_fifo_depth(0)
, m_rx_data_fifo(0)
, m_rx_error_fifo(0)
, m_rx_clock(0)
, m_rx_count(0)
, m_rx_bit(0)
, m_rx_sr(0)
, m_rx_first(0)
, m_rx_break(0)
, m_rx_rr0_latch(0)
@ -530,21 +532,30 @@ z80sio_channel::z80sio_channel(const machine_config &mconfig, const char *tag, d
, m_sync(0)
{
LOG("%s\n",FUNCNAME);
// Reset all registers
m_rr0 = m_rr1 = m_rr2 = 0;
m_wr0 = m_wr1 = m_wr2 = m_wr3 = m_wr4 = m_wr5 = m_wr6 = m_wr7 = 0;
// Reset all registers
m_rr0 = m_rr1 = m_rr2 = 0;
m_wr0 = m_wr1 = m_wr2 = m_wr3 = m_wr4 = m_wr5 = m_wr6 = m_wr7 = 0;
}
//-------------------------------------------------
// resove_objects - channel setup
//-------------------------------------------------
void z80sio_channel::device_resolve_objects()
{
LOG("%s\n",FUNCNAME);
m_uart = downcast<z80sio_device *>(owner());
m_index = m_uart->get_channel_index(this);
m_variant = m_uart->m_variant;
}
//-------------------------------------------------
// start - channel startup
//-------------------------------------------------
void z80sio_channel::device_start()
{
LOG("%s\n",FUNCNAME);
m_uart = downcast<z80sio_device *>(owner());
m_index = m_uart->get_channel_index(this);
m_variant = ((z80sio_device *)owner())->m_variant;
// state saving
save_item(NAME(m_rr0));
@ -558,8 +569,13 @@ void z80sio_channel::device_start()
save_item(NAME(m_wr5));
save_item(NAME(m_wr6));
save_item(NAME(m_wr7));
save_item(NAME(m_rx_error));
save_item(NAME(m_rx_fifo_depth));
save_item(NAME(m_rx_data_fifo));
save_item(NAME(m_rx_error_fifo));
save_item(NAME(m_rx_clock));
save_item(NAME(m_rx_count));
save_item(NAME(m_rx_bit));
save_item(NAME(m_rx_sr));
save_item(NAME(m_rx_first));
save_item(NAME(m_rx_break));
save_item(NAME(m_rx_rr0_latch));
@ -583,7 +599,9 @@ void z80sio_channel::device_reset()
LOG("%s\n", FUNCNAME);
// Reset RS232 emulation
receive_register_reset();
m_rx_fifo_depth = 0;
m_rx_data_fifo = m_rx_error_fifo = 0U;
receive_reset();
transmit_register_reset();
// disable receiver
@ -661,7 +679,8 @@ void z80sio_channel::tra_complete()
// empty transmit buffer
m_rr0 |= RR0_TX_BUFFER_EMPTY;
if ((m_wr1 & WR1_WRDY_ENABLE) && !(m_wr1 & WR1_WRDY_ON_RX_TX))
set_ready(true);
if (m_wr1 & WR1_TX_INT_ENABLE)
m_uart->trigger_interrupt(m_index, INT_TRANSMIT);
}
@ -698,33 +717,6 @@ void z80sio_channel::tra_complete()
}
//-------------------------------------------------
// rcv_callback -
//-------------------------------------------------
void z80sio_channel::rcv_callback()
{
if (m_wr3 & WR3_RX_ENABLE)
{
LOGBIT("%s() \"%s \"Channel %c Received Data Bit %d\n", FUNCNAME, owner()->tag(), 'A' + m_index, m_rxd);
receive_register_update_bit(m_rxd);
}
}
//-------------------------------------------------
// rcv_complete -
//-------------------------------------------------
void z80sio_channel::rcv_complete()
{
uint8_t data;
receive_register_extract();
data = get_received_char();
LOGRCV("%s() \"%s \"Channel %c Received Data %02x\n", FUNCNAME, owner()->tag(), 'A' + m_index, data);
receive_data(data);
}
//-------------------------------------------------
// get_clock_mode - get clock divisor
//-------------------------------------------------
@ -783,6 +775,20 @@ void z80sio_channel::update_rts()
set_dtr((m_wr5 & WR5_DTR) ? 0 : 1);
}
void z80sio_channel::set_ready(bool ready)
{
// WAIT mode not supported yet
if (!(m_wr1 & WR1_WRDY_FUNCTION))
return;
logerror("Channel %sready\n", ready ? "" : "not ");
if (m_index == z80sio_device::CHANNEL_A)
m_uart->m_out_wrdya_cb(ready ? 0 : 1);
else
m_uart->m_out_wrdyb_cb(ready ? 0 : 1);
}
//-------------------------------------------------
// get_stop_bits - get number of stop bits
//-------------------------------------------------
@ -1036,7 +1042,16 @@ void z80sio_channel::do_sioreg_wr0(uint8_t data)
case WR0_ERROR_RESET:
// error reset
LOGCMD("%s %s Ch:%c : Error Reset\n", FUNCNAME, tag(), 'A' + m_index);
m_rr1 &= ~(RR1_CRC_FRAMING_ERROR | RR1_RX_OVERRUN_ERROR | RR1_PARITY_ERROR);
if ((WR1_RX_INT_FIRST == (m_wr1 & WR1_RX_INT_MODE_MASK)) && (m_rr1 & (RR1_CRC_FRAMING_ERROR | RR1_RX_OVERRUN_ERROR)))
{
// clearing framing and overrun errors advances the FIFO
m_rr1 &= ~(RR1_CRC_FRAMING_ERROR | RR1_RX_OVERRUN_ERROR | RR1_PARITY_ERROR);
advance_rx_fifo();
}
else
{
m_rr1 &= ~(RR1_CRC_FRAMING_ERROR | RR1_RX_OVERRUN_ERROR | RR1_PARITY_ERROR);
}
break;
case WR0_RETURN_FROM_INT:
LOGINT("%s %s Ch:%c : Return from interrupt\n", FUNCNAME, tag(), 'A' + m_index);
@ -1094,6 +1109,16 @@ void z80sio_channel::do_sioreg_wr1(uint8_t data)
LOG("Z80SIO \"%s\" Channel %c : Receiver Interrupt on All Characters\n", owner()->tag(), 'A' + m_index);
break;
}
if (data & WR1_WRDY_ENABLE)
{
if (data & WR1_WRDY_ON_RX_TX)
set_ready((m_rr0 & RR0_RX_CHAR_AVAILABLE) != 0);
else
set_ready((m_rr0 & RR0_TX_BUFFER_EMPTY) != 0);
}
else
set_ready(false);
}
void z80sio_channel::do_sioreg_wr2(uint8_t data)
@ -1179,22 +1204,11 @@ void z80sio_channel::control_write(uint8_t data)
//-------------------------------------------------
uint8_t z80sio_channel::data_read()
{
uint8_t data = 0;
uint8_t const data = uint8_t(m_rx_data_fifo & 0x000000ffU);
if (!m_rx_data_fifo.empty())
{
// load data from the FIFO
data = m_rx_data_fifo.dequeue();
// load error status from the FIFO
m_rr1 = (m_rr1 & ~(RR1_CRC_FRAMING_ERROR | RR1_RX_OVERRUN_ERROR | RR1_PARITY_ERROR)) | m_rx_error_fifo.dequeue();
if (m_rx_data_fifo.empty())
{
// no more characters available in the FIFO
m_rr0 &= ~ RR0_RX_CHAR_AVAILABLE;
}
}
// framing and overrun errors need to be cleared to advance the FIFO in interrupt-on-first mode
if ((WR1_RX_INT_FIRST != (m_wr1 & WR1_RX_INT_MODE_MASK)) || !(m_rr1 & (RR1_CRC_FRAMING_ERROR | RR1_RX_OVERRUN_ERROR)))
advance_rx_fifo();
LOG("Z80SIO \"%s\" Channel %c : Data Register Read '%02x'\n", owner()->tag(), 'A' + m_index, data);
@ -1217,75 +1231,126 @@ void z80sio_channel::data_write(uint8_t data)
// empty transmit buffer
m_rr0 |= RR0_TX_BUFFER_EMPTY;
if ((m_wr1 & WR1_WRDY_ENABLE) && !(m_wr1 & WR1_WRDY_ON_RX_TX))
set_ready(true);
if (m_wr1 & WR1_TX_INT_ENABLE)
m_uart->trigger_interrupt(m_index, INT_TRANSMIT);
}
else
{
LOGTX(" Transmitter %s, data byte dropped\n", m_wr5 & WR5_TX_ENABLE ? "not enabled" : "not emptied");
LOGTX(" Transmitter not %s, data byte %02x pending\n", m_wr5 & WR5_TX_ENABLE ? "emptied" : "enabled", m_tx_data);
m_rr0 &= ~RR0_TX_BUFFER_EMPTY;
if ((m_wr1 & WR1_WRDY_ENABLE) && !(m_wr1 & WR1_WRDY_ON_RX_TX))
set_ready(false);
}
m_rr1 &= ~RR1_ALL_SENT;
}
//-------------------------------------------------
// receive_reset - reset receive state
//-------------------------------------------------
void z80sio_channel::receive_reset()
{
m_rx_count = (get_clock_mode() - 1) / 2;
m_rx_bit = 0;
}
//-------------------------------------------------
// advance_rx_fifo - move to next received byte
//-------------------------------------------------
void z80sio_channel::advance_rx_fifo()
{
if (m_rx_fifo_depth)
{
if (--m_rx_fifo_depth)
{
// shift the FIFO
m_rx_data_fifo >>= 8;
m_rx_error_fifo >>= 8;
// load error status from the FIFO
m_rr1 = (m_rr1 & ~RR1_CRC_FRAMING_ERROR) | uint8_t(m_rx_error_fifo & 0x000000ffU);
}
else
{
// no more characters available in the FIFO
m_rr0 &= ~RR0_RX_CHAR_AVAILABLE;
if ((m_wr1 & WR1_WRDY_ENABLE) && (m_wr1 & WR1_WRDY_ON_RX_TX))
set_ready(false);
}
}
}
//-------------------------------------------------
// receive_data - receive data word
//-------------------------------------------------
void z80sio_channel::receive_data(uint8_t data)
void z80sio_channel::receive_data()
{
LOGRCV("%s(%02x) %s:%c\n",FUNCNAME, data, tag(), 'A' + m_index);
LOGRCV("%s(%04x) %s:%c\n",FUNCNAME, m_rx_sr, tag(), 'A' + m_index);
if (m_rx_data_fifo.full())
// check for parity and framing errors
int const word_length = get_rx_word_length();
bool const parity = 0U != (m_wr4 & WR4_PARITY_ENABLE);
uint16_t const stop_bit = uint16_t(1U) << (word_length + (parity ? 1 : 0));
uint32_t rx_error = (m_rx_sr & stop_bit) ? 0U : RR1_CRC_FRAMING_ERROR;
m_rx_sr |= stop_bit;
if (parity)
{
uint16_t par(m_rx_sr);
for (int i = 1; word_length >= i; ++i)
par ^= BIT(par, i);
if (bool(BIT(par, 0)) == bool(m_wr4 & WR4_PARITY_EVEN))
rx_error |= RR1_PARITY_ERROR;
}
if (3 == m_rx_fifo_depth)
{
LOG(" Overrun detected\n");
// receive overrun error detected
m_rx_error |= RR1_RX_OVERRUN_ERROR;
rx_error |= RR1_RX_OVERRUN_ERROR;
switch (m_wr1 & WR1_RX_INT_MODE_MASK)
{
case WR1_RX_INT_FIRST:
if (!m_rx_first)
{
m_uart->trigger_interrupt(m_index, INT_SPECIAL);
}
break;
case WR1_RX_INT_ALL_PARITY:
case WR1_RX_INT_ALL:
m_uart->trigger_interrupt(m_index, INT_SPECIAL);
break;
}
m_rx_data_fifo = (m_rx_data_fifo & 0x0000ffffU) | (uint32_t(m_rx_sr & 0x00ffU) << 16);
m_rx_error_fifo = (m_rx_error_fifo & 0x0000ffffU) | (rx_error << 16);
}
else
{
// store received character and error status into FIFO
m_rx_data_fifo.enqueue(data);
m_rx_error_fifo.enqueue(m_rx_error);
if (!m_rx_fifo_depth)
m_rx_data_fifo = m_rx_error_fifo = 0U;
m_rx_data_fifo |= uint32_t(m_rx_sr & 0x00ffU) << (8 * m_rx_fifo_depth);
m_rx_error_fifo |= rx_error << (8 * m_rx_fifo_depth);
++m_rx_fifo_depth;
}
m_rr0 |= RR0_RX_CHAR_AVAILABLE;
if ((m_wr1 & WR1_WRDY_ENABLE) && (m_wr1 & WR1_WRDY_ON_RX_TX))
set_ready(true);
if (!m_rx_fifo_depth)
m_rr1 |= uint8_t(rx_error);
// receive interrupt
switch (m_wr1 & WR1_RX_INT_MODE_MASK)
{
case WR1_RX_INT_FIRST:
if (m_rx_first)
{
if (m_rx_first || (rx_error & (RR1_RX_OVERRUN_ERROR | RR1_CRC_FRAMING_ERROR)))
m_uart->trigger_interrupt(m_index, INT_RECEIVE);
m_rx_first = 0;
}
m_rx_first = 0;
break;
case WR1_RX_INT_ALL_PARITY:
case WR1_RX_INT_ALL:
m_uart->trigger_interrupt(m_index, INT_RECEIVE);
m_uart->trigger_interrupt(m_index, (rx_error & (RR1_CRC_FRAMING_ERROR | RR1_PARITY_ERROR)) ? INT_SPECIAL : INT_RECEIVE);
break;
case WR1_RX_INT_ALL:
m_uart->trigger_interrupt(m_index, (rx_error & RR1_CRC_FRAMING_ERROR) ? INT_SPECIAL : INT_RECEIVE);
break;
default:
LOG("No interrupt triggered\n");
}
}
@ -1403,18 +1468,63 @@ WRITE_LINE_MEMBER( z80sio_channel::sync_w )
WRITE_LINE_MEMBER( z80sio_channel::rxc_w )
{
//LOG("Z80SIO \"%s\" Channel %c : Receiver Clock Pulse\n", owner()->tag(), m_index + 'A');
int clocks = get_clock_mode();
if (clocks == 1)
rx_clock_w(state);
else if(state)
if ((m_wr3 & WR3_RX_ENABLE) && state && !m_rx_clock)
{
rx_clock_w(m_rx_clock < clocks/2);
// RxD sampled on rising edge
int const clocks = get_clock_mode() - 1;
m_rx_clock++;
if (m_rx_clock == clocks)
m_rx_clock = 0;
if (!m_rx_bit)
{
// look for start bit
if (m_rxd)
{
// line idle
m_rx_count = (std::max)(m_rx_count, (clocks / 2) + 1) - 1;
}
else if (!m_rx_count)
{
// half a bit period expired, start shifting bits
m_rx_count = clocks;
++m_rx_bit;
m_rx_sr = ~uint16_t(0U);
}
else
{
// ensure start bit lasts long enough
--m_rx_count;
}
}
else if (!m_rx_count)
{
// sample a data/parity/stop bit
if (!m_rxd)
m_rx_sr &= ~uint16_t(1U << (m_rx_bit - 1));
if ((get_rx_word_length() + ((m_wr4 & WR4_PARITY_ENABLE) ? 1 : 0) + 1) == m_rx_bit)
{
// this is the stop bit - framing error adds a half bit period
m_rx_count = m_rxd ? 0 : clocks;
m_rx_bit = 0;
LOGRCV("%s() \"%s \"Channel %c Received Data %02x\n", FUNCNAME, owner()->tag(), 'A' + m_index, m_rx_sr & 0xff);
receive_data();
}
else
{
LOGBIT("%s() \"%s \"Channel %c Received Data Bit %d\n", FUNCNAME, owner()->tag(), 'A' + m_index, m_rxd);
// wait a whole bit period for the next bit
m_rx_count = clocks;
++m_rx_bit;
}
}
else
{
// bit period hasn't expired
--m_rx_count;
}
}
m_rx_clock = state;
}
@ -1444,8 +1554,8 @@ WRITE_LINE_MEMBER( z80sio_channel::txc_w )
//-------------------------------------------------
void z80sio_channel::update_serial()
{
int data_bit_count = get_rx_word_length();
stop_bits_t stop_bits = get_stop_bits();
int const data_bit_count = get_rx_word_length();
stop_bits_t const stop_bits = get_stop_bits();
parity_t parity;
LOG("%s\n", FUNCNAME);
@ -1463,20 +1573,7 @@ void z80sio_channel::update_serial()
set_data_frame(1, data_bit_count, parity, stop_bits);
int clocks = get_clock_mode();
if (m_rxc > 0)
{
LOG("- RxC:%d/%d = %d\n", m_rxc, clocks, m_rxc / clocks);
set_rcv_rate(m_rxc / clocks);
}
if (m_txc > 0)
{
LOG("- TxC:%d/%d = %d\n", m_txc, clocks, m_txc / clocks);
set_tra_rate(m_txc / clocks);
}
receive_register_reset(); // if stop bits is changed from 0, receive register has to be reset
receive_reset(); // if stop bits is changed from 0, receive register has to be reset
}
@ -1493,14 +1590,3 @@ void z80sio_channel::set_dtr(int state)
else
m_uart->m_out_dtrb_cb(m_dtr);
}
//-------------------------------------------------
// write_rx -
//-------------------------------------------------
WRITE_LINE_MEMBER(z80sio_channel::write_rx)
{
m_rxd = state;
//only use rx_w when self-clocked
if(m_rxc)
device_serial_interface::rx_w(state);
}

View File

@ -67,9 +67,6 @@
#define SIO_CHANB_TAG "chb"
/* Generic macros */
#define MCFG_Z80SIO_OFFSETS(_rxa, _txa, _rxb, _txb) \
z80sio_device::configure_channels(*device, _rxa, _txa, _rxb, _txb);
#define MCFG_Z80SIO_OUT_INT_CB(_devcb) \
devcb = &z80sio_device::set_out_int_callback(*device, DEVCB_##_devcb);
@ -129,23 +126,16 @@
class z80sio_device;
class z80sio_channel : public device_t,
public device_serial_interface
class z80sio_channel : public device_t, public device_serial_interface
{
friend class z80sio_device;
public:
z80sio_channel(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
// device_serial_interface overrides
virtual void tra_callback() override;
virtual void tra_complete() override;
virtual void rcv_callback() override;
virtual void rcv_complete() override;
// read register handlers
uint8_t do_sioreg_rr0();
@ -169,18 +159,17 @@ public:
uint8_t data_read();
void data_write(uint8_t data);
void receive_data(uint8_t data);
void receive_reset();
void receive_data();
void advance_rx_fifo();
DECLARE_WRITE_LINE_MEMBER( write_rx );
DECLARE_WRITE_LINE_MEMBER( write_rx ) { m_rxd = state; }
DECLARE_WRITE_LINE_MEMBER( cts_w );
DECLARE_WRITE_LINE_MEMBER( dcd_w );
DECLARE_WRITE_LINE_MEMBER( rxc_w );
DECLARE_WRITE_LINE_MEMBER( txc_w );
DECLARE_WRITE_LINE_MEMBER( sync_w );
int m_rxc;
int m_txc;
// Register state
// read registers enum
uint8_t m_rr0; // REG_RR0_STATUS
@ -292,11 +281,11 @@ protected:
WR1_RX_INT_MODE_MASK = 0x18,
WR1_RX_INT_DISABLE = 0x00,
WR1_RX_INT_FIRST = 0x08,
WR1_RX_INT_ALL_PARITY = 0x10, // not supported
WR1_RX_INT_ALL_PARITY = 0x10,
WR1_RX_INT_ALL = 0x18,
WR1_WRDY_ON_RX_TX = 0x20, // not supported
WR1_WRDY_FUNCTION = 0x40, // not supported
WR1_WRDY_ENABLE = 0x80 // not supported
WR1_WRDY_ON_RX_TX = 0x20,
WR1_WRDY_FUNCTION = 0x40, // WAIT not supported
WR1_WRDY_ENABLE = 0x80
};
enum
@ -366,10 +355,16 @@ protected:
WR5_DTR = 0x80
};
// device-level overrides
virtual void device_resolve_objects() override;
virtual void device_start() override;
virtual void device_reset() override;
void update_serial();
void update_rts();
void set_dtr(int state);
void set_rts(int state);
void set_ready(bool ready);
int get_clock_mode();
stop_bits_t get_stop_bits();
@ -377,11 +372,15 @@ protected:
int get_tx_word_length();
// receiver state
util::fifo<uint8_t, 3> m_rx_data_fifo;
util::fifo<uint8_t, 3> m_rx_error_fifo;
uint8_t m_rx_error; // current receive error
int m_rx_fifo_depth;
uint32_t m_rx_data_fifo;
uint32_t m_rx_error_fifo;
int m_rx_clock; // receive clock line state
int m_rx_count; // clocks until next sample
int m_rx_bit; // receive data bit (0 = start bit, 1 = LSB, etc.)
uint16_t m_rx_sr; // receive shift register
int m_rx_clock; // receive clock pulse count
int m_rx_first; // first character received
int m_rx_break; // receive break condition
uint8_t m_rx_rr0_latch; // read register 0 latched
@ -439,15 +438,6 @@ public:
dev.m_cputag = tag;
}
static void configure_channels(device_t &device, int rxa, int txa, int rxb, int txb)
{
z80sio_device &dev = downcast<z80sio_device &>(device);
dev.m_rxca = rxa;
dev.m_txca = txa;
dev.m_rxcb = rxb;
dev.m_txcb = txb;
}
DECLARE_READ8_MEMBER( cd_ba_r );
DECLARE_WRITE8_MEMBER( cd_ba_w );
DECLARE_READ8_MEMBER( ba_cd_r );
@ -484,6 +474,7 @@ protected:
z80sio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant);
// device-level overrides
virtual void device_resolve_objects() override;
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override;
@ -519,11 +510,6 @@ protected:
required_device<z80sio_channel> m_chanB;
// internal state
int m_rxca;
int m_txca;
int m_rxcb;
int m_txcb;
devcb_write_line m_out_txda_cb;
devcb_write_line m_out_dtra_cb;
devcb_write_line m_out_rtsa_cb;

View File

@ -6065,8 +6065,10 @@ uint8_t saturn_state::get_odd_bit( void )
int saturn_state::get_vblank_start_position( void )
{
/* TODO: test says that second setting happens at 241, might need further investigation ... */
const int d_vres[4] = { 240, 240, 256, 256 };
// TODO: test says that second setting happens at 241, might need further investigation ...
// also first one happens at 240, but needs mods in SMPC otherwise we get 2 credits at startup in shanhigw and sokyugrt
// (i.e. make a special screen device that handles this for us)
const int d_vres[4] = { 224, 240, 256, 256 };
int vres_mask;
int vblank_line;

View File

@ -33,6 +33,7 @@ todo:
- vdp engine -- make run at correct speed
- vr/hr/fh flags: double-check all of that
- make vdp engine work in exp. ram
- fix save state support
*/
#include "emu.h"

View File

@ -450,10 +450,11 @@ bool device_t::findit(bool isvalidation) const
}
//-------------------------------------------------
// start - start a device
// resolve_objects - find objects referenced in
// configuration
//-------------------------------------------------
void device_t::start()
void device_t::resolve_objects()
{
// prepare the logerror buffer
if (m_machine->allow_logging())
@ -463,6 +464,20 @@ void device_t::start()
if (!findit(false))
throw emu_fatalerror("Missing some required objects, unable to proceed");
// allow implementation to do additional setup
device_resolve_objects();
}
//-------------------------------------------------
// start - start a device
//-------------------------------------------------
void device_t::start()
{
// prepare the logerror buffer
if (m_machine->allow_logging())
m_string_buffer.reserve(1024);
// let the interfaces do their pre-work
for (device_interface &intf : interfaces())
intf.interface_pre_start();
@ -680,6 +695,18 @@ void device_t::device_reset_after_children()
}
//-------------------------------------------------
// device_resolve_objects - resolve objects that
// may be needed for other devices to set
// initial conditions at start time
//-------------------------------------------------
void device_t::device_resolve_objects()
{
// do nothing by default
}
//-------------------------------------------------
// device_stop - clean up anything that needs to
// happen before the running_machine goes away

View File

@ -541,6 +541,7 @@ public:
protected:
// miscellaneous helpers
void set_machine(running_machine &machine);
void resolve_objects();
void start();
void stop();
void debug_setup();
@ -557,6 +558,7 @@ protected:
virtual ioport_constructor device_input_ports() const;
virtual void device_config_complete();
virtual void device_validity_check(validity_checker &valid) const ATTR_COLD;
virtual void device_resolve_objects() ATTR_COLD;
virtual void device_start() ATTR_COLD = 0;
virtual void device_stop() ATTR_COLD;
virtual void device_reset() ATTR_COLD;

View File

@ -325,35 +325,27 @@ INTERRUPT_GEN_MEMBER( driver_device::nmi_line_assert ) { device.execute().set_i
//-------------------------------------------------
INTERRUPT_GEN_MEMBER( driver_device::irq0_line_hold ) { device.execute().set_input_line(0, HOLD_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq0_line_pulse ) { generic_pulse_irq_line(device.execute(), 0, 1); }
INTERRUPT_GEN_MEMBER( driver_device::irq0_line_assert ) { device.execute().set_input_line(0, ASSERT_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq1_line_hold ) { device.execute().set_input_line(1, HOLD_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq1_line_pulse ) { generic_pulse_irq_line(device.execute(), 1, 1); }
INTERRUPT_GEN_MEMBER( driver_device::irq1_line_assert ) { device.execute().set_input_line(1, ASSERT_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq2_line_hold ) { device.execute().set_input_line(2, HOLD_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq2_line_pulse ) { generic_pulse_irq_line(device.execute(), 2, 1); }
INTERRUPT_GEN_MEMBER( driver_device::irq2_line_assert ) { device.execute().set_input_line(2, ASSERT_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq3_line_hold ) { device.execute().set_input_line(3, HOLD_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq3_line_pulse ) { generic_pulse_irq_line(device.execute(), 3, 1); }
INTERRUPT_GEN_MEMBER( driver_device::irq3_line_assert ) { device.execute().set_input_line(3, ASSERT_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq4_line_hold ) { device.execute().set_input_line(4, HOLD_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq4_line_pulse ) { generic_pulse_irq_line(device.execute(), 4, 1); }
INTERRUPT_GEN_MEMBER( driver_device::irq4_line_assert ) { device.execute().set_input_line(4, ASSERT_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq5_line_hold ) { device.execute().set_input_line(5, HOLD_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq5_line_pulse ) { generic_pulse_irq_line(device.execute(), 5, 1); }
INTERRUPT_GEN_MEMBER( driver_device::irq5_line_assert ) { device.execute().set_input_line(5, ASSERT_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq6_line_hold ) { device.execute().set_input_line(6, HOLD_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq6_line_pulse ) { generic_pulse_irq_line(device.execute(), 6, 1); }
INTERRUPT_GEN_MEMBER( driver_device::irq6_line_assert ) { device.execute().set_input_line(6, ASSERT_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq7_line_hold ) { device.execute().set_input_line(7, HOLD_LINE); }
INTERRUPT_GEN_MEMBER( driver_device::irq7_line_pulse ) { generic_pulse_irq_line(device.execute(), 7, 1); }
INTERRUPT_GEN_MEMBER( driver_device::irq7_line_assert ) { device.execute().set_input_line(7, ASSERT_LINE); }

View File

@ -138,35 +138,27 @@ public:
INTERRUPT_GEN_MEMBER( nmi_line_assert );
INTERRUPT_GEN_MEMBER( irq0_line_hold );
INTERRUPT_GEN_MEMBER( irq0_line_pulse );
INTERRUPT_GEN_MEMBER( irq0_line_assert );
INTERRUPT_GEN_MEMBER( irq1_line_hold );
INTERRUPT_GEN_MEMBER( irq1_line_pulse );
INTERRUPT_GEN_MEMBER( irq1_line_assert );
INTERRUPT_GEN_MEMBER( irq2_line_hold );
INTERRUPT_GEN_MEMBER( irq2_line_pulse );
INTERRUPT_GEN_MEMBER( irq2_line_assert );
INTERRUPT_GEN_MEMBER( irq3_line_hold );
INTERRUPT_GEN_MEMBER( irq3_line_pulse );
INTERRUPT_GEN_MEMBER( irq3_line_assert );
INTERRUPT_GEN_MEMBER( irq4_line_hold );
INTERRUPT_GEN_MEMBER( irq4_line_pulse );
INTERRUPT_GEN_MEMBER( irq4_line_assert );
INTERRUPT_GEN_MEMBER( irq5_line_hold );
INTERRUPT_GEN_MEMBER( irq5_line_pulse );
INTERRUPT_GEN_MEMBER( irq5_line_assert );
INTERRUPT_GEN_MEMBER( irq6_line_hold );
INTERRUPT_GEN_MEMBER( irq6_line_pulse );
INTERRUPT_GEN_MEMBER( irq6_line_assert );
INTERRUPT_GEN_MEMBER( irq7_line_hold );
INTERRUPT_GEN_MEMBER( irq7_line_pulse );
INTERRUPT_GEN_MEMBER( irq7_line_assert );

View File

@ -133,6 +133,7 @@ enum
XTAL_11_8MHz = 11800000, /* IBM PC Music Feature Card */
XTAL_11_9808MHz = 11980800, /* Luxor ABC 80 */
XTAL_12MHz = 12000000, /* Extremely common, used on 100's of PCBs */
XTAL_12_0576MHz = 12057600, /* Poly 1 (38400 * 314) */
XTAL_12_096MHz = 12096000, /* Some early 80's Atari games */
XTAL_12_288MHz = 12288000, /* Sega Model 3 digital audio board */
XTAL_12_432MHz = 12432000, /* Kaneko Fly Boy/Fast Freddie Hardware */
@ -150,6 +151,7 @@ enum
XTAL_13_5168MHz = 13516800, /* Kontron KDT6 */
XTAL_14MHz = 14000000,
XTAL_14_112MHz = 14112000, /* Timex/Sinclair TS2068 */
XTAL_14_192640MHz = 14192640, /* Reported by Central Data 2650 document, true xtal unchecked on PCB */
XTAL_14_3MHz = 14300000, /* Agat-7 */
XTAL_14_314MHz = 14314000, /* Taito TTL Board */
XTAL_14_31818MHz = 14318181, /* Extremely common, used on 100's of PCBs (4x NTSC subcarrier) */
@ -161,7 +163,7 @@ enum
XTAL_15_468MHz = 15468480, /* Bank Panic h/w, Sega G80 */
XTAL_15_8976MHz = 15897600, /* IAI Swyft */
XTAL_15_92MHz = 15920000, /* HP Integral PC */
XTAL_15_9744MHz = 15974400, /* Osborne 1 */
XTAL_15_9744MHz = 15974400, /* Osborne 1 (9600 * 52 * 32) */
XTAL_16MHz = 16000000, /* Extremely common, used on 100's of PCBs */
XTAL_16_384MHz = 16384000,
XTAL_16_4MHz = 16400000, /* MS 6102 */

View File

@ -974,6 +974,10 @@ void running_machine::logfile_callback(const char *buffer)
void running_machine::start_all_devices()
{
// resolve objects first to avoid messy start order dependencies
for (device_t &device : device_iterator(root_device()))
device.resolve_objects();
m_dummy_space.start();
// iterate through the devices

View File

@ -129,10 +129,9 @@ void n8080_state::spacefev_sound_pins_changed()
{
start_mono_flop(2, attotime::from_usec(550 * 22 * 33));
}
if (changes & ((1 << 0x2) | (1 << 0x3) | (1 << 0x5)))
{
generic_pulse_irq_line(*m_audiocpu, 0, 2);
}
bool irq_active = (~m_curr_sound_pins & ((1 << 0x2) | (1 << 0x3) | (1 << 0x5))) != 0;
m_audiocpu->set_input_line(INPUT_LINE_IRQ0, irq_active ? ASSERT_LINE : CLEAR_LINE);
}
@ -152,25 +151,22 @@ void n8080_state::sheriff_sound_pins_changed()
{
start_mono_flop(1, attotime::from_usec(550 * 33 * 33));
}
if (changes & ((1 << 0x2) | (1 << 0x3) | (1 << 0x5)))
{
generic_pulse_irq_line(*m_audiocpu, 0, 2);
}
bool irq_active = (~m_curr_sound_pins & ((1 << 0x2) | (1 << 0x3) | (1 << 0x5))) != 0;
m_audiocpu->set_input_line(INPUT_LINE_IRQ0, irq_active ? ASSERT_LINE : CLEAR_LINE);
}
void n8080_state::helifire_sound_pins_changed()
{
uint16_t changes = ~m_curr_sound_pins & m_prev_sound_pins;
//uint16_t changes = ~m_curr_sound_pins & m_prev_sound_pins;
/* ((m_curr_sound_pins >> 0xa) & 1) not emulated */
/* ((m_curr_sound_pins >> 0xb) & 1) not emulated */
/* ((m_curr_sound_pins >> 0xc) & 1) not emulated */
if (changes & (1 << 6))
{
generic_pulse_irq_line(*m_audiocpu, 0, 2);
}
bool irq_active = (~m_curr_sound_pins & (1 << 6)) != 0;
m_audiocpu->set_input_line(INPUT_LINE_IRQ0, irq_active ? ASSERT_LINE : CLEAR_LINE);
}

48
src/mame/drivers/acd.cpp Normal file
View File

@ -0,0 +1,48 @@
// license:BSD-3-Clause
// copyright-holders:
/***********************************************************************************************************************************
2017-10-28 Skeleton
Advanced Computer Design computer. CPU is WD9000. Some details at bitsavers.
************************************************************************************************************************************/
#include "emu.h"
//#include "cpu/mcs51/mcs51.h"
class acd_state : public driver_device
{
public:
acd_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
// , maincpu(*this, "maincpu")
{ }
protected:
// required_device<i80c52_device> maincpu;
};
static INPUT_PORTS_START( acd )
INPUT_PORTS_END
//static ADDRESS_MAP_START( prg_map, AS_PROGRAM, 8, acd_state )
//ADDRESS_MAP_END
static MACHINE_CONFIG_START( acd )
MACHINE_CONFIG_END
ROM_START( acd )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "d9_cpu_c4_rev_2.4.2.bin", 0x000000, 0x000200, CRC(481b8d65) SHA1(b766b22282cd321c707c18137ddb4c133fd0ede4) )
ROM_LOAD( "d9_cpu_c5.bin", 0x000000, 0x000200, CRC(481b8d65) SHA1(b766b22282cd321c707c18137ddb4c133fd0ede4) )
ROM_LOAD( "dr.bin", 0x000000, 0x000020, CRC(a0baab49) SHA1(50b91bf00390c7923b8e03975c1c6fea3c153cd7) )
ROM_LOAD( "btwph.bin", 0x000000, 0x000020, CRC(a48a80d1) SHA1(60490d1dbd01441ebb9a9860a98131d628d5e3f9) )
ROM_LOAD( "btwpl.bin", 0x000000, 0x000020, CRC(0f6fb759) SHA1(7ab376865faf57841960bfcfd3e038219b5b66b6) )
ROM_LOAD( "d7_cpu_b14_rev_1.2.bin", 0x000000, 0x000200, CRC(51b2bb18) SHA1(533ef263146c1e03e5ef30e792a669293f31a1d3) )
ROM_LOAD( "d7_cpu_c4_rev_2.4.2.bin", 0x000000, 0x000200, CRC(b1b59b5f) SHA1(5c199836a59da78ab404de663d306d0cc10aaf83) )
ROM_LOAD( "d7_cpu_c5.bin", 0x000000, 0x000200, CRC(7db9ecca) SHA1(535a34608e59c72d13434e3fc2892db9841a0f60) )
ROM_LOAD( "d9_cpu_b14_rev_1.2.bin", 0x000000, 0x000200, CRC(5572ff8b) SHA1(9e8158c338b2798f7fb1d9c4fa6dd99592d2fae3) )
ROM_END
COMP( 198?, acd, 0, 0, acd, acd, acd_state, 0, "Advanced Computer Design", "unknown ACD computer", MACHINE_IS_SKELETON )

View File

@ -25,6 +25,7 @@
#include "emu.h"
#include "bus/rs232/rs232.h"
//#include "bus/s100/s100.h"
#include "cpu/i8085/i8085.h"
#include "machine/6850acia.h"
#include "machine/clock.h"

View File

@ -15,6 +15,7 @@
#include "cpu/z80/z80daisy.h"
#include "machine/z80ctc.h"
#include "machine/z80pio.h"
#include "machine/z80sio.h"
#include "machine/z80dart.h"
#include "machine/z80dma.h"
#include "machine/wd_fdc.h"
@ -95,7 +96,7 @@ static ADDRESS_MAP_START(altos5_io, AS_IO, 8, altos5_state)
AM_RANGE(0x14, 0x17) AM_WRITE(port14_w)
AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("dart", z80dart_device, ba_cd_r, ba_cd_w)
//AM_RANGE(0x20, 0x23) // Hard drive
AM_RANGE(0x2c, 0x2f) AM_DEVREADWRITE("sio", z80sio0_device, ba_cd_r, ba_cd_w)
AM_RANGE(0x2c, 0x2f) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w)
ADDRESS_MAP_END
/* Input ports */
@ -380,29 +381,28 @@ static MACHINE_CONFIG_START( altos5 )
// Channel B - printer
MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_ADD("sio", Z80SIO0, XTAL_8MHz / 2)
MCFG_DEVICE_ADD("sio", Z80SIO, XTAL_8MHz / 2)
// Channel A - console #2
// WRDY connects to (altos5_state, fdc_intrq_w)
// Channel B - console #1
MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd))
MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr))
MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts))
MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_Z80SIO_OUT_TXDB_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd))
MCFG_Z80SIO_OUT_DTRB_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr))
MCFG_Z80SIO_OUT_RTSB_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts))
MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_8MHz / 2)
MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("sio", z80dart_device, rxtxcb_w)) // SIO Ch B
MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("sio", z80sio_device, rxtxcb_w)) // SIO Ch B
MCFG_Z80CTC_ZC1_CB(DEVWRITELINE("dart", z80dart_device, txca_w)) // Z80DART Ch A, SIO Ch A
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("dart" ,z80dart_device, rxca_w))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("sio" ,z80sio0_device, txca_w))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("sio" ,z80sio0_device, rxca_w))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("sio" ,z80sio_device, txca_w))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("sio" ,z80sio_device, rxca_w))
MCFG_Z80CTC_ZC2_CB(DEVWRITELINE("dart", z80dart_device, rxtxcb_w)) // Z80DART Ch B
MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "terminal")
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sio", z80sio0_device, rxb_w))
MCFG_RS232_DCD_HANDLER(DEVWRITELINE("sio", z80sio0_device, dcdb_w))
MCFG_RS232_RI_HANDLER(DEVWRITELINE("sio", z80sio0_device, rib_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("sio", z80sio0_device, ctsb_w))
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sio", z80sio_device, rxb_w))
MCFG_RS232_DCD_HANDLER(DEVWRITELINE("sio", z80sio_device, dcdb_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("sio", z80sio_device, ctsb_w))
MCFG_FD1797_ADD("fdc", XTAL_8MHz / 8)
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(altos5_state, fdc_intrq_w))

View File

@ -0,0 +1,40 @@
// license:BSD-3-Clause
// copyright-holders:
/***********************************************************************************************************************************
2017-10-29 Skeleton
Motorola AMPS Car Phone.
************************************************************************************************************************************/
#include "emu.h"
//#include "cpu/mcs51/mcs51.h"
class ampscarp_state : public driver_device
{
public:
ampscarp_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
// , maincpu(*this, "maincpu")
{ }
protected:
// required_device<i80c52_device> maincpu;
};
static INPUT_PORTS_START( ampscarp )
INPUT_PORTS_END
//static ADDRESS_MAP_START( prg_map, AS_PROGRAM, 8, ampscarp_state )
//ADDRESS_MAP_END
static MACHINE_CONFIG_START( ampscarp )
MACHINE_CONFIG_END
ROM_START( ampscarp )
ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD( "motorola_amps_car_phone_dump.bin", 0x0000, 0x20000, CRC(677ec85e) SHA1(219611b6c4b16461705e2df61d79a0f7ac8f529f) )
ROM_END
COMP( 1998, ampscarp, 0, 0, ampscarp, ampscarp, ampscarp_state, 0, "Motorola", "AMPS Car Phone", MACHINE_IS_SKELETON )

View File

@ -78,6 +78,7 @@ II Plus: RAM options reduced to 16/32/48 KB.
#include "bus/a2bus/ramcard16k.h"
#include "bus/a2bus/timemasterho.h"
#include "bus/a2bus/ssprite.h"
#include "bus/a2bus/ssbapple.h"
#include "screen.h"
#include "softlist.h"
@ -1321,6 +1322,7 @@ static SLOT_INTERFACE_START(apple2_cards)
SLOT_INTERFACE("ezcgi9938", A2BUS_EZCGI_9938) /* E-Z Color Graphics Interface (TMS9938) */
SLOT_INTERFACE("ezcgi9958", A2BUS_EZCGI_9958) /* E-Z Color Graphics Interface (TMS9958) */
SLOT_INTERFACE("ssprite", A2BUS_SSPRITE) /* Synetix SuperSprite Board */
SLOT_INTERFACE("ssbapple", A2BUS_SSBAPPLE) /* SSB Apple speech board */
// SLOT_INTERFACE("magicmusician", A2BUS_MAGICMUSICIAN) /* Magic Musician Card */
SLOT_INTERFACE_END

View File

@ -148,6 +148,7 @@ Address bus A0-A11 is Y0-Y11
#include "bus/a2bus/a2eext80col.h"
#include "bus/a2bus/a2eramworks3.h"
#include "bus/a2bus/ssprite.h"
#include "bus/a2bus/ssbapple.h"
#include "bus/rs232/rs232.h"
@ -3743,6 +3744,7 @@ static SLOT_INTERFACE_START(apple2_cards)
// SLOT_INTERFACE("magicmusician", A2BUS_MAGICMUSICIAN) /* Magic Musician Card */
SLOT_INTERFACE("pcxport", A2BUS_PCXPORTER) /* Applied Engineering PC Transporter */
SLOT_INTERFACE("ssprite", A2BUS_SSPRITE) /* Synetix SuperSprite Board */
SLOT_INTERFACE("ssbapple", A2BUS_SSBAPPLE) /* SSB Apple speech board */
SLOT_INTERFACE_END
static SLOT_INTERFACE_START(apple2eaux_cards)

View File

@ -20,6 +20,7 @@
#include "cpu/i8089/i8089.h"
#include "formats/apridisk.h"
#include "imagedev/flopdrv.h"
#include "machine/clock.h"
#include "machine/ram.h"
#include "machine/74153.h"
#include "machine/i8255.h"
@ -412,8 +413,10 @@ static MACHINE_CONFIG_START( apricot )
MCFG_TTL153_ZA_CB(DEVWRITELINE("ic15", z80sio_device, rxca_w))
MCFG_TTL153_ZB_CB(DEVWRITELINE("ic15", z80sio_device, txca_w))
MCFG_CLOCK_ADD("ic15_rxtxcb", XTAL_4MHz / 16)
MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("ic15", z80sio_device, rxtxcb_w))
MCFG_DEVICE_ADD("ic15", Z80SIO, XTAL_15MHz / 6)
MCFG_Z80SIO_OFFSETS(0, 0, XTAL_4MHz / 16, XTAL_4MHz / 16)
MCFG_Z80SIO_CPU("ic91")
MCFG_Z80SIO_OUT_TXDA_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd))
MCFG_Z80SIO_OUT_DTRA_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr))

View File

@ -35,7 +35,7 @@
#include "machine/input_merger.h"
#include "machine/wd_fdc.h"
#include "machine/z80ctc.h"
#include "machine/z80dart.h"
#include "machine/z80sio.h"
#include "screen.h"
@ -82,7 +82,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<z80ctc_device> m_ctc;
required_device<z80sio2_device> m_sio;
required_device<z80sio_device> m_sio;
required_device<wd2797_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
@ -266,7 +266,7 @@ static ADDRESS_MAP_START( act_f1_io, AS_IO, 16, f1_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x000f) AM_WRITE8(system_w, 0xffff)
AM_RANGE(0x0010, 0x0017) AM_DEVREADWRITE8(Z80CTC_TAG, z80ctc_device, read, write, 0x00ff)
AM_RANGE(0x0020, 0x0027) AM_DEVREADWRITE8(Z80SIO2_TAG, z80sio2_device, ba_cd_r, ba_cd_w, 0x00ff)
AM_RANGE(0x0020, 0x0027) AM_DEVREADWRITE8(Z80SIO2_TAG, z80sio_device, ba_cd_r, ba_cd_w, 0x00ff)
// AM_RANGE(0x0030, 0x0031) AM_WRITE8(ctc_ack_w, 0x00ff)
AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8(WD2797_TAG, wd2797_device, read, write, 0x00ff)
// AM_RANGE(0x01e0, 0x01ff) winchester
@ -353,8 +353,8 @@ static MACHINE_CONFIG_START( act_f1 )
/* Devices */
MCFG_DEVICE_ADD(APRICOT_KEYBOARD_TAG, APRICOT_KEYBOARD, 0)
MCFG_DEVICE_ADD(Z80SIO2_TAG, Z80SIO2, 2500000)
MCFG_Z80DART_OUT_INT_CB(DEVWRITELINE("irqs", input_merger_device, in_w<0>))
MCFG_DEVICE_ADD(Z80SIO2_TAG, Z80SIO, 2500000)
MCFG_Z80SIO_OUT_INT_CB(DEVWRITELINE("irqs", input_merger_device, in_w<0>))
MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, 2500000)
MCFG_Z80CTC_INTR_CB(DEVWRITELINE("irqs", input_merger_device, in_w<1>))
@ -362,7 +362,7 @@ static MACHINE_CONFIG_START( act_f1 )
MCFG_Z80CTC_ZC2_CB(WRITELINE(f1_state, ctc_z2_w))
MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(Z80SIO2_TAG, z80dart_device, ctsa_w))
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(Z80SIO2_TAG, z80sio_device, ctsa_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)

View File

@ -35,7 +35,7 @@
#include "machine/pit8253.h"
#include "machine/ram.h"
#include "machine/wd_fdc.h"
#include "machine/z80dart.h"
#include "machine/z80sio.h"
#include "sound/sn76496.h"
#include "video/mc6845.h"
#include "screen.h"
@ -111,7 +111,7 @@ public:
required_device<am9517a_device> m_dmac;
required_device<pic8259_device> m_pic;
required_device<pit8253_device> m_pit;
required_device<z80dart_device> m_sio;
required_device<z80sio_device> m_sio;
required_device<wd2797_device> m_fdc;
required_device<mc6845_device> m_crtc;
required_device<ram_device> m_ram;
@ -435,7 +435,7 @@ static ADDRESS_MAP_START( fp_io, AS_IO, 16, fp_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000, 0x007) AM_DEVREADWRITE8(WD2797_TAG, wd2797_device, read, write, 0x00ff)
AM_RANGE(0x008, 0x00f) AM_DEVREADWRITE8(I8253A5_TAG, pit8253_device, read, write, 0x00ff)
AM_RANGE(0x018, 0x01f) AM_DEVREADWRITE8(Z80SIO0_TAG, z80sio0_device, ba_cd_r, ba_cd_w, 0x00ff)
AM_RANGE(0x018, 0x01f) AM_DEVREADWRITE8(Z80SIO0_TAG, z80sio_device, ba_cd_r, ba_cd_w, 0x00ff)
AM_RANGE(0x020, 0x021) AM_DEVWRITE8("cent_data_out", output_latch_device, write, 0x00ff)
AM_RANGE(0x022, 0x023) AM_WRITE8(pint_clr_w, 0x00ff)
AM_RANGE(0x024, 0x025) AM_READ8(prtr_snd_r, 0x00ff)
@ -634,8 +634,8 @@ static MACHINE_CONFIG_START( fp )
MCFG_PIT8253_CLK1(2000000)
MCFG_PIT8253_CLK2(2000000)
MCFG_DEVICE_ADD(Z80SIO0_TAG, Z80SIO0, 2500000)
MCFG_Z80DART_OUT_INT_CB(DEVWRITELINE(I8259A_TAG, pic8259_device, ir4_w))
MCFG_DEVICE_ADD(Z80SIO0_TAG, Z80SIO, 2500000)
MCFG_Z80SIO_OUT_INT_CB(DEVWRITELINE(I8259A_TAG, pic8259_device, ir4_w))
MCFG_WD2797_ADD(WD2797_TAG, 2000000)
MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE(I8259A_TAG, pic8259_device, ir1_w))

View File

@ -43,11 +43,23 @@
* nnnnY - I/O port receive (nnnn = address of data loaded)
* Z - Auto Disk Test (1Z for drive B)
*
* For the 8086 board (will display an 'x' if the 8086 board is not installed):
* [ - 8086 RAM Test
* ] - SCC Test
* ( - GPIB Listener/Talker Test
* ) - GPIB Controller Test
*
* The Attache 8:16 is an upgraded Attache adding an 8086 (+ optional 8087) board with its own 256kB of RAM,
* and optionally a GPIB controller (TMS9914A) and serial synchronous port (Z8530 SCC). It also has modifications
* to the main Z80 board, specifically the display circuitry, adding a high-resolution display, and replacing
* the character ROM with a larger ROM containing an IBM character set.
* It effectively allows the Attache to run MS-DOS and use a 10MB hard disk.
*
* TODO:
* - Keyboard repeat
* - Get at least some of the system tests to pass
* - and probably lots more I've forgotten, too.
* - implement Z80-8086 comms on the 8:16
*
*/
@ -61,8 +73,9 @@
#include "machine/ram.h"
#include "machine/upd765.h"
#include "machine/z80ctc.h"
#include "machine/z80dart.h"
#include "machine/z80sio.h"
#include "machine/z80pio.h"
#include "cpu/i86/i86.h"
#include "sound/ay8910.h"
#include "video/tms9927.h"
@ -172,7 +185,7 @@ private:
required_device<msm5832_device> m_rtc;
required_device<ay8912_device> m_psg;
required_device<upd765a_device> m_fdc;
required_device<z80sio0_device> m_sio;
required_device<z80sio_device> m_sio;
required_device<z80pio_device> m_pio;
required_device<z80ctc_device> m_ctc;
required_device<tms9927_device> m_crtc;
@ -215,6 +228,17 @@ private:
uint8_t m_memmap;
};
class attache816_state : public attache_state
{
public:
attache816_state(const machine_config &mconfig, device_type type, const char *tag)
: attache_state(mconfig, type, tag),
m_extcpu(*this,"extcpu")
{ }
private:
required_device<cpu_device> m_extcpu;
};
// Attributes (based on schematics):
// bit 0 = ALT
// bit 1 = RW
@ -285,7 +309,7 @@ uint32_t attache_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma
for(scan=0;scan<10;scan++) // 10 scanlines per line
{
data = m_char_rom->base()[ch*16+scan];
data = m_char_rom->base()[(ch*16+scan)];
if((m_attr_ram[(vy*128)+x] & 0xc0) != 0xc0) // if not strikethrough
{
if(m_attr_ram[(vy*128)+x] & 0x40) // superscript
@ -743,7 +767,7 @@ WRITE_LINE_MEMBER( attache_state::fdc_dack_w )
{
}
static ADDRESS_MAP_START( attache_map , AS_PROGRAM, 8, attache_state)
static ADDRESS_MAP_START( attache_map, AS_PROGRAM, 8, attache_state)
AM_RANGE(0x0000,0x1fff) AM_RAMBANK("bank1")
AM_RANGE(0x2000,0x3fff) AM_RAMBANK("bank2")
AM_RANGE(0x4000,0x5fff) AM_RAMBANK("bank3")
@ -754,11 +778,11 @@ static ADDRESS_MAP_START( attache_map , AS_PROGRAM, 8, attache_state)
AM_RANGE(0xe000,0xffff) AM_RAMBANK("bank8")
ADDRESS_MAP_END
static ADDRESS_MAP_START( attache_io , AS_IO, 8, attache_state)
static ADDRESS_MAP_START( attache_io, AS_IO, 8, attache_state)
AM_RANGE(0xe0, 0xed) AM_DEVREADWRITE("dma",am9517a_device,read,write) AM_MIRROR(0xff00)
AM_RANGE(0xee, 0xee) AM_WRITE(display_command_w) AM_MIRROR(0xff00)
AM_RANGE(0xef, 0xef) AM_READWRITE(dma_mask_r, dma_mask_w) AM_MIRROR(0xff00)
AM_RANGE(0xe6, 0xe7) AM_DEVREADWRITE("sio",z80sio0_device,ba_cd_r, ba_cd_w) AM_MIRROR(0xff00)
AM_RANGE(0xe6, 0xe7) AM_DEVREADWRITE("sio",z80sio_device,ba_cd_r, ba_cd_w) AM_MIRROR(0xff00)
AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("ctc",z80ctc_device,read,write) AM_MIRROR(0xff00)
AM_RANGE(0xf8, 0xfb) AM_DEVREADWRITE("pio",z80pio_device,read_alt,write_alt) AM_MIRROR(0xff00)
AM_RANGE(0xfc, 0xfd) AM_DEVICE("fdc",upd765a_device,map) AM_MIRROR(0xff00)
@ -766,6 +790,33 @@ static ADDRESS_MAP_START( attache_io , AS_IO, 8, attache_state)
AM_RANGE(0xff, 0xff) AM_READWRITE(memmap_r, memmap_w) AM_MIRROR(0xff00)
ADDRESS_MAP_END
static ADDRESS_MAP_START( attache816_io, AS_IO, 8, attache_state)
// 0xb8 - 8086 comms port (connects to PPI port A)
// 0xb9 - Status/Control
AM_RANGE(0xe0, 0xed) AM_DEVREADWRITE("dma",am9517a_device,read,write) AM_MIRROR(0xff00)
AM_RANGE(0xee, 0xee) AM_WRITE(display_command_w) AM_MIRROR(0xff00)
AM_RANGE(0xef, 0xef) AM_READWRITE(dma_mask_r, dma_mask_w) AM_MIRROR(0xff00)
AM_RANGE(0xe6, 0xe7) AM_DEVREADWRITE("sio",z80sio_device,ba_cd_r, ba_cd_w) AM_MIRROR(0xff00)
AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("ctc",z80ctc_device,read,write) AM_MIRROR(0xff00)
AM_RANGE(0xf8, 0xfb) AM_DEVREADWRITE("pio",z80pio_device,read_alt,write_alt) AM_MIRROR(0xff00)
AM_RANGE(0xfc, 0xfd) AM_DEVICE("fdc",upd765a_device,map) AM_MIRROR(0xff00)
AM_RANGE(0xfe, 0xfe) AM_READWRITE(display_data_r, display_data_w) AM_SELECT(0xff00)
AM_RANGE(0xff, 0xff) AM_READWRITE(memmap_r, memmap_w) AM_MIRROR(0xff00)
ADDRESS_MAP_END
static ADDRESS_MAP_START( attache_x86_map, AS_PROGRAM, 16, attache_state)
AM_RANGE(0x00000, 0x3ffff) AM_RAM
AM_RANGE(0xb0000, 0xbffff) AM_NOP // triggers IRQ?
AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("x86bios",0x0000)
ADDRESS_MAP_END
static ADDRESS_MAP_START( attache_x86_io, AS_IO, 16, attache_state)
// 0x100-0x104 - i8255 PPI
// 0x108/9 - Set/Clear IBF IRQ enable
// 0x10c/d - Set/Clear OBF IRQ enable
AM_RANGE(0x104, 0x105) AM_NOP
ADDRESS_MAP_END
static INPUT_PORTS_START(attache)
PORT_START("row0")
PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("BS") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
@ -919,6 +970,71 @@ static MACHINE_CONFIG_START( attache )
MCFG_Z80_DAISY_CHAIN(attache_daisy_chain)
MCFG_QUANTUM_TIME(attotime::from_hz(60))
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(64)) /* not accurate */
MCFG_SCREEN_SIZE(640,240)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(attache_state, screen_update)
MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("ctc", z80ctc_device, trg2))
MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("psg", AY8912, XTAL_8MHz / 4)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MCFG_MSM5832_ADD("rtc",XTAL_32_768kHz)
MCFG_DEVICE_ADD("pio", Z80PIO, XTAL_8MHz/26)
MCFG_Z80PIO_IN_PA_CB(READ8(attache_state, pio_portA_r))
MCFG_Z80PIO_OUT_PA_CB(WRITE8(attache_state, pio_portA_w))
MCFG_Z80PIO_IN_PB_CB(READ8(attache_state, pio_portB_r))
MCFG_Z80PIO_OUT_PB_CB(WRITE8(attache_state, pio_portB_w))
MCFG_DEVICE_ADD("sio", Z80SIO, XTAL_8MHz / 26)
MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_8MHz / 4)
MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_ADD("dma", AM9517A, XTAL_8MHz / 4)
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(attache_state, hreq_w))
MCFG_AM9517A_OUT_EOP_CB(WRITELINE(attache_state, eop_w))
MCFG_AM9517A_IN_MEMR_CB(READ8(attache_state, dma_mem_r))
MCFG_AM9517A_OUT_MEMW_CB(WRITE8(attache_state, dma_mem_w))
MCFG_AM9517A_IN_IOR_0_CB(READ8(attache_state, fdc_dma_r))
MCFG_AM9517A_OUT_IOW_0_CB(WRITE8(attache_state, fdc_dma_w))
// MCFG_AM9517A_OUT_DACK_0_CB(WRITELINE(attache_state, fdc_dack_w))
MCFG_UPD765A_ADD("fdc", true, true)
MCFG_UPD765_INTRQ_CALLBACK(DEVWRITELINE("ctc", z80ctc_device, trg3))
MCFG_UPD765_DRQ_CALLBACK(DEVWRITELINE("dma", am9517a_device, dreq0_w)) MCFG_DEVCB_INVERT
MCFG_FLOPPY_DRIVE_ADD("fdc:0", attache_floppies, "525dd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", attache_floppies, "525dd", floppy_image_device::default_floppy_formats)
MCFG_DEVICE_ADD("crtc", TMS9927, 12324000)
MCFG_TMS9927_CHAR_WIDTH(8)
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("64k")
MCFG_SOFTWARE_LIST_ADD("disk_list","attache")
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( attache816 )
MCFG_CPU_ADD("maincpu",Z80,XTAL_8MHz / 2)
MCFG_CPU_PROGRAM_MAP(attache_map)
MCFG_CPU_IO_MAP(attache816_io)
MCFG_Z80_DAISY_CHAIN(attache_daisy_chain)
MCFG_QUANTUM_TIME(attotime::from_hz(60))
MCFG_CPU_ADD("extcpu",I8086,XTAL_24MHz / 3)
MCFG_CPU_PROGRAM_MAP(attache_x86_map)
MCFG_CPU_IO_MAP(attache_x86_io)
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
MCFG_SCREEN_REFRESH_RATE(60)
@ -942,7 +1058,7 @@ static MACHINE_CONFIG_START( attache )
MCFG_Z80PIO_IN_PB_CB(READ8(attache_state, pio_portB_r))
MCFG_Z80PIO_OUT_PB_CB(WRITE8(attache_state, pio_portB_w))
MCFG_DEVICE_ADD("sio", Z80SIO0, XTAL_8MHz / 26)
MCFG_DEVICE_ADD("sio", Z80SIO, XTAL_8MHz / 26)
MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_8MHz / 4)
MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
@ -978,10 +1094,12 @@ ROM_START( attache )
ROM_FILL(0x0000,0x10000,0x00)
ROM_REGION(0x1000, "boot", 0)
ROM_SYSTEM_BIOS(0, "u252revg", "Boot Rev.G")
ROMX_LOAD("u252revg.bin", 0x0000, 0x1000, CRC(113136b7) SHA1(845afd9ed2fd2b28c39921d8f2ba99e5295e0330), ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "u252revf", "Boot Rev.F")
ROMX_LOAD("u252revf.bin", 0x0000, 0x1000, CRC(b49eb3b2) SHA1(5b1b348301b2f76b1f250ba68bb8733fc15d18c2), ROM_BIOS(2))
ROM_SYSTEM_BIOS(0, "u252revh", "Boot Rev.H")
ROMX_LOAD("u252revh.bin", 0x0000, 0x1000, CRC(a06f0bdf) SHA1(d526cf23bfe0f8f9bcde812cd864a2a4cbc8b673), ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "u252revg", "Boot Rev.G")
ROMX_LOAD("u252revg.bin", 0x0000, 0x1000, CRC(113136b7) SHA1(845afd9ed2fd2b28c39921d8f2ba99e5295e0330), ROM_BIOS(2))
ROM_SYSTEM_BIOS(2, "u252revf", "Boot Rev.F")
ROMX_LOAD("u252revf.bin", 0x0000, 0x1000, CRC(b49eb3b2) SHA1(5b1b348301b2f76b1f250ba68bb8733fc15d18c2), ROM_BIOS(3))
ROM_REGION(0x1000, "video", 0)
ROM_LOAD("u416vid.bin", 0x0000, 0x1000, CRC(e376ec59) SHA1(7b9e9db575e77ce2f479eb9ae913528e4f0d125d) )
@ -994,7 +1112,40 @@ ROM_START( attache )
ROM_REGION(0x100, "floppy", 0)
ROM_LOAD("u630.bin", 0x0000, 0x0100, CRC(f7a5c821) SHA1(fea07d9ac7e4e5f4f72aa7b2159deaedbd662ead) )
ROM_END
ROM_START( attache816 )
ROM_REGION(0x10000, "maincpu", 0)
ROM_FILL(0x0000,0x10000,0x00)
ROM_REGION(0x1000, "boot", 0)
ROM_SYSTEM_BIOS(0, "u252revh", "Boot Rev.H")
ROMX_LOAD("u252revh.bin", 0x0000, 0x1000, CRC(a06f0bdf) SHA1(d526cf23bfe0f8f9bcde812cd864a2a4cbc8b673), ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "u252revg", "Boot Rev.G")
ROMX_LOAD("u252revg.bin", 0x0000, 0x1000, CRC(113136b7) SHA1(845afd9ed2fd2b28c39921d8f2ba99e5295e0330), ROM_BIOS(2))
ROM_SYSTEM_BIOS(2, "u252revf", "Boot Rev.F")
ROMX_LOAD("u252revf.bin", 0x0000, 0x1000, CRC(b49eb3b2) SHA1(5b1b348301b2f76b1f250ba68bb8733fc15d18c2), ROM_BIOS(3))
ROM_REGION(0x2000, "video", 0)
ROM_LOAD("u416vid2.bin", 0x0000, 0x2000, CRC(0bdaed8d) SHA1(eee1e8505906e7c3587ecdf9dd9227a2a3b3cdd4) )
ROM_REGION(0x100, "attr", 0)
ROM_LOAD("u413.bin", 0x0000, 0x0100, CRC(5b60e622) SHA1(43450c747db1394466eabe5c26a61bf75a4f3b52) )
ROM_REGION(0x200, "iosel", 0)
ROM_LOAD("u110.bin", 0x0000, 0x0200, CRC(70dd255a) SHA1(36dcce07a2c14eefc069433459c422341bd47efb) )
ROM_REGION(0x100, "floppy", 0)
ROM_LOAD("u630.bin", 0x0000, 0x0100, CRC(f7a5c821) SHA1(fea07d9ac7e4e5f4f72aa7b2159deaedbd662ead) )
// chip locations based on schematics
ROM_REGION(0x2000, "x86bios", 0)
ROM_LOAD16_BYTE("u4.bin", 0x0000, 0x1000, CRC(658c8f93) SHA1(ce4b388af5b73884194f548afa706964305462f7) )
ROM_LOAD16_BYTE("u9.bin", 0x0001, 0x1000, CRC(cc4cd938) SHA1(6a1d316628641f9b4de5c8c46f9430ef5bd6120f) )
ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME FLAGS
COMP( 1982, attache, 0, 0, attache, attache, attache_state, 0, "Otrona", "Attach\xC3\xA9", MACHINE_IMPERFECT_GRAPHICS )
COMP( 1983, attache816, attache,0, attache816, attache, attache816_state, 0, "Otrona", "Attach\xC3\xA9 8:16", MACHINE_IMPERFECT_GRAPHICS )

View File

@ -53,7 +53,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( aussiebyte_io, AS_IO, 8, aussiebyte_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("sio1", z80sio0_device, ba_cd_r, ba_cd_w)
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("sio1", z80sio_device, ba_cd_r, ba_cd_w)
AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("pio1", z80pio_device, read, write)
AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
AM_RANGE(0x0c, 0x0f) AM_NOP // winchester interface
@ -68,7 +68,7 @@ static ADDRESS_MAP_START( aussiebyte_io, AS_IO, 8, aussiebyte_state )
AM_RANGE(0x1b, 0x1b) AM_WRITE(port1b_w) // winchester control
AM_RANGE(0x1c, 0x1f) AM_WRITE(port1c_w) // gpebh select
AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("pio2", z80pio_device, read, write)
AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("sio2", z80sio0_device, ba_cd_r, ba_cd_w)
AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("sio2", z80sio_device, ba_cd_r, ba_cd_w)
AM_RANGE(0x28, 0x28) AM_READ(port28_r) AM_DEVWRITE("votrax", votrax_sc01_device, write)
AM_RANGE(0x2c, 0x2c) AM_DEVWRITE("votrax", votrax_sc01_device, inflection_w)
AM_RANGE(0x30, 0x30) AM_WRITE(address_w)
@ -368,29 +368,8 @@ static const z80_daisy_config daisy_chain_intf[] =
************************************************************/
// baud rate generator. All inputs are 1.2288MHz.
WRITE_LINE_MEMBER( aussiebyte_state::clock_w )
{
m_ctc->trg0(state);
m_ctc->trg1(state);
m_ctc->trg2(state);
}
WRITE_LINE_MEMBER( aussiebyte_state::ctc_z0_w )
{
m_sio1->rxca_w(state);
m_sio1->txca_w(state);
}
WRITE_LINE_MEMBER( aussiebyte_state::ctc_z1_w )
{
m_sio1->rxtxcb_w(state);
m_sio2->rxca_w(state);
m_sio2->txca_w(state);
}
WRITE_LINE_MEMBER( aussiebyte_state::ctc_z2_w )
{
m_sio2->rxtxcb_w(state);
m_ctc->trg3(1);
m_ctc->trg3(0);
}
@ -496,13 +475,19 @@ static MACHINE_CONFIG_START( aussiebyte )
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
MCFG_DEVICE_ADD("ctc_clock", CLOCK, XTAL_4_9152MHz / 4)
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(aussiebyte_state, clock_w))
MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("ctc", z80ctc_device, trg0))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("ctc", z80ctc_device, trg1))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("ctc", z80ctc_device, trg2))
MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_16MHz / 4)
MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_Z80CTC_ZC0_CB(WRITELINE(aussiebyte_state, ctc_z0_w)) // SIO1 Ch A
MCFG_Z80CTC_ZC1_CB(WRITELINE(aussiebyte_state, ctc_z1_w)) // SIO1 Ch B, SIO2 Ch A
MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("sio1", z80sio_device, rxca_w))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("sio1", z80sio_device, txca_w))
MCFG_Z80CTC_ZC1_CB(DEVWRITELINE("sio1", z80sio_device, rxtxcb_w))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("sio2", z80sio_device, rxca_w))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("sio2", z80sio_device, txca_w))
MCFG_Z80CTC_ZC2_CB(WRITELINE(aussiebyte_state, ctc_z2_w)) // SIO2 Ch B, CTC Ch 3
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("sio2", z80sio_device, rxtxcb_w))
MCFG_DEVICE_ADD("dma", Z80DMA, XTAL_16MHz / 4)
MCFG_Z80DMA_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
@ -523,21 +508,21 @@ static MACHINE_CONFIG_START( aussiebyte )
MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_Z80PIO_OUT_PA_CB(WRITE8(aussiebyte_state, port20_w))
MCFG_DEVICE_ADD("sio1", Z80SIO0, XTAL_16MHz / 4)
MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_Z80DART_OUT_WRDYA_CB(WRITELINE(aussiebyte_state, sio1_rdya_w))
MCFG_Z80DART_OUT_WRDYB_CB(WRITELINE(aussiebyte_state, sio1_rdyb_w))
MCFG_DEVICE_ADD("sio1", Z80SIO, XTAL_16MHz / 4)
MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_Z80SIO_OUT_WRDYA_CB(WRITELINE(aussiebyte_state, sio1_rdya_w))
MCFG_Z80SIO_OUT_WRDYB_CB(WRITELINE(aussiebyte_state, sio1_rdyb_w))
MCFG_DEVICE_ADD("sio2", Z80SIO0, XTAL_16MHz / 4)
MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_Z80DART_OUT_WRDYA_CB(WRITELINE(aussiebyte_state, sio2_rdya_w))
MCFG_Z80DART_OUT_WRDYB_CB(WRITELINE(aussiebyte_state, sio2_rdyb_w))
MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd))
MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr))
MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts))
MCFG_DEVICE_ADD("sio2", Z80SIO, XTAL_16MHz / 4)
MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_Z80SIO_OUT_WRDYA_CB(WRITELINE(aussiebyte_state, sio2_rdya_w))
MCFG_Z80SIO_OUT_WRDYB_CB(WRITELINE(aussiebyte_state, sio2_rdyb_w))
MCFG_Z80SIO_OUT_TXDA_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd))
MCFG_Z80SIO_OUT_DTRA_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr))
MCFG_Z80SIO_OUT_RTSA_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts))
MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "keyboard")
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sio2", z80sio0_device, rxa_w))
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sio2", z80sio_device, rxa_w))
MCFG_WD2797_ADD("fdc", XTAL_16MHz / 16)
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(aussiebyte_state, fdc_intrq_w))

View File

@ -73,6 +73,7 @@ X - change banks
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/z80/z80daisy.h"
#include "machine/74259.h"
#include "machine/clock.h"
#include "machine/keyboard.h"
#include "machine/wd_fdc.h"
@ -101,7 +102,7 @@ public:
, m_fdc(*this, "fdc")
, m_floppy0(*this, "fdc:0")
, m_floppy1(*this, "fdc:1")
, m_beeper(*this, "beeper")
, m_syslatch1(*this, "syslatch1")
, m_dsw(*this, "DSW")
, m_bankr(*this, "bankr")
, m_bankv(*this, "bankv")
@ -109,11 +110,14 @@ public:
{
}
DECLARE_WRITE8_MEMBER(portc0_w );
DECLARE_WRITE8_MEMBER(portc8_w );
DECLARE_WRITE8_MEMBER(portcc_w );
DECLARE_READ8_MEMBER(portc4_r);
DECLARE_READ8_MEMBER(portd0_r);
DECLARE_WRITE_LINE_MEMBER(side_select_w);
DECLARE_WRITE_LINE_MEMBER(smc1_w);
DECLARE_WRITE_LINE_MEMBER(smc2_w);
DECLARE_WRITE_LINE_MEMBER(head_load_w);
DECLARE_WRITE_LINE_MEMBER(disk_motor_w);
DECLARE_WRITE8_MEMBER(syslatch2_w);
DECLARE_READ8_MEMBER(status_port_r);
DECLARE_READ8_MEMBER(kbd_r);
void kbd_put(u8 data);
DECLARE_WRITE_LINE_MEMBER(clock_w);
DECLARE_WRITE_LINE_MEMBER(busreq_w);
@ -133,7 +137,6 @@ private:
u8 m_term_data;
u8 m_term_status;
uint16_t m_cnt;
bool m_c8[8];
bool m_cc[8];
floppy_image_device *m_floppy;
virtual void machine_start() override;
@ -151,18 +154,13 @@ private:
required_device<mb8877_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_device<beep_device> m_beeper;
required_device<ls259_device> m_syslatch1;
required_ioport m_dsw;
required_memory_bank m_bankr;
required_memory_bank m_bankv;
required_memory_bank m_banka;
};
// Eprom programming port
WRITE8_MEMBER( bigbord2_state::portc0_w )
{
}
/* Status port
0 = RXDA
1 = RXDB
@ -173,16 +171,16 @@ WRITE8_MEMBER( bigbord2_state::portc0_w )
6 = DIPSW 3
7 = DIPSW 4 */
READ8_MEMBER( bigbord2_state::portc4_r )
READ8_MEMBER(bigbord2_state::status_port_r)
{
u8 ret = m_term_status | 3 | (m_c8[6]<<2) | m_dsw->read();
u8 ret = m_term_status | 3 | (m_syslatch1->q6_r() << 2) | m_dsw->read();
m_term_status = 0;
return ret;
}
// KBD port - read ascii value of key pressed
READ8_MEMBER( bigbord2_state::portd0_r )
READ8_MEMBER(bigbord2_state::kbd_r)
{
u8 ret = m_term_data;
m_term_data = 0;
@ -249,73 +247,35 @@ WRITE8_MEMBER( bigbord2_state::io_write_byte )
/* Read/Write Handlers */
WRITE8_MEMBER( bigbord2_state::portc8_w )
WRITE_LINE_MEMBER(bigbord2_state::side_select_w)
{
/*
This port uses a 74LS259, which allows individual bits
to be switched on and off, while the other bits are
unaffected.
bit signal description
0 D_S memory bank
1 SIDSEL side select
2 SMC1 u6 data separator pin 5
3 SMC2 u6 data separator pin 6
4 DDEN density
5 HLD head load
6 MOTOR disk motor
7 BELL beeper pulse
*/
m_c8[data&7] = BIT(data, 3);
switch (data&7)
{
case 0:
// memory bank
m_bankr->set_entry(m_c8[0]);
m_bankv->set_entry(m_c8[0]);
m_banka->set_entry(m_c8[0]);
break;
case 1:
// side select
if (m_floppy)
{
m_floppy->ss_w(m_c8[1]);
}
break;
case 2:
case 3:
// these connect to "U6 (FDC9216B)" which drives the fdc "rawread" and "rclk" pins
break;
case 4:
// density
m_fdc->dden_w(m_c8[4]);
break;
case 5:
// connects to HLD pin on floppy drive
break;
case 6:
// motor on
if (m_floppy)
{
m_floppy->mon_w(m_c8[6]? 0 : 1);
}
break;
case 7:
// beeper
m_beeper->set_state(m_c8[7]);
break;
}
if (m_floppy)
m_floppy->ss_w(state);
}
WRITE8_MEMBER( bigbord2_state::portcc_w )
WRITE_LINE_MEMBER(bigbord2_state::smc1_w)
{
// connects to "U6 (FDC9216B)" which drives the fdc "rawread" and "rclk" pins
}
WRITE_LINE_MEMBER(bigbord2_state::smc2_w)
{
// connects to "U6 (FDC9216B)" which drives the fdc "rawread" and "rclk" pins
}
WRITE_LINE_MEMBER(bigbord2_state::head_load_w)
{
// connects to HLD pin on floppy drive
}
WRITE_LINE_MEMBER(bigbord2_state::disk_motor_w)
{
// motor on
if (m_floppy)
m_floppy->mon_w(state ? 0 : 1);
}
WRITE8_MEMBER(bigbord2_state::syslatch2_w)
{
/*
@ -346,6 +306,11 @@ WRITE8_MEMBER( bigbord2_state::portcc_w )
//if (BIT(data, 4)) m_floppy = m_floppy3->get_device();
m_fdc->set_floppy(m_floppy);
if (m_floppy)
{
m_floppy->ss_w(m_syslatch1->q1_r());
m_floppy->mon_w(m_syslatch1->q6_r() ? 0 : 1);
}
m_dma->rdy_w(m_cc[data & 7]);
}
@ -369,16 +334,17 @@ static ADDRESS_MAP_START( bigbord2_io, AS_IO, 8, bigbord2_state )
AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w) // u16
AM_RANGE(0x84, 0x87) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write) // u37 has issues
AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE("ctc2", z80ctc_device, read, write) // u21
AM_RANGE(0x8C, 0x8F) AM_DEVREADWRITE("dma", z80dma_device, read, write) // u62
AM_RANGE(0xC0, 0xC3) AM_WRITE(portc0_w) // eprom programming port
AM_RANGE(0xC4, 0xC7) AM_READ (portc4_r)
AM_RANGE(0xC8, 0xCB) AM_WRITE(portc8_w)
AM_RANGE(0xCC, 0xCF) AM_WRITE(portcc_w)
AM_RANGE(0xD0, 0xD3) AM_READ (portd0_r)
AM_RANGE(0xD4, 0xD7) AM_DEVREADWRITE("fdc", mb8877_device, read, write) // u10
//AM_RANGE(0xD8, 0xDB) AM_READWRITE(portd8_r, portd8_w) // various external data ports; DB = centronics printer
AM_RANGE(0xDC, 0xDC) AM_MIRROR(2) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) // u30
AM_RANGE(0xDD, 0xDD) AM_MIRROR(2) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
AM_RANGE(0x8c, 0x8f) AM_DEVREADWRITE("dma", z80dma_device, read, write) // u62
AM_RANGE(0xc0, 0xc3) AM_DEVWRITE("proglatch", ls259_device, write_nibble_d3) // u41 - eprom programming port
AM_RANGE(0xc4, 0xc7) AM_READ(status_port_r) // u11
AM_RANGE(0xc8, 0xcb) AM_DEVWRITE("syslatch1", ls259_device, write_nibble_d3) // u14
AM_RANGE(0xcc, 0xcf) AM_WRITE(syslatch2_w)
AM_RANGE(0xd0, 0xd3) AM_READ(kbd_r) // u1
AM_RANGE(0xd4, 0xd7) AM_DEVREADWRITE("fdc", mb8877_device, read, write) // u10
//AM_RANGE(0xd8, 0xdb) AM_READWRITE(portd8_r, portd8_w) // various external data ports; DB = centronics printer
AM_RANGE(0xd9, 0xd9) AM_DEVWRITE("outlatch1", ls259_device, write_nibble_d3) // u96
AM_RANGE(0xdc, 0xdc) AM_MIRROR(2) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) // u30
AM_RANGE(0xdd, 0xdd) AM_MIRROR(2) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
ADDRESS_MAP_END
@ -450,12 +416,8 @@ void bigbord2_state::machine_reset()
{
u8 i;
for (i = 0; i < 8; i++)
{
m_c8[i] = 0;
m_cc[i] = 1;
}
m_cc[2] = 0;
m_beeper->set_state(0);
m_bankr->set_entry(0);
m_bankv->set_entry(0);
m_banka->set_entry(0);
@ -632,6 +594,23 @@ static MACHINE_CONFIG_START( bigbord2 )
MCFG_MC6845_UPDATE_ROW_CB(bigbord2_state, crtc_update_row)
MCFG_MC6845_OUT_VSYNC_CB(DEVWRITELINE("ctc1", z80ctc_device, trg3))
MCFG_DEVICE_ADD("proglatch", LS259, 0) // U41
MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(DEVWRITELINE("outlatch1", ls259_device, clear_w)) // FCRST - also resets the 8877
MCFG_DEVICE_ADD("syslatch1", LS259, 0) // U14
MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(MEMBANK("bankr")) // D_S
MCFG_DEVCB_CHAIN_OUTPUT(MEMBANK("bankv"))
MCFG_DEVCB_CHAIN_OUTPUT(MEMBANK("banka"))
MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(bigbord2_state, side_select_w)) // SIDSEL
MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(WRITELINE(bigbord2_state, smc1_w)) // SMC1
MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(bigbord2_state, smc2_w)) // SMC2
MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(DEVWRITELINE("fdc", mb8877_device, dden_w)) // DDEN
MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(WRITELINE(bigbord2_state, head_load_w)) // HLD
MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(WRITELINE(bigbord2_state, disk_motor_w)) // MOTOR
MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(DEVWRITELINE("beeper", beep_device, set_state)) // BELL
MCFG_DEVICE_ADD("outlatch1", LS259, 0) // U96
/* keyboard */
MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(PUT(bigbord2_state, kbd_put))
@ -656,4 +635,4 @@ ROM_END
/* System Drivers */
// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
COMP( 1982, bigbord2, bigboard, 0, bigbord2, bigbord2, bigbord2_state, bigbord2, "Digital Research Computers", "Big Board II", MACHINE_NOT_WORKING )
COMP( 1982, bigbord2, 0, 0, bigbord2, bigbord2, bigbord2_state, bigbord2, "Digital Research Computers", "Big Board II", MACHINE_NOT_WORKING )

View File

@ -914,4 +914,4 @@ GAME( 2002, bingor3, 0, bingor, bingor, bingor_state, 0, ROT0,
GAME( 2002, bingor4, 0, bingor, bingor, bingor_state, 0, ROT0, "<unknown>", "Bingo Roll / Bell Star? (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 2002, bingor5, 0, bingor, bingor, bingor_state, 0, ROT0, "<unknown>", "Bingo Roll / Bell Star V3? (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 2001, vip2000, 0, vip2000, bingor, bingor_state, 0, ROT0, "Paloma-Elektronik?", "Unknown 'VIP 2000' game", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 2001, vip2000, 0, vip2000, bingor, bingor_state, 0, ROT0, "Paloma-Elektronik?", "unknown 'VIP 2000' game", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )

View File

@ -159,7 +159,7 @@ static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, boogwing_state )
AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco104_device, soundlatch_r)
AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
@ -388,18 +388,17 @@ static MACHINE_CONFIG_START( boogwing )
MCFG_DECO_SPRITE_GFX_REGION(4)
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
MCFG_DECO104_ADD("ioprot104")
MCFG_DECO104_ADD("ioprot")
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(IOPORT("SYSTEM"))
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SOUNDLATCH_IRQ_CB(INPUTLINE("audiocpu", 0))
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_REVERSE
MCFG_DECO146_SET_USE_MAGIC_ADDRESS_XOR
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 32220000/9)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ2 */
MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(boogwing_state, sound_bankswitch_w))

View File

@ -80,6 +80,7 @@ public:
DECLARE_PALETTE_INIT(cb2001);
uint32_t screen_update_cb2001(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
DECLARE_READ8_MEMBER(irq_ack_r);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
@ -578,7 +579,7 @@ static ADDRESS_MAP_START( cb2001_io, AS_IO, 16, cb2001_state )
AM_RANGE(0x20, 0x21) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0xff00)
AM_RANGE(0x22, 0x23) AM_DEVWRITE8("aysnd", ay8910_device, data_address_w, 0xffff)
AM_RANGE(0x30, 0x31) AM_WRITE(cb2001_vidctrl_w)
AM_RANGE(0x30, 0x31) AM_READ8(irq_ack_r, 0x00ff) AM_WRITE(cb2001_vidctrl_w)
AM_RANGE(0x32, 0x33) AM_WRITE(cb2001_vidctrl2_w)
ADDRESS_MAP_END
@ -747,7 +748,13 @@ INPUT_PORTS_END
INTERRUPT_GEN_MEMBER(cb2001_state::vblank_irq)
{
generic_pulse_irq_line(device.execute(), NEC_INPUT_LINE_INTP0, 1);
m_maincpu->set_input_line(NEC_INPUT_LINE_INTP0, ASSERT_LINE);
}
READ8_MEMBER(cb2001_state::irq_ack_r)
{
m_maincpu->set_input_line(NEC_INPUT_LINE_INTP0, CLEAR_LINE);
return 0xff;
}
static const gfx_layout cb2001_layout =

View File

@ -381,11 +381,6 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, cc40_state )
AM_RANGE(0xd000, 0xefff) AM_ROMBANK("sysbank")
ADDRESS_MAP_END
static ADDRESS_MAP_START( main_io_map, AS_IO, 8, cc40_state )
AM_RANGE(TMS7000_PORTA, TMS7000_PORTA) AM_READ(keyboard_r)
AM_RANGE(TMS7000_PORTB, TMS7000_PORTB) AM_WRITE(keyboard_w)
ADDRESS_MAP_END
/***************************************************************************
@ -584,7 +579,8 @@ static MACHINE_CONFIG_START( cc40 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS70C20, XTAL_5MHz / 2)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_IO_MAP(main_io_map)
MCFG_TMS7000_IN_PORTA_CB(READ8(cc40_state, keyboard_r))
MCFG_TMS7000_OUT_PORTB_CB(WRITE8(cc40_state, keyboard_w))
MCFG_NVRAM_ADD_0FILL("sysram.0")
MCFG_NVRAM_ADD_0FILL("sysram.1")

View File

@ -65,6 +65,7 @@ ToDo:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "bus/rs232/rs232.h"
//#include "bus/s100/s100.h"
#include "machine/ins8250.h"
#include "machine/ram.h"
#include "machine/wd_fdc.h"

View File

@ -2,11 +2,25 @@
// copyright-holders:Robbbert
/***************************************************************************
Central Data cd2650
Central Data 2650 Computer System
2010-04-08 Skeleton driver.
No info available on this computer apart from a few newsletters.
No info available on this computer apart from a few newsletters and
magazine articles. The computer was described in a series of articles
published between April and June 1977 in Radio-Electronics, which include
supposedly complete schematics and fairly detailed subsystem descriptions.
All signals to and from the 2650 board (including the built-in 300 baud
Kansas City standard cassette tape interface) are passed through six ribbon
cables. Central Data later produced an extender board that adapted the
bus signals to a S-100 backplane. This interface was missing a considerable
number of standard S-100 timing signals, though it was compatible at least
with some dynamic RAM boards released by the company.
The unusual XTAL frequency seems deliberately chosen to produce a vertical
sync rate of exactly 60 Hz.
The system only uses 1000-14FF for videoram and 17F0-17FF for
scratch ram. All other ram is optional.
@ -23,13 +37,18 @@ V Verify?
Press Esc to exit most commands.
TODO
- Lots, probably. The computer is a complete mystery. No manuals or schematics exist.
- Lots, probably. The computer is a complete mystery. No manuals are known to exist.
- Cassette doesn't work.
****************************************************************************/
#define CHARACTER_WIDTH 8
#define CHARACTER_HEIGHT 8
#define CHARACTER_LINES 12
#include "emu.h"
#include "cpu/s2650/s2650.h"
//#include "bus/s100/s100.h"
#include "imagedev/cassette.h"
#include "imagedev/snapquik.h"
#include "machine/keyboard.h"
@ -95,8 +114,8 @@ READ8_MEMBER( cd2650_state::keyin_r )
static ADDRESS_MAP_START(cd2650_mem, AS_PROGRAM, 8, cd2650_state)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE( 0x0000, 0x03ff) AM_ROM AM_REGION("roms", 0)
AM_RANGE( 0x1000, 0x7fff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0)
AM_RANGE(0x1000, 0x7fff) AM_RAM AM_SHARE("videoram")
ADDRESS_MAP_END
static ADDRESS_MAP_START( cd2650_io, AS_IO, 8, cd2650_state)
@ -132,14 +151,14 @@ uint32_t cd2650_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
for (y = 0; y < 16; y++)
{
for (ra = 0; ra < 10; ra++)
for (ra = 0; ra < CHARACTER_LINES; ra++)
{
uint16_t *p = &bitmap.pix16(sy++);
for (x = 0; x < 80; x++)
{
gfx = 0;
if ((ra) && (ra < 9))
if (ra < CHARACTER_HEIGHT)
{
mem = offset + y + (x<<4);
@ -148,7 +167,7 @@ uint32_t cd2650_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
chr = m_p_videoram[mem] & 0x3f;
gfx = m_p_chargen[(BITSWAP8(chr,7,6,2,1,0,3,4,5)<<3) | (ra-1) ];
gfx = m_p_chargen[(BITSWAP8(chr,7,6,2,1,0,3,4,5)<<3) | ra];
}
/* Display a scanline of a character */
@ -261,7 +280,7 @@ QUICKLOAD_LOAD_MEMBER( cd2650_state, cd2650 )
static MACHINE_CONFIG_START( cd2650 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz)
MCFG_CPU_ADD("maincpu", S2650, XTAL_14_192640MHz / 12) // 1.182720MHz according to RE schematic
MCFG_CPU_PROGRAM_MAP(cd2650_mem)
MCFG_CPU_IO_MAP(cd2650_io)
MCFG_CPU_DATA_MAP(cd2650_data)
@ -270,12 +289,10 @@ static MACHINE_CONFIG_START( cd2650 )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_RAW_PARAMS(XTAL_14_192640MHz, 112 * CHARACTER_WIDTH, 0, 80 * CHARACTER_WIDTH, 22 * CHARACTER_LINES, 0, 16 * CHARACTER_LINES)
MCFG_SCREEN_UPDATE_DRIVER(cd2650_state, screen_update)
MCFG_SCREEN_SIZE(640, 160)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 159)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", cd2650)
MCFG_PALETTE_ADD_MONOCHROME("palette")
@ -297,7 +314,7 @@ MACHINE_CONFIG_END
/* ROM definition */
ROM_START( cd2650 )
ROM_REGION( 0x0400, "roms", 0 )
ROM_REGION( 0x1000, "roms", 0 )
ROM_LOAD( "cd2650.rom", 0x0000, 0x0400, CRC(5397328e) SHA1(7106fdb60e1ad2bc5e8e45527f348c23296e8d6a))
ROM_REGION( 0x0600, "chargen", 0 )
@ -319,4 +336,4 @@ ROM_END
/* Driver */
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
COMP( 1977, cd2650, 0, 0, cd2650, cd2650, cd2650_state, 0, "Central Data", "CD 2650", 0 )
COMP( 1977, cd2650, 0, 0, cd2650, cd2650, cd2650_state, 0, "Central Data", "2650 Computer System", 0 )

View File

@ -153,7 +153,7 @@ static ADDRESS_MAP_START( cninjabl_map, AS_PROGRAM, 16, cninja_state )
AM_RANGE(0x17ff22, 0x17ff23) AM_READ_PORT("DSW")
AM_RANGE(0x17ff28, 0x17ff29) AM_READ_PORT("SYSTEM")
AM_RANGE(0x17ff2a, 0x17ff2b) AM_WRITE(stoneage_sound_w)
AM_RANGE(0x17ff2a, 0x17ff2b) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
AM_RANGE(0x17ff2c, 0x17ff2d) AM_READ_PORT("INPUTS")
AM_RANGE(0x180000, 0x187fff) AM_RAM // more ram on bootleg?
@ -324,7 +324,19 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, cninja_state )
AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write)
AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot104", deco104_device, soundlatch_r)
AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map_146, AS_PROGRAM, 8, cninja_state )
AM_RANGE(0x000000, 0x00ffff) AM_ROM
AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write)
AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco146_device, soundlatch_r)
AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
@ -332,17 +344,25 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map_mutantf, AS_PROGRAM, 8, cninja_state )
AM_RANGE(0x000000, 0x00ffff) AM_ROM
AM_RANGE(0x100000, 0x100001) AM_READNOP AM_WRITENOP
AM_RANGE(0x100000, 0x100001) AM_NOP
AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x140000, 0x140001) AM_DEVREAD("ioprot", deco146_device, soundlatch_r)
AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( stoneage_s_map, AS_PROGRAM, 8, cninja_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
AM_RANGE(0xa000, 0xa000) AM_DEVREAD("ioprot104", deco104_device, soundlatch_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( cninjabl_sound_map, AS_PROGRAM, 8, cninja_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
@ -355,7 +375,7 @@ static ADDRESS_MAP_START( cninjabl2_s_map, AS_PROGRAM, 8, cninja_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x9000, 0x9000) AM_WRITE(cninjabl2_oki_bank_w)
AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xa000, 0xa000) AM_DEVREAD("ioprot104", deco104_device, soundlatch_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( cninjabl2_oki_map, 0, 8, cninja_state )
@ -855,13 +875,12 @@ static MACHINE_CONFIG_START( cninja )
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(IOPORT("SYSTEM"))
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SOUNDLATCH_IRQ_CB(INPUTLINE("audiocpu", 0))
MCFG_DECO146_SET_USE_MAGIC_ADDRESS_XOR
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, XTAL_32_22MHz / 8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
@ -946,15 +965,14 @@ static MACHINE_CONFIG_START( stoneage )
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(IOPORT("SYSTEM"))
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SOUNDLATCH_IRQ_CB(INPUTLINE("audiocpu", INPUT_LINE_NMI))
MCFG_DECO146_SET_USE_MAGIC_ADDRESS_XOR
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_32_22MHz / 9)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
MCFG_SOUND_ROUTE(0, "mono", 0.45)
MCFG_SOUND_ROUTE(1, "mono", 0.45)
@ -969,6 +987,9 @@ static MACHINE_CONFIG_DERIVED( cninjabl2, stoneage )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_cninjabl2)
MCFG_DEVICE_MODIFY("ioprot104")
MCFG_DECO146_SOUNDLATCH_IRQ_CB(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_REMOVE("ymsnd")
MCFG_OKIM6295_REPLACE("oki1", XTAL_32_22MHz / 32, PIN7_LOW)
@ -983,7 +1004,7 @@ static MACHINE_CONFIG_START( cninjabl )
MCFG_CPU_PROGRAM_MAP(cninjabl_map)
MCFG_CPU_ADD("audiocpu", Z80, 3579545)
MCFG_CPU_PROGRAM_MAP(stoneage_s_map)
MCFG_CPU_PROGRAM_MAP(cninjabl_sound_map)
MCFG_DECO_IRQ_ADD("irq", "screen")
MCFG_DECO_IRQ_RASTER1_IRQ_CB(INPUTLINE("maincpu", 3))
@ -1036,9 +1057,10 @@ static MACHINE_CONFIG_START( cninjabl )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", INPUT_LINE_NMI))
MCFG_YM2151_ADD("ymsnd", XTAL_32_22MHz / 9)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
MCFG_SOUND_ROUTE(0, "mono", 0.45)
MCFG_SOUND_ROUTE(1, "mono", 0.45)
@ -1054,7 +1076,7 @@ static MACHINE_CONFIG_START( edrandy )
MCFG_CPU_PROGRAM_MAP(edrandy_map)
MCFG_CPU_ADD("audiocpu", H6280, XTAL_32_22MHz / 8)
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_CPU_PROGRAM_MAP(sound_map_146)
MCFG_DECO_IRQ_ADD("irq", "screen")
MCFG_DECO_IRQ_RASTER1_IRQ_CB(INPUTLINE("maincpu", 3))
@ -1112,12 +1134,11 @@ static MACHINE_CONFIG_START( edrandy )
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(IOPORT("SYSTEM"))
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SOUNDLATCH_IRQ_CB(INPUTLINE("audiocpu", 0))
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, XTAL_32_22MHz / 8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
@ -1142,7 +1163,7 @@ static MACHINE_CONFIG_START( robocop2 )
MCFG_CPU_PROGRAM_MAP(robocop2_map)
MCFG_CPU_ADD("audiocpu", H6280, XTAL_32_22MHz / 8)
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_CPU_PROGRAM_MAP(sound_map_146)
MCFG_DECO_IRQ_ADD("irq", "screen")
MCFG_DECO_IRQ_RASTER1_IRQ_CB(INPUTLINE("maincpu", 3))
@ -1201,6 +1222,7 @@ static MACHINE_CONFIG_START( robocop2 )
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(IOPORT("SYSTEM"))
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SOUNDLATCH_IRQ_CB(INPUTLINE("audiocpu", 0))
MCFG_DECO146_SET_USE_MAGIC_ADDRESS_XOR
@ -1299,6 +1321,7 @@ static MACHINE_CONFIG_START( mutantf )
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(IOPORT("SYSTEM"))
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SOUNDLATCH_IRQ_CB(INPUTLINE("audiocpu", 0))
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@ -2249,16 +2272,6 @@ ROM_END
/**********************************************************************************/
DRIVER_INIT_MEMBER(cninja_state,cninja)
{
m_maincpu->space(AS_PROGRAM).install_write_handler(0x1bc0a8, 0x1bc0a9, write16_delegate(FUNC(cninja_state::cninja_sound_w),this));
}
DRIVER_INIT_MEMBER(cninja_state,stoneage)
{
m_maincpu->space(AS_PROGRAM).install_write_handler(0x1bc0a8, 0x1bc0a9, write16_delegate(FUNC(cninja_state::stoneage_sound_w),this));
}
DRIVER_INIT_MEMBER(cninja_state,cninjabl2)
{
m_maincpu->space(AS_PROGRAM).install_ram(0x180000, 0x18ffff);
@ -2288,11 +2301,11 @@ GAME( 1990, edrandy2, edrandy, edrandy, edrandc, cninja_state, 0, ROT0
GAME( 1990, edrandy1, edrandy, edrandy, edrandc, cninja_state, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1990, edrandyj, edrandy, edrandy, edrandc, cninja_state, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (Japan ver 3)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, cninja, 0, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 4)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, cninja1, cninja, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, cninjau, cninja, cninja, cninjau, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (US ver 4)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, joemac, cninja, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Tatakae Genshizin Joe & Mac (Japan ver 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, stoneage, cninja, stoneage, cninja, cninja_state, stoneage, ROT0, "bootleg", "Stoneage (bootleg of Caveman Ninja)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, cninja, 0, cninja, cninja, cninja_state, 0, ROT0, "Data East Corporation", "Caveman Ninja (World ver 4)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, cninja1, cninja, cninja, cninja, cninja_state, 0, ROT0, "Data East Corporation", "Caveman Ninja (World ver 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, cninjau, cninja, cninja, cninjau, cninja_state, 0, ROT0, "Data East Corporation", "Caveman Ninja (US ver 4)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, joemac, cninja, cninja, cninja, cninja_state, 0, ROT0, "Data East Corporation", "Tatakae Genshizin Joe & Mac (Japan ver 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, stoneage, cninja, stoneage, cninja, cninja_state, 0, ROT0, "bootleg", "Stoneage (bootleg of Caveman Ninja)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, cninjabl, cninja, cninjabl, cninja, cninja_state, 0, ROT0, "bootleg", "Caveman Ninja (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, cninjabl2,cninja, cninjabl2,cninja, cninja_state, cninjabl2,ROT0, "bootleg", "Tatakae Genshizin Joe & Mac (Japan, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // tile layers need adjusting

View File

@ -60,11 +60,6 @@ void codata_state::machine_reset()
m_maincpu->reset();
}
static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9615 )
DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9615 )
DEVICE_INPUT_DEFAULTS_END
static MACHINE_CONFIG_START( codata )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",M68000, XTAL_16MHz / 2)
@ -90,7 +85,6 @@ static MACHINE_CONFIG_START( codata )
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart", upd7201_new_device, rxa_w))
MCFG_RS232_DSR_HANDLER(DEVWRITELINE("uart", upd7201_new_device, dcda_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart", upd7201_new_device, ctsa_w))
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", terminal)
MCFG_RS232_PORT_ADD("rs423b", default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart", upd7201_new_device, rxb_w))

View File

@ -832,6 +832,18 @@ ROM_START( dfkbl )
ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(31f9eb0a) SHA1(322158779e969bb321241065dd49c1167b91ff6c) )
ROM_END
ROM_START( akatana )
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD16_WORD_SWAP( "u4", 0x000000, 0x400000, CRC(613fd380) SHA1(6e28480eef3b483d00b42d811a9d2c7fa1097924) ) // (2010/ 8/13 MASTER VER.)
ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF)
ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(89a2e1a5) SHA1(e6f4ec974406283665697fdd52bd606d0337dd11) )
ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF)
ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(34a67e24) SHA1(78a7e82123b86311f1116a80c39f147b8b695549) )
ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(10760fed) SHA1(b70f4506c00f3901ff38f5efd4b897af1afc7a0c) )
ROM_END
READ64_MEMBER(cv1k_state::speedup_r)
{
offs_t pc = downcast<cpu_device *>(&space.device())->pc();
@ -892,7 +904,6 @@ DRIVER_INIT_MEMBER(cv1k_state,deathsml)
DRIVER_INIT_MEMBER(cv1k_state,dpddfk)
{
install_speedups(0x02310, 0xc1d1346, true);
}
#define GAME_FLAGS (MACHINE_IMPERFECT_TIMING)
@ -949,5 +960,8 @@ GAME( 2008, ddpdfk10, ddpdfk, cv1k_d, cv1k, cv1k_state, dpddfk, ROT270, "
// CA019B Do-Don-Pachi Dai-Fukkatsu Black Label
GAME( 2010, dfkbl, 0, cv1k_d, cv1k, cv1k_state, dpddfk, ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Black Label (2010/1/18 BLACK LABEL)", GAME_FLAGS )
// CA021 Akai Katana
GAME( 2010, akatana, 0, cv1k_d, cv1k, cv1k_state, dpddfk, ROT0, "Cave (AMI license)", "Akai Katana (2010/ 8/13 MASTER VER.)", GAME_FLAGS )
// CMDL01 Medal Mahjong Moukari Bancho
GAME( 2007, mmmbanc, 0, cv1k, cv1k, cv1k_state, pinkswts, ROT0, "Cave (AMI license)", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)", MACHINE_NOT_WORKING )

View File

@ -55,12 +55,11 @@ class czk80_state : public driver_device
{
public:
czk80_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_terminal(*this, TERMINAL_TAG),
m_fdc(*this, "fdc")
{
}
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_terminal(*this, "terminal")
, m_fdc(*this, "fdc")
{ }
DECLARE_DRIVER_INIT(czk80);
DECLARE_MACHINE_RESET(czk80);
@ -112,10 +111,10 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START(czk80_io, AS_IO, 8, czk80_state)
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x40, 0x40) AM_WRITE(port40_w)
AM_RANGE(0x4c, 0x4f) AM_DEVREADWRITE("z80pio", z80pio_device, read, write)
AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80dart", z80dart_device, cd_ba_r, cd_ba_w)
AM_RANGE(0x54, 0x57) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write)
AM_RANGE(0x80, 0x80) AM_READ(port80_r) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write)
AM_RANGE(0x4c, 0x4f) AM_DEVREADWRITE("pio", z80pio_device, read, write)
AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("dart", z80dart_device, cd_ba_r, cd_ba_w)
AM_RANGE(0x54, 0x57) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
AM_RANGE(0x80, 0x80) AM_READ(port80_r) AM_DEVWRITE("terminal", generic_terminal_device, write)
AM_RANGE(0x81, 0x81) AM_READ(port81_r)
/* Select one of the below */
//AM_RANGE(0xc0, 0xc0) AM_READ(portc0_r)
@ -130,9 +129,9 @@ INPUT_PORTS_END
static const z80_daisy_config daisy_chain[] =
{
{ "z80pio" },
{ "z80dart" },
{ "z80ctc" },
{ "pio" },
{ "dart" },
{ "ctc" },
{ nullptr }
};
@ -196,24 +195,24 @@ static MACHINE_CONFIG_START( czk80 )
MCFG_Z80_DAISY_CHAIN(daisy_chain)
MCFG_MACHINE_RESET_OVERRIDE(czk80_state, czk80)
MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0)
MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(czk80_state, kbd_put))
MCFG_UPD765A_ADD("fdc", false, true)
MCFG_FLOPPY_DRIVE_ADD("fdc:0", czk80_floppies, "525dd", floppy_image_device::default_floppy_formats)
MCFG_DEVICE_ADD("z80ctc", Z80CTC, XTAL_16MHz / 4)
MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_16MHz / 4)
MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_Z80CTC_ZC0_CB(WRITELINE(czk80_state, ctc_z0_w))
MCFG_Z80CTC_ZC1_CB(WRITELINE(czk80_state, ctc_z1_w))
MCFG_Z80CTC_ZC2_CB(WRITELINE(czk80_state, ctc_z2_w))
MCFG_DEVICE_ADD("z80dart", Z80DART, XTAL_16MHz / 4)
MCFG_DEVICE_ADD("dart", Z80DART, XTAL_16MHz / 4)
//MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd))
//MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr))
//MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts))
MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_16MHz/4)
MCFG_DEVICE_ADD("pio", Z80PIO, XTAL_16MHz/4)
MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MACHINE_CONFIG_END

View File

@ -94,9 +94,9 @@ public:
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_deco_tilegen1(*this, "tilegen1"),
m_deco104(*this, "ioprot104"),
m_deco104(*this, "ioprot"),
m_sprgen(*this, "spritegen"),
m_soundlatch(*this, "soundlatch")
m_soundlatch_pending(false)
{ }
/* memory pointers */
@ -111,20 +111,20 @@ public:
required_device<deco16ic_device> m_deco_tilegen1;
required_device<deco104_device> m_deco104;
required_device<decospr_device> m_sprgen;
required_device<generic_latch_8_device> m_soundlatch;
DECLARE_READ8_MEMBER(irq_latch_r);
DECLARE_WRITE_LINE_MEMBER(soundlatch_irq_w);
DECLARE_DRIVER_INIT(dblewing);
virtual void machine_start() override;
virtual void machine_reset() override;
uint32_t screen_update_dblewing(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECO16IC_BANK_CB_MEMBER(bank_callback);
DECOSPR_PRIORITY_CB_MEMBER(pri_callback);
void dblewing_sound_cb( address_space &space, uint16_t data, uint16_t mem_mask );
READ16_MEMBER( wf_protection_region_0_104_r );
WRITE16_MEMBER( wf_protection_region_0_104_w );
private:
bool m_soundlatch_pending;
};
@ -162,6 +162,10 @@ WRITE16_MEMBER( dblewing_state::wf_protection_region_0_104_w )
m_deco104->write_data( space, deco146_addr, data, mem_mask, cs );
}
WRITE_LINE_MEMBER( dblewing_state::soundlatch_irq_w )
{
m_soundlatch_pending = bool(state);
}
static ADDRESS_MAP_START( dblewing_map, AS_PROGRAM, 16, dblewing_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
@ -189,7 +193,8 @@ ADDRESS_MAP_END
READ8_MEMBER(dblewing_state::irq_latch_r)
{
return m_soundlatch->pending_r() ? 0 : 1;
// bit 0: irq type (0 = latch, 1 = ym)
return m_soundlatch_pending ? 0 : 1;
}
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, dblewing_state )
@ -197,7 +202,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, dblewing_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, status_r, write)
AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xc000, 0xc000) AM_DEVREAD("ioprot", deco104_device, soundlatch_r)
AM_RANGE(0xd000, 0xd000) AM_READ(irq_latch_r) //timing? sound latch?
AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
ADDRESS_MAP_END
@ -334,20 +339,6 @@ DECOSPR_PRIORITY_CB_MEMBER(dblewing_state::pri_callback)
return 0; // sprites always on top?
}
void dblewing_state::machine_start()
{
}
void dblewing_state::machine_reset()
{
}
void dblewing_state::dblewing_sound_cb( address_space &space, uint16_t data, uint16_t mem_mask )
{
m_soundlatch->write(space, 0, data & 0xff);
}
static MACHINE_CONFIG_START( dblewing )
/* basic machine hardware */
@ -399,22 +390,20 @@ static MACHINE_CONFIG_START( dblewing )
MCFG_DECO_SPRITE_PRIORITY_CB(dblewing_state, pri_callback)
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
MCFG_DECO104_ADD("ioprot104")
MCFG_DECO104_ADD("ioprot")
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(IOPORT("SYSTEM"))
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_INTERLEAVE
MCFG_DECO146_SET_USE_MAGIC_ADDRESS_XOR
MCFG_DECO146_SET_SOUNDLATCH_CALLBACK(dblewing_state, dblewing_sound_cb)
MCFG_DECO146_SOUNDLATCH_IRQ_CB(WRITELINE(dblewing_state, soundlatch_irq_w))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("soundirq", input_merger_device, in_w<0>))
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(DEVWRITELINE("soundirq", input_merger_device, in_w<1>))
MCFG_YM2151_ADD("ymsnd", XTAL_32_22MHz/9)
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("soundirq", input_merger_device, in_w<0>))
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("soundirq", input_merger_device, in_w<1>))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MCFG_OKIM6295_ADD("oki", XTAL_28MHz/28, PIN7_HIGH)
@ -450,6 +439,8 @@ DRIVER_INIT_MEMBER(dblewing_state,dblewing)
{
deco56_decrypt_gfx(machine(), "gfx1");
deco102_decrypt_cpu((uint16_t *)memregion("maincpu")->base(), m_decrypted_opcodes, 0x80000, 0x399d, 0x25, 0x3d);
save_item(NAME(m_soundlatch_pending));
}

View File

@ -752,5 +752,5 @@ ROM_END
CONS( 1999, dc, dcjp, 0, dc, dc, dc_cons_state, dcus, "Sega", "Dreamcast (USA, NTSC)", MACHINE_NOT_WORKING )
CONS( 1998, dcjp, 0, 0, dc, dc, dc_cons_state, dcjp, "Sega", "Dreamcast (Japan, NTSC)", MACHINE_NOT_WORKING )
CONS( 1999, dceu, dcjp, 0, dc, dc, dc_cons_state, dcus, "Sega", "Dreamcast (Europe, PAL)", MACHINE_NOT_WORKING )
CONS( 200?, dctream,dcjp, 0, dc, dc, dc_cons_state, dcus,"unknown", "Treamcast", MACHINE_NOT_WORKING )
CONS( 200?, dctream,dcjp, 0, dc, dc, dc_cons_state, dcus, "<unknown>", "Treamcast", MACHINE_NOT_WORKING )
CONS( 1998, dcdev, 0, 0, dc, dc, dc_cons_state, dc, "Sega", "HKT-0120 Sega Dreamcast Development Box", MACHINE_NOT_WORKING )

View File

@ -48,7 +48,7 @@ ToDo:
- graphics are completely broken in Secret Agent (bootleg);
- Fighting Fantasy (bootleg) doesn't move on when killing the Lamia, is the MCU involved?
- Hook up the 68705 in Midnight Resistance (bootleg) (it might not be used, leftover from the Fighting Fantasy bootleg on the same PCB?)
- Get rid of ROM patches in Sly Spy and Hippodrome;
- Get rid of ROM patch in Hippodrome;
- background pen in Birdie Try is presumably wrong.
- Pixel clock frequency isn't verified;
- Finally, get a proper decap of the MCUs used by Dragonninja and Birdie Try;
@ -502,12 +502,17 @@ READ16_MEMBER(dec0_state::slyspy_controls_r)
READ16_MEMBER(dec0_state::slyspy_protection_r)
{
/* These values are for Boulderdash, I have no idea what they do in Slyspy */
switch (offset<<1) {
switch (offset<<1)
{
/* These values are for Boulderdash, I have no idea what they do in Slyspy */
case 0: return 0;
case 2: return 0x13;
case 4: return 0;
case 6: return 0x2;
// sly spy uses this port as RNG, for now let's do same thing as bootleg (i.e. reads 0x306028)
// chances are that it actually ties to the main CPU xtal instead.
// (reads at 6958 6696)
case 0xc: return m_ram[0x2028/2] >> 8;
}
logerror("%04x, Unknown protection read at 30c000 %d\n", space.device().safe_pc(), offset);
@ -564,7 +569,7 @@ READ16_MEMBER(dec0_state::slyspy_state_r)
static ADDRESS_MAP_START( slyspy_protection_map, AS_PROGRAM, 16, dec0_state )
AM_RANGE(0x04000, 0x04001) AM_MIRROR(0x30000) AM_READ(slyspy_state_r)
AM_RANGE(0x04000, 0x04001) AM_MIRROR(0x30000) AM_READ(slyspy_state_r) AM_WRITENOP
AM_RANGE(0x0a000, 0x0a001) AM_MIRROR(0x30000) AM_WRITE(slyspy_state_w)
// Default state (called by Traps 1, 3, 4, 7, C)
AM_RANGE(0x00000, 0x00007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w)
@ -669,15 +674,59 @@ ADDRESS_MAP_END
/* Physical memory map (21 bits) */
static ADDRESS_MAP_START( slyspy_s_map, AS_PROGRAM, 8, dec0_state )
AM_RANGE(0x000000, 0x00ffff) AM_ROM
AM_RANGE(0x090000, 0x090001) AM_DEVWRITE("ym2", ym3812_device, write)
AM_RANGE(0x0a0000, 0x0a0001) AM_READNOP /* Protection counter */
AM_RANGE(0x0b0000, 0x0b0001) AM_DEVWRITE("ym1", ym2203_device, write)
AM_RANGE(0x0e0000, 0x0e0001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0x0f0000, 0x0f0001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x080000, 0x0fffff) AM_DEVICE("sndprotect", address_map_bank_device, amap8 )
AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
ADDRESS_MAP_END
// sly spy sound state protection machine emulation
// similar to the video state machine
// current bank is at 0x1f0045, incremented by 1 then here is read
READ8_MEMBER(dec0_state::slyspy_sound_state_r)
{
m_slyspy_sound_state ++;
m_slyspy_sound_state &= 3;
m_sndprotect->set_bank(m_slyspy_sound_state);
// returned value doesn't matter
return 0xff;
}
READ8_MEMBER(dec0_state::slyspy_sound_state_reset_r)
{
m_slyspy_sound_state = 0;
m_sndprotect->set_bank(m_slyspy_sound_state);
// returned value doesn't matter
return 0xff;
}
static ADDRESS_MAP_START( slyspy_sound_protection_map, AS_PROGRAM, 8, dec0_state )
AM_RANGE(0x020000, 0x020001) AM_MIRROR(0x180000) AM_READ(slyspy_sound_state_r) /* Protection counter */
AM_RANGE(0x050000, 0x050001) AM_MIRROR(0x180000) AM_READ(slyspy_sound_state_reset_r)
// state 0
AM_RANGE(0x010000, 0x010001) AM_DEVWRITE("ym2", ym3812_device, write)
AM_RANGE(0x030000, 0x030001) AM_DEVWRITE("ym1", ym2203_device, write)
AM_RANGE(0x060000, 0x060001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0x070000, 0x070001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
// state 1
AM_RANGE(0x090000, 0x090001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x0e0000, 0x0e0001) AM_DEVWRITE("ym1", ym2203_device, write)
AM_RANGE(0x0f0000, 0x0f0001) AM_DEVWRITE("ym2", ym3812_device, write)
// state 2
AM_RANGE(0x110000, 0x110001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0x140000, 0x140001) AM_DEVWRITE("ym1", ym2203_device, write)
AM_RANGE(0x170000, 0x170001) AM_DEVWRITE("ym2", ym3812_device, write)
// state 3
AM_RANGE(0x190000, 0x190001) AM_DEVWRITE("ym2", ym3812_device, write)
AM_RANGE(0x1c0000, 0x1c0001) AM_DEVWRITE("ym1", ym2203_device, write)
AM_RANGE(0x1e0000, 0x1e0001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x1f0000, 0x1f0001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
ADDRESS_MAP_END
static ADDRESS_MAP_START( midres_s_map, AS_PROGRAM, 8, dec0_state )
AM_RANGE(0x000000, 0x00ffff) AM_ROM
AM_RANGE(0x108000, 0x108001) AM_DEVWRITE("ym2", ym3812_device, write)
@ -1906,6 +1955,8 @@ MACHINE_RESET_MEMBER(dec0_state,slyspy)
// set initial memory map
m_slyspy_state = 0;
m_pfprotect->set_bank(m_slyspy_state);
m_slyspy_sound_state = 0;
m_sndprotect->set_bank(m_slyspy_sound_state);
}
static MACHINE_CONFIG_DERIVED( slyspy, dec1 )
@ -1915,7 +1966,8 @@ static MACHINE_CONFIG_DERIVED( slyspy, dec1 )
MCFG_CPU_PROGRAM_MAP(slyspy_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dec0_state, irq6_line_hold) /* VBL, apparently it auto-acks */
MCFG_CPU_ADD("audiocpu", H6280, XTAL_12MHz/2/3) /* verified on pcb (6Mhz is XIN on pin 10 of H6280, verified on pcb */
// TODO: both games doesn't like /3 here, MT #06740
MCFG_CPU_ADD("audiocpu", H6280, XTAL_12MHz/2/2) /* verified on pcb (6Mhz is XIN on pin 10 of H6280) */
MCFG_CPU_PROGRAM_MAP(slyspy_s_map)
MCFG_DEVICE_ADD("pfprotect", ADDRESS_MAP_BANK, 0)
@ -1925,6 +1977,14 @@ static MACHINE_CONFIG_DERIVED( slyspy, dec1 )
MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(18)
MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000)
MCFG_DEVICE_ADD("sndprotect", ADDRESS_MAP_BANK, 0)
MCFG_DEVICE_PROGRAM_MAP(slyspy_sound_protection_map)
MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(21)
MCFG_ADDRESS_MAP_BANK_STRIDE(0x80000)
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(dec0_state, screen_update_slyspy)

View File

@ -380,14 +380,14 @@ NOTE: There are several unpopulated locations (denoted by *) for additional rom
// ADDRESS MAPS
//**************************************************************************
static ADDRESS_MAP_START( captaven_map, AS_PROGRAM, 32, deco32_state )
static ADDRESS_MAP_START( captaven_map, AS_PROGRAM, 32, captaven_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x100007) AM_READ(_71_r)
AM_RANGE(0x100000, 0x100003) AM_WRITE(buffer_spriteram_w)
AM_RANGE(0x108000, 0x108003) AM_WRITENOP /* ? */
AM_RANGE(0x110000, 0x111fff) AM_READWRITE(spriteram_r, spriteram_w)
AM_RANGE(0x120000, 0x127fff) AM_RAM AM_SHARE("ram") /* Main RAM */
AM_RANGE(0x128000, 0x12ffff) AM_READWRITE16(deco_146_r, deco_146_w, 0x0000ffff)
AM_RANGE(0x128000, 0x12ffff) AM_READWRITE16(ioprot_r, ioprot_w, 0x0000ffff)
AM_RANGE(0x130000, 0x131fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x148000, 0x14800f) AM_DEVICE8("irq", deco_irq_device, map, 0x000000ff)
AM_RANGE(0x160000, 0x167fff) AM_RAM /* Extra work RAM */
@ -409,7 +409,7 @@ static ADDRESS_MAP_START( captaven_map, AS_PROGRAM, 32, deco32_state )
AM_RANGE(0x1e4000, 0x1e5fff) AM_RAM_WRITE(pf4_rowscroll_w) AM_SHARE("pf4_rowscroll32") // unused
ADDRESS_MAP_END
static ADDRESS_MAP_START( fghthist_map, AS_PROGRAM, 32, deco32_state )
static ADDRESS_MAP_START( fghthist_map, AS_PROGRAM, 32, fghthist_state )
ADDRESS_MAP_UNMAP_HIGH
// AM_RANGE(0x000000, 0x001fff) AM_ROM AM_WRITE(pf1_data_w) // wtf??
AM_RANGE(0x000000, 0x0fffff) AM_ROM
@ -419,12 +419,14 @@ static ADDRESS_MAP_START( fghthist_map, AS_PROGRAM, 32, deco32_state )
AM_RANGE(0x120028, 0x12002b) AM_READ8(eeprom_r, 0x000000ff)
AM_RANGE(0x12002c, 0x12002f) AM_WRITE8(eeprom_w, 0x000000ff)
AM_RANGE(0x12002c, 0x12002f) AM_WRITE8(volume_w, 0x0000ff00)
AM_RANGE(0x1201fc, 0x1201ff) AM_WRITE(sound_w)
AM_RANGE(0x1201fc, 0x1201ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff)
AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w)
AM_RANGE(0x168000, 0x169fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram")
AM_RANGE(0x16c008, 0x16c00b) AM_WRITE(palette_dma_w)
AM_RANGE(0x16c010, 0x16c013) AM_READ(unk_status_r)
AM_RANGE(0x178000, 0x179fff) AM_READWRITE(spriteram_r, spriteram_w)
AM_RANGE(0x17c010, 0x17c013) AM_WRITE(buffer_spriteram_w)
AM_RANGE(0x17c020, 0x17c023) AM_READ(unk_status_r)
AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(pf1_rowscroll_w) AM_SHARE("pf1_rowscroll32")
@ -435,13 +437,11 @@ static ADDRESS_MAP_START( fghthist_map, AS_PROGRAM, 32, deco32_state )
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(pf3_rowscroll_w) AM_SHARE("pf3_rowscroll32")
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(pf4_rowscroll_w) AM_SHARE("pf4_rowscroll32")
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
AM_RANGE(0x16c000, 0x16c01f) AM_READNOP
AM_RANGE(0x17c000, 0x17c03f) AM_READNOP
AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(deco_146_r, deco_146_w, 0xffff0000) AM_SHARE("prot32ram") // only maps on 16-bits
AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(ioprot_r, ioprot_w, 0xffff0000) AM_SHARE("prot32ram") // only maps on 16-bits
AM_RANGE(0x208800, 0x208803) AM_WRITENOP /* ? */
ADDRESS_MAP_END
static ADDRESS_MAP_START( fghthsta_memmap, AS_PROGRAM, 32, deco32_state )
static ADDRESS_MAP_START( fghthsta_memmap, AS_PROGRAM, 32, fghthist_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_SHARE("ram")
AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w)
@ -449,10 +449,10 @@ static ADDRESS_MAP_START( fghthsta_memmap, AS_PROGRAM, 32, deco32_state )
AM_RANGE(0x150000, 0x150003) AM_WRITE8(volume_w, 0x0000ff00)
AM_RANGE(0x168000, 0x169fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram")
AM_RANGE(0x16c008, 0x16c00b) AM_WRITE(palette_dma_w)
AM_RANGE(0x16c010, 0x16c013) AM_READNOP
AM_RANGE(0x16c010, 0x16c013) AM_READ(unk_status_r)
AM_RANGE(0x178000, 0x179fff) AM_READWRITE(spriteram_r, spriteram_w)
AM_RANGE(0x17c010, 0x17c013) AM_WRITE(buffer_spriteram_w)
AM_RANGE(0x17c020, 0x17c023) AM_READNOP
AM_RANGE(0x17c020, 0x17c023) AM_READ(unk_status_r)
AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w)
AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w)
AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(pf1_rowscroll_w) AM_SHARE("pf1_rowscroll32")
@ -463,7 +463,7 @@ static ADDRESS_MAP_START( fghthsta_memmap, AS_PROGRAM, 32, deco32_state )
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(pf3_rowscroll_w) AM_SHARE("pf3_rowscroll32")
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(pf4_rowscroll_w) AM_SHARE("pf4_rowscroll32")
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(deco_146_r, deco_146_w, 0xffff0000) AM_SHARE("prot32ram") // only maps on 16-bits
AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(ioprot_r, ioprot_w, 0xffff0000) AM_SHARE("prot32ram") // only maps on 16-bits
ADDRESS_MAP_END
// the video drawing (especially sprite) code on this is too slow to cope with proper partial updates
@ -471,7 +471,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dragngun_map, AS_PROGRAM, 32, dragngun_state )
AM_RANGE(0x0000000, 0x00fffff) AM_ROM
AM_RANGE(0x0100000, 0x011ffff) AM_RAM AM_SHARE("ram")
AM_RANGE(0x0120000, 0x0127fff) AM_READWRITE16(deco_146_r, deco_146_w, 0x0000ffff)
AM_RANGE(0x0120000, 0x0127fff) AM_READWRITE16(ioprot_r, ioprot_w, 0x0000ffff)
// AM_RANGE(0x01204c0, 0x01204c3) AM_WRITE(sound_w)
AM_RANGE(0x0128000, 0x012800f) AM_DEVICE8("irq", deco_irq_device, map, 0x000000ff)
AM_RANGE(0x0130000, 0x0131fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram")
@ -523,7 +523,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( lockload_map, AS_PROGRAM, 32, dragngun_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_SHARE("ram")
AM_RANGE(0x120000, 0x127fff) AM_READWRITE16(deco_146_r, deco_146_w, 0x0000ffff)
AM_RANGE(0x120000, 0x127fff) AM_READWRITE16(ioprot_r, ioprot_w, 0x0000ffff)
AM_RANGE(0x128000, 0x12800f) AM_DEVICE8("irq", deco_irq_device, map, 0x000000ff)
AM_RANGE(0x130000, 0x131fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram")
AM_RANGE(0x138000, 0x138003) AM_READONLY AM_WRITENOP //palette dma complete in bit 0x8? ack? return 0 else tight loop
@ -555,7 +555,7 @@ static ADDRESS_MAP_START( lockload_map, AS_PROGRAM, 32, dragngun_state )
AM_RANGE(0x500000, 0x500003) AM_WRITE(sprite_control_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( tattass_map, AS_PROGRAM, 32, deco32_state )
static ADDRESS_MAP_START( tattass_map, AS_PROGRAM, 32, nslasher_state )
AM_RANGE(0x000000, 0x0f7fff) AM_ROM
AM_RANGE(0x0f8000, 0x0fffff) AM_ROM AM_WRITENOP
AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_SHARE("ram")
@ -590,11 +590,11 @@ static ADDRESS_MAP_START( tattass_map, AS_PROGRAM, 32, deco32_state )
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(pf3_rowscroll_w) AM_SHARE("pf3_rowscroll32")
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(pf4_rowscroll_w) AM_SHARE("pf4_rowscroll32")
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(deco_104_r, deco_104_w, 0xffff0000)
AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(ioprot_r, ioprot_w, 0xffff0000)
AM_RANGE(0x200000, 0x207fff) AM_READ16(nslasher_debug_r, 0x0000ffff)
ADDRESS_MAP_END
static ADDRESS_MAP_START( nslasher_map, AS_PROGRAM, 32, deco32_state )
static ADDRESS_MAP_START( nslasher_map, AS_PROGRAM, 32, nslasher_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_SHARE("ram")
AM_RANGE(0x120000, 0x1200ff) AM_NOP /* ACIA (unused) */
@ -627,7 +627,7 @@ static ADDRESS_MAP_START( nslasher_map, AS_PROGRAM, 32, deco32_state )
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(pf3_rowscroll_w) AM_SHARE("pf3_rowscroll32")
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(pf4_rowscroll_w) AM_SHARE("pf4_rowscroll32")
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(deco_104_r, deco_104_w, 0xffff0000)
AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(ioprot_r, ioprot_w, 0xffff0000)
AM_RANGE(0x200000, 0x207fff) AM_READ16(nslasher_debug_r, 0x0000ffff) // seems to be debug switches / code activated by this?
ADDRESS_MAP_END
@ -637,12 +637,17 @@ static ADDRESS_MAP_START( h6280_sound_map, AS_PROGRAM, 8, deco32_state )
AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r)
AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( h6280_sound_custom_latch_map, AS_PROGRAM, 8, deco32_state )
AM_RANGE(0x140000, 0x140000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_IMPORT_FROM(h6280_sound_map)
ADDRESS_MAP_END
// Z80 based sound
static ADDRESS_MAP_START( z80_sound_mem, AS_PROGRAM, 8, deco32_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
@ -650,7 +655,7 @@ static ADDRESS_MAP_START( z80_sound_mem, AS_PROGRAM, 8, deco32_state )
AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
AM_RANGE(0xd000, 0xd000) AM_READ(latch_r)
AM_RANGE(0xd000, 0xd000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( z80_sound_io, AS_IO, 8, deco32_state )
@ -662,40 +667,22 @@ ADDRESS_MAP_END
// PROTECTION
//**************************************************************************
READ16_MEMBER( deco32_state::deco_104_r )
READ16_MEMBER( deco32_state::ioprot_r )
{
offs_t real_address = 0 + (offset *2);
offs_t deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
return m_deco104->read_data( deco146_addr, mem_mask, cs );
return m_ioprot->read_data( deco146_addr, mem_mask, cs );
}
WRITE16_MEMBER( deco32_state::deco_104_w )
WRITE16_MEMBER( deco32_state::ioprot_w )
{
offs_t real_address = 0 + (offset *2);
offs_t deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8, 7,6,5,4, 3,2,1,0) & 0x7fff;
uint8_t cs = 0;
m_deco104->write_data( space, deco146_addr, data, mem_mask, cs );
}
READ16_MEMBER( deco32_state::deco_146_r )
{
offs_t real_address = 0 + (offset * 2);
offs_t deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8,7,6,5,4,3,2,1, 0) & 0x7fff;
uint8_t cs = 0;
return m_deco146->read_data(deco146_addr, mem_mask, cs);
}
WRITE16_MEMBER( deco32_state::deco_146_w )
{
offs_t real_address = 0 + (offset * 2);
offs_t deco146_addr = BITSWAP32(real_address, /* NC */31,30,29,28,27,26,25,24,23,22,21,20,19,18, 13,12,11,/**/ 17,16,15,14, 10,9,8,7,6,5,4,3,2,1, 0) & 0x7fff;
uint8_t cs = 0;
m_deco146->write_data(space, deco146_addr, data, mem_mask, cs);
m_ioprot->write_data( space, deco146_addr, data, mem_mask, cs );
}
@ -703,21 +690,6 @@ WRITE16_MEMBER( deco32_state::deco_146_w )
// SOUND
//**************************************************************************
WRITE32_MEMBER( deco32_state::sound_w )
{
m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line(0, HOLD_LINE);
}
READ8_MEMBER(deco32_state::latch_r)
{
/* bit 1 of nslasher_sound_irq specifies IRQ command writes */
m_nslasher_sound_irq &= ~0x02;
m_audiocpu->set_input_line(0, (m_nslasher_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
return m_soundlatch->read(space,0);
}
WRITE8_MEMBER( deco32_state::volume_w )
{
// TODO: assume linear with a 0.0-1.0 dB scale for now
@ -729,7 +701,7 @@ WRITE8_MEMBER( deco32_state::volume_w )
m_oki2->set_output_gain(ALL_OUTPUTS, vol_output);
}
READ8_MEMBER( deco32_state::captaven_soundcpu_status_r )
READ8_MEMBER( captaven_state::captaven_soundcpu_status_r )
{
// 7------- sound cpu status (0 = busy)
// -6543210 unknown
@ -782,36 +754,15 @@ LC7535_VOLUME_CHANGED( dragngun_state::volume_gun_changed )
m_oki3->set_output_gain(ALL_OUTPUTS, m_vol_gun->normalize(attenuation_left));
}
void deco32_state::deco32_sound_cb(address_space &space, uint16_t data, uint16_t mem_mask)
WRITE_LINE_MEMBER( nslasher_state::tattass_sound_irq_w )
{
m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line(0, HOLD_LINE);
}
void deco32_state::nslasher_sound_cb(address_space &space, uint16_t data, uint16_t mem_mask)
{
/* bit 1 of nslasher_sound_irq specifies IRQ command writes */
m_soundlatch->write(space,0,(data)&0xff);
m_nslasher_sound_irq |= 0x02;
m_audiocpu->set_input_line(0, (m_nslasher_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
}
void deco32_state::tattass_sound_cb(address_space &space, uint16_t data, uint16_t mem_mask)
{
/* 'Swap bits 0 and 3 to correct for design error from BSMT schematic' */
int soundcommand = (data)&0xff;
soundcommand = BITSWAP8(soundcommand,7,6,5,4,0,2,1,3);
m_decobsmt->bsmt_comms_w(space, 0, soundcommand);
}
WRITE_LINE_MEMBER( deco32_state::sound_irq_nslasher )
{
/* bit 0 of nslasher_sound_irq specifies IRQ from sound chip */
if (state)
m_nslasher_sound_irq |= 0x01;
else
m_nslasher_sound_irq &= ~0x01;
m_audiocpu->set_input_line(0, (m_nslasher_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
{
uint8_t data = m_ioprot->soundlatch_r(machine().dummy_space(), 0);
// Swap bits 0 and 3 to correct for design error from BSMT schematic
data = BITSWAP8(data, 7, 6, 5, 4, 0, 2, 1, 3);
m_decobsmt->bsmt_comms_w(machine().dummy_space(), 0, data);
}
}
WRITE8_MEMBER( deco32_state::sound_bankswitch_w )
@ -847,19 +798,19 @@ WRITE32_MEMBER( deco32_state::buffer_spriteram_w )
memcpy(m_spriteram16_buffered, m_spriteram16, 0x1000);
}
READ32_MEMBER( deco32_state::spriteram2_r )
READ32_MEMBER( nslasher_state::spriteram2_r )
{
return m_spriteram16_2[offset] ^ 0xffff0000;
}
WRITE32_MEMBER( deco32_state::spriteram2_w )
WRITE32_MEMBER( nslasher_state::spriteram2_w )
{
data &= 0x0000ffff;
mem_mask &= 0x0000ffff;
COMBINE_DATA(&m_spriteram16_2[offset]);
}
WRITE32_MEMBER( deco32_state::buffer_spriteram2_w )
WRITE32_MEMBER( nslasher_state::buffer_spriteram2_w )
{
memcpy(m_spriteram16_2_buffered, m_spriteram16_2, 0x1000);
}
@ -875,7 +826,7 @@ READ32_MEMBER( dragngun_state::unk_video_r)
return machine().rand();
}
DECOSPR_PRIORITY_CB_MEMBER( deco32_state::captaven_pri_callback )
DECOSPR_PRIORITY_CB_MEMBER( captaven_state::captaven_pri_callback )
{
if ((pri & 0x60) == 0x00)
{
@ -895,7 +846,7 @@ DECOSPR_PRIORITY_CB_MEMBER( deco32_state::captaven_pri_callback )
}
}
DECO16IC_BANK_CB_MEMBER( deco32_state::captaven_bank_callback )
DECO16IC_BANK_CB_MEMBER( captaven_state::captaven_bank_callback )
{
bank = bank >> 4;
bank = (bank & 2) >> 1;
@ -903,7 +854,7 @@ DECO16IC_BANK_CB_MEMBER( deco32_state::captaven_bank_callback )
return bank * 0x4000;
}
DECO16IC_BANK_CB_MEMBER( deco32_state::fghthist_bank_callback )
DECO16IC_BANK_CB_MEMBER( fghthist_state::fghthist_bank_callback )
{
bank = bank >> 4;
bank = (bank & 1) | ((bank & 4) >> 1) | ((bank & 2) << 1);
@ -924,7 +875,7 @@ DECO16IC_BANK_CB_MEMBER( dragngun_state::bank_2_callback )
return bank * 0x1000;
}
DECO16IC_BANK_CB_MEMBER( deco32_state::tattass_bank_callback )
DECO16IC_BANK_CB_MEMBER( nslasher_state::tattass_bank_callback )
{
bank = bank >> 4;
return bank * 0x1000;
@ -935,12 +886,12 @@ DECO16IC_BANK_CB_MEMBER( deco32_state::tattass_bank_callback )
// INPUTS
//**************************************************************************
READ8_MEMBER( deco32_state::captaven_dsw1_r ) { return ioport("DSW1")->read(); }
READ8_MEMBER( deco32_state::captaven_dsw2_r ) { return ioport("DSW2")->read(); }
READ8_MEMBER( deco32_state::captaven_dsw3_r ) { return ioport("DSW3")->read(); }
READ8_MEMBER( captaven_state::captaven_dsw1_r ) { return ioport("DSW1")->read(); }
READ8_MEMBER( captaven_state::captaven_dsw2_r ) { return ioport("DSW2")->read(); }
READ8_MEMBER( captaven_state::captaven_dsw3_r ) { return ioport("DSW3")->read(); }
READ16_MEMBER( deco32_state::fghthist_in0_r ) { return ioport("IN0")->read(); }
READ16_MEMBER( deco32_state::fghthist_in1_r ) { return ioport("IN1")->read(); }
READ16_MEMBER( fghthist_state::fghthist_in0_r ) { return ioport("IN0")->read(); }
READ16_MEMBER( fghthist_state::fghthist_in1_r ) { return ioport("IN1")->read(); }
// TODO: probably clears both player 1 and player 2
WRITE32_MEMBER( dragngun_state::gun_irq_ack_w )
@ -1034,7 +985,7 @@ WRITE8_MEMBER( dragngun_state::eeprom_w )
m_eeprom->cs_write(BIT(data, 2) ? ASSERT_LINE : CLEAR_LINE);
}
WRITE32_MEMBER( deco32_state::tattass_control_w )
WRITE32_MEMBER( nslasher_state::tattass_control_w )
{
/* Eprom in low byte */
if (ACCESSING_BITS_0_7) { /* Byte write to low byte only (different from word writing including low byte) */
@ -1161,7 +1112,7 @@ WRITE32_MEMBER( deco32_state::tattass_control_w )
//logerror("%08x: %08x data\n",data,mem_mask);
}
READ16_MEMBER( deco32_state::port_b_tattass )
READ16_MEMBER( nslasher_state::port_b_tattass )
{
return m_tattass_eprom_bit;
}
@ -1171,24 +1122,28 @@ READ16_MEMBER( deco32_state::port_b_tattass )
// MACHINE
//**************************************************************************
READ16_MEMBER( deco32_state::nslasher_debug_r )
READ32_MEMBER( fghthist_state::unk_status_r )
{
// bit 3 needs to be 0
return 0xfffffff7;
}
READ16_MEMBER( nslasher_state::nslasher_debug_r )
{
return 0xffff;
}
READ32_MEMBER( deco32_state::_71_r )
READ32_MEMBER( captaven_state::_71_r )
{
/* Bit 0x80 goes high when sprite DMA is complete, and low
while it's in progress, we don't bother to emulate it */
return 0xffffffff;
}
DRIVER_INIT_MEMBER( deco32_state, captaven )
DRIVER_INIT_MEMBER( captaven_state, captaven )
{
deco56_decrypt_gfx(machine(), "gfx1");
deco56_decrypt_gfx(machine(), "gfx2");
save_item(NAME(m_nslasher_sound_irq));
}
extern void process_dvi_data(device_t *device,uint8_t* dvi_data, int offset, int regionsize);
@ -1247,7 +1202,7 @@ DRIVER_INIT_MEMBER( dragngun_state, dragngunj )
ROM[0x1a1b4/4]=0xe1a00000; // bl $ee000: NOP test switch lock
}
DRIVER_INIT_MEMBER( deco32_state, fghthist )
DRIVER_INIT_MEMBER( fghthist_state, fghthist )
{
deco56_decrypt_gfx(machine(), "gfx1");
deco74_decrypt_gfx(machine(), "gfx2");
@ -1265,14 +1220,12 @@ DRIVER_INIT_MEMBER( dragngun_state, lockload )
memcpy(RAM+0x300000,RAM+0x100000,0x100000);
memset(RAM+0x100000,0,0x100000);
save_item(NAME(m_nslasher_sound_irq));
// ROM[0x3fe3c0/4]=0xe1a00000;// NOP test switch lock
// ROM[0x3fe3cc/4]=0xe1a00000;// NOP test switch lock
// ROM[0x3fe40c/4]=0xe1a00000;// NOP test switch lock
}
DRIVER_INIT_MEMBER( deco32_state, tattass )
DRIVER_INIT_MEMBER( nslasher_state, tattass )
{
uint8_t *RAM = memregion("gfx1")->base();
std::vector<uint8_t> tmp(0x80000);
@ -1299,7 +1252,7 @@ DRIVER_INIT_MEMBER( deco32_state, tattass )
save_item(NAME(m_byteAddr));
}
DRIVER_INIT_MEMBER( deco32_state, nslasher )
DRIVER_INIT_MEMBER( nslasher_state, nslasher )
{
uint8_t *RAM = memregion("gfx1")->base();
std::vector<uint8_t> tmp(0x80000);
@ -1319,10 +1272,6 @@ DRIVER_INIT_MEMBER( deco32_state, nslasher )
deco156_decrypt(machine());
m_soundlatch->preset_w(0xff);
save_item(NAME(m_nslasher_sound_irq));
/* The board for Night Slashers is very close to the Fighter's History and
Tattoo Assassins boards, but has an encrypted ARM cpu. */
}
@ -1919,7 +1868,7 @@ static MACHINE_CONFIG_START( captaven )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz / 4, 442, 0, 320, 274, 8, 248)
MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_captaven)
MCFG_SCREEN_UPDATE_DRIVER(captaven_state, screen_update_captaven)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", captaven)
@ -1948,7 +1897,7 @@ static MACHINE_CONFIG_START( captaven )
MCFG_DECO16IC_PF2_COL_BANK(0x00)
MCFG_DECO16IC_PF1_COL_MASK(0x0f)
MCFG_DECO16IC_PF2_COL_MASK(0x00)
MCFG_DECO16IC_BANK1_CB(deco32_state, captaven_bank_callback)
MCFG_DECO16IC_BANK1_CB(captaven_state, captaven_bank_callback)
// no bank2 callback
MCFG_DECO16IC_PF12_8X8_BANK(0)
MCFG_DECO16IC_PF12_16X16_BANK(2)
@ -1956,25 +1905,23 @@ static MACHINE_CONFIG_START( captaven )
MCFG_DEVICE_ADD("spritegen", DECO_SPRITE, 0)
MCFG_DECO_SPRITE_GFX_REGION(3)
MCFG_DECO_SPRITE_PRIORITY_CB(deco32_state, captaven_pri_callback)
MCFG_DECO_SPRITE_PRIORITY_CB(captaven_state, captaven_pri_callback)
MCFG_DECO_SPRITE_GFXDECODE("gfxdecode")
MCFG_DECO146_ADD("ioprot")
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(IOPORT("SYSTEM"))
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SET_SOUNDLATCH_CALLBACK(deco32_state, deco32_sound_cb)
MCFG_DECO146_SOUNDLATCH_IRQ_CB(INPUTLINE("audiocpu", 0))
MCFG_VIDEO_START_OVERRIDE(deco32_state,captaven)
MCFG_VIDEO_START_OVERRIDE(captaven_state, captaven)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_32_22MHz/9) /* verified on pcb */
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w))
MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state, sound_bankswitch_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.42)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.42)
@ -1994,13 +1941,13 @@ static MACHINE_CONFIG_START( fghthist )
MCFG_CPU_VBLANK_INT_DRIVER("screen", deco32_state, irq0_line_assert)
MCFG_CPU_ADD("audiocpu", H6280, XTAL_32_22MHz / 8)
MCFG_CPU_PROGRAM_MAP(h6280_sound_map)
MCFG_CPU_PROGRAM_MAP(h6280_sound_custom_latch_map)
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz / 4, 442, 0, 320, 274, 8, 248)
MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_fghthist)
MCFG_SCREEN_UPDATE_DRIVER(fghthist_state, screen_update_fghthist)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", fghthist)
MCFG_PALETTE_ADD("palette", 2048)
@ -2014,8 +1961,8 @@ static MACHINE_CONFIG_START( fghthist )
MCFG_DECO16IC_PF2_COL_BANK(0x10)
MCFG_DECO16IC_PF1_COL_MASK(0x0f)
MCFG_DECO16IC_PF2_COL_MASK(0x0f)
MCFG_DECO16IC_BANK1_CB(deco32_state, fghthist_bank_callback)
MCFG_DECO16IC_BANK2_CB(deco32_state, fghthist_bank_callback)
MCFG_DECO16IC_BANK1_CB(fghthist_state, fghthist_bank_callback)
MCFG_DECO16IC_BANK2_CB(fghthist_state, fghthist_bank_callback)
MCFG_DECO16IC_PF12_8X8_BANK(0)
MCFG_DECO16IC_PF12_16X16_BANK(1)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
@ -2029,8 +1976,8 @@ static MACHINE_CONFIG_START( fghthist )
MCFG_DECO16IC_PF2_COL_BANK(0x30)
MCFG_DECO16IC_PF1_COL_MASK(0x0f)
MCFG_DECO16IC_PF2_COL_MASK(0x0f)
MCFG_DECO16IC_BANK1_CB(deco32_state, fghthist_bank_callback)
MCFG_DECO16IC_BANK2_CB(deco32_state, fghthist_bank_callback)
MCFG_DECO16IC_BANK1_CB(fghthist_state, fghthist_bank_callback)
MCFG_DECO16IC_BANK2_CB(fghthist_state, fghthist_bank_callback)
MCFG_DECO16IC_PF12_8X8_BANK(0)
MCFG_DECO16IC_PF12_16X16_BANK(2)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
@ -2046,12 +1993,13 @@ static MACHINE_CONFIG_START( fghthist )
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_INTERLEAVE
MCFG_DECO146_SET_USE_MAGIC_ADDRESS_XOR
MCFG_VIDEO_START_OVERRIDE(deco32_state, fghthist)
MCFG_VIDEO_START_OVERRIDE(fghthist_state, fghthist)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", 0))
MCFG_YM2151_ADD("ymsnd", 32220000/9)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
@ -2072,6 +2020,14 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( fghthsta, fghthist )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(fghthsta_memmap)
MCFG_CPU_MODIFY("audiocpu")
MCFG_CPU_PROGRAM_MAP(h6280_sound_map)
MCFG_DEVICE_REMOVE("soundlatch")
MCFG_DEVICE_MODIFY("ioprot")
MCFG_DECO146_SOUNDLATCH_IRQ_CB(INPUTLINE("audiocpu", 0))
MACHINE_CONFIG_END
// DE-0396-0
@ -2082,10 +2038,14 @@ static MACHINE_CONFIG_DERIVED( fghthistu, fghthsta )
MCFG_CPU_PROGRAM_MAP(z80_sound_mem)
MCFG_CPU_IO_MAP(z80_sound_io)
MCFG_INPUT_MERGER_ANY_HIGH("sound_irq_merger")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_MODIFY("ioprot")
MCFG_DECO146_SOUNDLATCH_IRQ_CB(DEVWRITELINE("sound_irq_merger", input_merger_any_high_device, in_w<0>))
MCFG_SOUND_MODIFY("ymsnd")
//MCFG_YM2151_IRQ_HANDLER(WRITELINE(deco32_state,sound_irq_nslasher))
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state, sound_bankswitch_w))
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("sound_irq_merger", input_merger_any_high_device, in_w<1>))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
@ -2159,17 +2119,15 @@ static MACHINE_CONFIG_START( dragngun )
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(IOPORT("SYSTEM"))
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SET_SOUNDLATCH_CALLBACK(deco32_state, deco32_sound_cb)
MCFG_DECO146_SOUNDLATCH_IRQ_CB(INPUTLINE("audiocpu", 0))
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_REVERSE
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 32220000/9)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w))
MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state, sound_bankswitch_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.42)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.42)
@ -2212,12 +2170,15 @@ static MACHINE_CONFIG_START( lockload )
MCFG_CPU_ADD("maincpu", ARM, XTAL_28MHz / 4)
MCFG_CPU_PROGRAM_MAP(lockload_map)
MCFG_INPUT_MERGER_ANY_HIGH("irq_merger")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", ARM_IRQ_LINE))
MCFG_CPU_ADD("audiocpu", Z80, 32220000/8)
MCFG_CPU_PROGRAM_MAP(z80_sound_mem)
MCFG_CPU_IO_MAP(z80_sound_io)
MCFG_INPUT_MERGER_ANY_HIGH("irq_merger")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", ARM_IRQ_LINE))
MCFG_INPUT_MERGER_ANY_HIGH("sound_irq_merger")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
MCFG_DECO_IRQ_ADD("irq", "screen")
MCFG_DECO_IRQ_LIGHTGUN1_CB(IOPORT("LIGHT0_Y"))
@ -2279,7 +2240,7 @@ static MACHINE_CONFIG_START( lockload )
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(IOPORT("SYSTEM"))
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SET_SOUNDLATCH_CALLBACK(deco32_state, deco32_sound_cb)
MCFG_DECO146_SOUNDLATCH_IRQ_CB(DEVWRITELINE("sound_irq_merger", input_merger_any_high_device, in_w<0>))
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_REVERSE
/* sound hardware */
@ -2288,8 +2249,8 @@ static MACHINE_CONFIG_START( lockload )
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 32220000/9)
MCFG_YM2151_IRQ_HANDLER(WRITELINE(deco32_state,sound_irq_nslasher))
MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w))
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("sound_irq_merger", input_merger_any_high_device, in_w<1>))
MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state, sound_bankswitch_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.42)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.42)
@ -2321,7 +2282,7 @@ static MACHINE_CONFIG_START( tattass )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz / 4, 442, 0, 320, 274, 8, 248)
MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_nslasher)
MCFG_SCREEN_UPDATE_DRIVER(nslasher_state, screen_update_nslasher)
MCFG_DEVICE_ADD("tilegen1", DECO16IC, 0)
MCFG_DECO16IC_SPLIT(0)
@ -2332,8 +2293,8 @@ static MACHINE_CONFIG_START( tattass )
MCFG_DECO16IC_PF2_COL_BANK(0x10)
MCFG_DECO16IC_PF1_COL_MASK(0x0f)
MCFG_DECO16IC_PF2_COL_MASK(0x0f)
MCFG_DECO16IC_BANK1_CB(deco32_state, tattass_bank_callback)
MCFG_DECO16IC_BANK2_CB(deco32_state, tattass_bank_callback)
MCFG_DECO16IC_BANK1_CB(nslasher_state, tattass_bank_callback)
MCFG_DECO16IC_BANK2_CB(nslasher_state, tattass_bank_callback)
MCFG_DECO16IC_PF12_8X8_BANK(0)
MCFG_DECO16IC_PF12_16X16_BANK(1)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
@ -2347,8 +2308,8 @@ static MACHINE_CONFIG_START( tattass )
MCFG_DECO16IC_PF2_COL_BANK(0x30)
MCFG_DECO16IC_PF1_COL_MASK(0x0f)
MCFG_DECO16IC_PF2_COL_MASK(0x0f)
MCFG_DECO16IC_BANK1_CB(deco32_state, tattass_bank_callback)
MCFG_DECO16IC_BANK2_CB(deco32_state, tattass_bank_callback)
MCFG_DECO16IC_BANK1_CB(nslasher_state, tattass_bank_callback)
MCFG_DECO16IC_BANK2_CB(nslasher_state, tattass_bank_callback)
MCFG_DECO16IC_PF12_8X8_BANK(0)
MCFG_DECO16IC_PF12_16X16_BANK(2)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
@ -2364,14 +2325,14 @@ static MACHINE_CONFIG_START( tattass )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", tattass)
MCFG_PALETTE_ADD("palette", 2048)
MCFG_DECO104_ADD("ioprot104")
MCFG_DECO104_ADD("ioprot")
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(READ16(deco32_state, port_b_tattass))
MCFG_DECO146_IN_PORTB_CB(READ16(nslasher_state, port_b_tattass))
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SET_SOUNDLATCH_CALLBACK(deco32_state, tattass_sound_cb)
MCFG_DECO146_SOUNDLATCH_IRQ_CB(WRITELINE(nslasher_state, tattass_sound_irq_w))
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_INTERLEAVE
MCFG_VIDEO_START_OVERRIDE(deco32_state,nslasher)
MCFG_VIDEO_START_OVERRIDE(nslasher_state,nslasher)
/* sound hardware */
MCFG_DECOBSMT_ADD(DECOBSMT_TAG)
@ -2388,13 +2349,16 @@ static MACHINE_CONFIG_START( nslasher )
MCFG_CPU_PROGRAM_MAP(z80_sound_mem)
MCFG_CPU_IO_MAP(z80_sound_io)
MCFG_INPUT_MERGER_ANY_HIGH("sound_irq_merger")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* to improve main<->audio comms */
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_28_322MHz / 4, 442, 0, 320, 274, 8, 248)
MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_nslasher)
MCFG_SCREEN_UPDATE_DRIVER(nslasher_state, screen_update_nslasher)
MCFG_DEVICE_ADD("tilegen1", DECO16IC, 0)
MCFG_DECO16IC_SPLIT(0)
@ -2405,8 +2369,8 @@ static MACHINE_CONFIG_START( nslasher )
MCFG_DECO16IC_PF2_COL_BANK(0x10)
MCFG_DECO16IC_PF1_COL_MASK(0x0f)
MCFG_DECO16IC_PF2_COL_MASK(0x0f)
MCFG_DECO16IC_BANK1_CB(deco32_state, tattass_bank_callback)
MCFG_DECO16IC_BANK2_CB(deco32_state, tattass_bank_callback)
MCFG_DECO16IC_BANK1_CB(nslasher_state, tattass_bank_callback)
MCFG_DECO16IC_BANK2_CB(nslasher_state, tattass_bank_callback)
MCFG_DECO16IC_PF12_8X8_BANK(0)
MCFG_DECO16IC_PF12_16X16_BANK(1)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
@ -2420,8 +2384,8 @@ static MACHINE_CONFIG_START( nslasher )
MCFG_DECO16IC_PF2_COL_BANK(0x30)
MCFG_DECO16IC_PF1_COL_MASK(0x0f)
MCFG_DECO16IC_PF2_COL_MASK(0x0f)
MCFG_DECO16IC_BANK1_CB(deco32_state, tattass_bank_callback)
MCFG_DECO16IC_BANK2_CB(deco32_state, tattass_bank_callback)
MCFG_DECO16IC_BANK1_CB(nslasher_state, tattass_bank_callback)
MCFG_DECO16IC_BANK2_CB(nslasher_state, tattass_bank_callback)
MCFG_DECO16IC_PF12_8X8_BANK(0)
MCFG_DECO16IC_PF12_16X16_BANK(2)
MCFG_DECO16IC_GFXDECODE("gfxdecode")
@ -2437,23 +2401,21 @@ static MACHINE_CONFIG_START( nslasher )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", nslasher)
MCFG_PALETTE_ADD("palette", 2048)
MCFG_VIDEO_START_OVERRIDE(deco32_state,nslasher)
MCFG_VIDEO_START_OVERRIDE(nslasher_state, nslasher)
MCFG_DECO104_ADD("ioprot104")
MCFG_DECO104_ADD("ioprot")
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(DEVREADLINE("eeprom", eeprom_serial_93cxx_device, do_read)) MCFG_DEVCB_BIT(0)
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SET_SOUNDLATCH_CALLBACK(deco32_state, nslasher_sound_cb)
MCFG_DECO146_SOUNDLATCH_IRQ_CB(DEVWRITELINE("sound_irq_merger", input_merger_any_high_device, in_w<0>))
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_INTERLEAVE
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 32220000/9)
MCFG_YM2151_IRQ_HANDLER(WRITELINE(deco32_state,sound_irq_nslasher))
MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w))
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("sound_irq_merger", input_merger_any_high_device, in_w<1>))
MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state, sound_bankswitch_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
@ -2474,12 +2436,12 @@ static MACHINE_CONFIG_DERIVED( nslasheru, nslasher )
MCFG_SOUND_MODIFY("ymsnd")
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
MCFG_DEVICE_REMOVE("ioprot104")
MCFG_DECO104_ADD("ioprot104")
MCFG_DEVICE_REMOVE("ioprot")
MCFG_DECO104_ADD("ioprot")
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(DEVREADLINE("eeprom", eeprom_serial_93cxx_device, do_read)) MCFG_DEVCB_BIT(0)
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SET_SOUNDLATCH_CALLBACK(deco32_state, deco32_sound_cb)
MCFG_DECO146_SOUNDLATCH_IRQ_CB(INPUTLINE("audiocpu", 0))
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_INTERLEAVE
MACHINE_CONFIG_END
@ -3932,38 +3894,38 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS
GAME( 1991, captaven, 0, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Asia Rev 1.4)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, captavena, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Asia Rev 1.0)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, captavene, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (UK Rev 1.4)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, captavenu, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.9)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, captavenuu, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.6)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, captavenua, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.4)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, captavenj, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Japan Rev 0.2)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, captaven, 0, captaven, captaven, captaven_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Asia Rev 1.4)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, captavena, captaven, captaven, captaven, captaven_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Asia Rev 1.0)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, captavene, captaven, captaven, captaven, captaven_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (UK Rev 1.4)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, captavenu, captaven, captaven, captaven, captaven_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.9)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, captavenuu, captaven, captaven, captaven, captaven_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.6)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, captavenua, captaven, captaven, captaven, captaven_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.4)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, captavenj, captaven, captaven, captaven, captaven_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Japan Rev 0.2)", MACHINE_SUPPORTS_SAVE )
// DE-0396-0 PCB sets (Z80 for sound)
GAME( 1993, fghthistu, fghthist, fghthistu, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-09, DE-0396-0 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistu, fghthist, fghthistu, fghthist, fghthist_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-09, DE-0396-0 PCB)", MACHINE_SUPPORTS_SAVE )
// DE-0395-1 PCB sets (HuC6280 for sound)
GAME( 1993, fghthist, 0 , fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (World ver 43-09, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistua, fghthist, fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-06, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistub, fghthist, fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-05, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistj, fghthist, fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-07, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthist, 0 , fghthsta, fghthist, fghthist_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (World ver 43-09, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistua, fghthist, fghthsta, fghthist, fghthist_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-06, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistub, fghthist, fghthsta, fghthist, fghthist_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-05, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistj, fghthist, fghthsta, fghthist, fghthist_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-07, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
// DE-0380-2 PCB sets (HuC6280 for sound)
GAME( 1993, fghthista, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (World ver 43-07, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistb, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (World ver 43-05, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistuc, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-03, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistja, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-05, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthista, fghthist, fghthist, fghthist, fghthist_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (World ver 43-07, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistb, fghthist, fghthist, fghthist, fghthist_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (World ver 43-05, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistuc, fghthist, fghthist, fghthist, fghthist_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-03, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistja, fghthist, fghthist, fghthist, fghthist_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-05, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
// DE-0380-1 PCB sets (HuC6280 for sound)
GAME( 1993, fghthistjb, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-04, DE-0380-1 PCB)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, fghthistjb, fghthist, fghthist, fghthist, fghthist_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-04, DE-0380-1 PCB)", MACHINE_SUPPORTS_SAVE )
// DE-0397-0 PCB sets (Z80 for sound)
GAME( 1994, nslasher, 0, nslasher, nslasher, deco32_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (Korea Rev 1.3, DE-0397-0 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1994, nslasherj, nslasher, nslasher, nslasher, deco32_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (Japan Rev 1.2, DE-0397-0 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1994, nslashers, nslasher, nslasher, nslasher, deco32_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (Over Sea Rev 1.2, DE-0397-0 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1994, nslasher, 0, nslasher, nslasher, nslasher_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (Korea Rev 1.3, DE-0397-0 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1994, nslasherj, nslasher, nslasher, nslasher, nslasher_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (Japan Rev 1.2, DE-0397-0 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1994, nslashers, nslasher, nslasher, nslasher, nslasher_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (Over Sea Rev 1.2, DE-0397-0 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
// DE-0395-1 PCB sets (HuC6280 for sound)
GAME( 1994, nslasheru, nslasher, nslasheru, nslasher, deco32_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (US Rev 1.2, DE-0395-1 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1994, nslasheru, nslasher, nslasheru, nslasher, nslasher_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (US Rev 1.2, DE-0395-1 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1994, tattass, 0, tattass, tattass, deco32_state, tattass, ROT0, "Data East Pinball", "Tattoo Assassins (US prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1994, tattassa, tattass, tattass, tattass, deco32_state, tattass, ROT0, "Data East Pinball", "Tattoo Assassins (Asia prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1994, tattass, 0, tattass, tattass, nslasher_state, tattass, ROT0, "Data East Pinball", "Tattoo Assassins (US prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1994, tattassa, tattass, tattass, tattass, nslasher_state, tattass, ROT0, "Data East Pinball", "Tattoo Assassins (Asia prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
// Dragon Gun / Lock 'n' Loaded have very different sprite hardware
GAME( 1993, dragngun, 0, dragngun, dragngun, dragngun_state, dragngun, ROT0, "Data East Corporation", "Dragon Gun (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )

View File

@ -77,7 +77,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, dietgo_state )
AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */
AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot104", deco104_device, soundlatch_r)
AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
@ -259,14 +259,13 @@ static MACHINE_CONFIG_START( dietgo )
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(IOPORT("SYSTEM"))
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SOUNDLATCH_IRQ_CB(INPUTLINE("audiocpu", 0))
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_INTERLEAVE
MCFG_DECO146_SET_USE_MAGIC_ADDRESS_XOR
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_32_22MHz/9) /* verified on pcb */
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)

View File

@ -42,7 +42,7 @@
#include "machine/ldstub.h"
#include "machine/watchdog.h"
#include "machine/z80ctc.h"
#include "machine/z80dart.h"
#include "machine/z80sio.h"
#include "sound/ay8910.h"
#include "sound/spkrdev.h"
#include "render.h"
@ -408,7 +408,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dleuro_io_map, AS_IO, 8, dlair_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x03) AM_MIRROR(0x7c) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
AM_RANGE(0x80, 0x83) AM_MIRROR(0x7c) AM_DEVREADWRITE("sio", z80dart_device, ba_cd_r, ba_cd_w)
AM_RANGE(0x80, 0x83) AM_MIRROR(0x7c) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w)
ADDRESS_MAP_END
@ -755,8 +755,8 @@ static MACHINE_CONFIG_START( dleuro )
MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_Z80CTC_ZC0_CB(WRITELINE(dlair_state, write_speaker))
MCFG_DEVICE_ADD("sio", Z80SIO0, MASTER_CLOCK_EURO/4 /* same as "maincpu" */)
MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_ADD("sio", Z80SIO, MASTER_CLOCK_EURO/4 /* same as "maincpu" */)
MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
// TODO: hook up tx and rx callbacks
MCFG_WATCHDOG_ADD("watchdog")

View File

@ -11,6 +11,7 @@
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "cpu/i8085/i8085.h"
//#include "bus/s100/s100.h"
#include "machine/terminal.h"

View File

@ -59,11 +59,10 @@
#include "cpu/z80/z80.h"
#include "cpu/z80/z80daisy.h"
#include "bus/einstein/userport/userport.h"
#include "machine/clock.h"
#include "machine/z80pio.h"
#include "sound/ay8910.h"
#include "rendlay.h"
#include "softlist.h"
#include "speaker.h"
@ -71,87 +70,6 @@
#define VERBOSE_KEYBOARD 0
#define VERBOSE_DISK 0
/***************************************************************************
80 COLUMN DEVICE
***************************************************************************/
/* lower 3 bits of address define a 256-byte "row".
* upper 8 bits define the offset in the row,
* data bits define data to write
*/
WRITE8_MEMBER(einstein_state::einstein_80col_ram_w)
{
m_crtc_ram[((offset & 0x07) << 8) | ((offset >> 8) & 0xff)] = data;
}
READ8_MEMBER(einstein_state::einstein_80col_ram_r)
{
return m_crtc_ram[((offset & 0x07) << 8) | ((offset >> 8) & 0xff)];
}
/* TODO: Verify implementation */
/* From traces of the TK02 board character ROM is addressed by the 6845 as follows
bit 0..2 ra0..ra2
bit 3..10 data 0..7 from VRAM
bit 11 ra3
bit 12 jumper M004, this could be used to select two different character
sets.
*/
MC6845_UPDATE_ROW( einstein_state::crtc_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();
uint8_t *data = m_region_gfx1->base();
uint8_t char_code, data_byte;
int i, x;
for (i = 0, x = 0; i < x_count; i++, x += 8)
{
char_code = m_crtc_ram[(ma + i) & 0x07ff];
data_byte = data[(char_code << 3) + (ra & 0x07) + ((ra & 0x08) << 8)];
bitmap.pix32(y, x + 0) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 7)];
bitmap.pix32(y, x + 1) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 6)];
bitmap.pix32(y, x + 2) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 5)];
bitmap.pix32(y, x + 3) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 4)];
bitmap.pix32(y, x + 4) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 3)];
bitmap.pix32(y, x + 5) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 2)];
bitmap.pix32(y, x + 6) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 1)];
bitmap.pix32(y, x + 7) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 0)];
}
}
WRITE_LINE_MEMBER(einstein_state::einstein_6845_de_changed)
{
m_de=state;
}
/* bit 0 - latched display enabled (DE) from 6845
* bit 1 - Jumper M003 0 = 40 column mode (color monitor), 1 = 80 column mode (b/w monitor)
* bit 2 - Jumper M002 0 = 50Hz, 1 = 60Hz
* bit 3 - Jumper M001 0 = ???, 1=??? perminently wired high on both the boards I have seen - PHS.
*/
READ8_MEMBER(einstein_state::einstein_80col_state_r)
{
uint8_t result = 0;
result |= m_de;
result |= m_80column_dips->read() & 0x06;
return result;
}
/* int priority */
/* keyboard int->ctc/adc->pio */
static const z80_daisy_config einstein_daisy_chain[] =
{
{ "keyboard_daisy" },
{ IC_I058 },
{ "adc_daisy" },
{ IC_I063 },
{ "fire_daisy" },
{ nullptr }
};
/***************************************************************************
KEYBOARD
@ -222,27 +140,19 @@ READ8_MEMBER(einstein_state::einstein_keyboard_data_read)
WRITE8_MEMBER(einstein_state::einstein_drsel_w)
{
if(VERBOSE_DISK)
if (VERBOSE_DISK)
logerror("%s: einstein_drsel_w %02x\n", machine().describe_context(), data);
/* bit 0 to 3 select the drive */
static const char *names[] = { IC_I042 ":0", IC_I042 ":1", IC_I042 ":2", IC_I042 ":3" };
floppy_image_device *floppy = nullptr;
for(int i=0; i<4; i++) {
if(BIT(data, i)) {
floppy_connector *con = machine().device<floppy_connector>(names[i]);
if(con)
floppy = con->get_device();
}
}
/* double sided drive connected? */
if (m_config->read() & data)
{
/* bit 4 selects the side then */
//floppy->ss_w(BIT(data, 4));
}
if (floppy) floppy->ss_w(0);
if (BIT(data, 0)) floppy = m_floppy[0]->get_device();
if (BIT(data, 1)) floppy = m_floppy[1]->get_device();
if (BIT(data, 2)) floppy = m_floppy[2]->get_device();
if (BIT(data, 3)) floppy = m_floppy[3]->get_device();
if (floppy)
floppy->ss_w(BIT(data, 4));
m_fdc->set_floppy(floppy);
}
@ -283,6 +193,18 @@ WRITE8_MEMBER(einstein_state::einstein_rom_w)
INTERRUPTS
***************************************************************************/
/* int priority */
/* keyboard int->ctc/adc->pio */
static const z80_daisy_config einstein_daisy_chain[] =
{
{ "keyboard_daisy" },
{ IC_I058 },
{ "adc_daisy" },
{ IC_I063 },
{ "fire_daisy" },
{ nullptr }
};
WRITE_LINE_MEMBER(einstein_state::write_centronics_busy)
{
m_centronics_busy = state;
@ -382,13 +304,13 @@ WRITE8_MEMBER(einstein_state::einstein_fire_int_w)
void einstein_state::machine_start()
{
// setup expansion slot
m_pipe->set_program_space(&m_maincpu->space(AS_PROGRAM));
m_pipe->set_io_space(&m_maincpu->space(AS_IO));
}
void einstein_state::machine_reset()
{
//device_t *floppy;
//uint8_t config = m_config->read();
/* initialize memory mapping */
m_bank2->set_base(m_ram->pointer());
m_bank3->set_base(m_ram->pointer() + 0x8000);
@ -399,57 +321,6 @@ void einstein_state::machine_reset()
to be set to 1, which causes all these to be DISABLED */
m_interrupt = 0;
m_interrupt_mask = 0;
/* configure floppy drives */
/* floppy_type_t type_80 = FLOPPY_STANDARD_5_25_DSHD;
floppy_type_t type_40 = FLOPPY_STANDARD_5_25_SSDD_40;
floppy = machine().device("floppy0");
floppy_drive_set_geometry(floppy, config & 0x01 ? type_80 : type_40);
floppy = machine().device("floppy1");
floppy_drive_set_geometry(floppy, config & 0x02 ? type_80 : type_40);
floppy = machine().device("floppy2");
floppy_drive_set_geometry(floppy, config & 0x04 ? type_80 : type_40);
floppy = machine().device("floppy3");
floppy_drive_set_geometry(floppy, config & 0x08 ? type_80 : type_40);*/
}
MACHINE_RESET_MEMBER(einstein_state,einstein2)
{
/* call standard initialization first */
einstein_state::machine_reset();
/* 80 column card palette */
m_palette->set_pen_color(tms9928a_device::PALETTE_SIZE, rgb_t::black());
m_palette->set_pen_color(tms9928a_device::PALETTE_SIZE + 1, rgb_t(0, 224, 0));
}
MACHINE_START_MEMBER(einstein_state,einstein2)
{
m_crtc_ram = std::make_unique<uint8_t[]>(2048);
memset(m_crtc_ram.get(), 0, sizeof(uint8_t) * 2048);
einstein_state::machine_start();
}
/***************************************************************************
VIDEO EMULATION
***************************************************************************/
uint32_t einstein_state::screen_update_einstein2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
if (&screen == m_color_screen)
{
bitmap_rgb32 &src = m_tms9929a->get_bitmap();
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
for (int x = cliprect.min_x; x <= cliprect.max_x; x++)
bitmap.pix32(y, x) = src.pix32(y, x);
}
else if (&screen == m_crtc_screen)
m_mc6845->screen_update( screen, bitmap, cliprect);
else
fatalerror("Unknown screen '%s'\n", screen.tag());
return 0;
}
@ -485,21 +356,13 @@ static ADDRESS_MAP_START( einstein_io, AS_IO, 8, einstein_state )
/* block 5, z80ctc */
AM_RANGE(0x28, 0x2b) AM_MIRROR(0xff04) AM_DEVREADWRITE(IC_I058, z80ctc_device, read, write)
/* block 6, z80pio */
AM_RANGE(0x30, 0x33) AM_MIRROR(0xff04) AM_DEVREADWRITE(IC_I063, z80pio_device, read, write)
AM_RANGE(0x30, 0x33) AM_MIRROR(0xff04) AM_DEVREADWRITE(IC_I063, z80pio_device, read_alt, write_alt)
#if 0
/* block 7, adc */
AM_RANGE(0x38, 0x38) AM_MIRROR(0xff07) AM_DEVREADWRITE_LEGACY(IC_I050, adc0844_r, adc0844_w)
#endif
ADDRESS_MAP_END
static ADDRESS_MAP_START( einstein2_io, AS_IO, 8, einstein_state )
AM_IMPORT_FROM(einstein_io)
AM_RANGE(0x40, 0x47) AM_SELECT(0xff00) AM_READWRITE(einstein_80col_ram_r, einstein_80col_ram_w)
AM_RANGE(0x48, 0x48) AM_MIRROR(0xff00) AM_DEVWRITE("crtc", mc6845_device, address_w)
AM_RANGE(0x49, 0x49) AM_MIRROR(0xff00) AM_DEVWRITE("crtc", mc6845_device, register_w)
AM_RANGE(0x4c, 0x4c) AM_MIRROR(0xff00) AM_READ(einstein_80col_state_r)
ADDRESS_MAP_END
/***************************************************************************
INPUT PORTS
@ -613,33 +476,6 @@ static INPUT_PORTS_START( einstein )
/* analog joystick 2 Y axis */
PORT_START("JOY2_Y")
PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(1) PORT_MINMAX(1,0xff) PORT_CODE_DEC(JOYCODE_Y_UP_SWITCH) PORT_CODE_INC(JOYCODE_Y_DOWN_SWITCH) PORT_PLAYER(2) PORT_REVERSE
PORT_START("config")
PORT_CONFNAME(0x01, 0x00, "Floppy drive #1")
PORT_CONFSETTING(0x00, "Single sided")
PORT_CONFSETTING(0x01, "Double sided")
PORT_CONFNAME(0x02, 0x00, "Floppy drive #2")
PORT_CONFSETTING(0x00, "Single sided")
PORT_CONFSETTING(0x02, "Double sided")
PORT_CONFNAME(0x04, 0x00, "Floppy drive #3")
PORT_CONFSETTING(0x00, "Single sided")
PORT_CONFSETTING(0x04, "Double sided")
PORT_CONFNAME(0x08, 0x00, "Floppy drive #4")
PORT_CONFSETTING(0x00, "Single sided")
PORT_CONFSETTING(0x08, "Double sided")
INPUT_PORTS_END
static INPUT_PORTS_START( einstein_80col )
PORT_INCLUDE(einstein)
/* dip switches on the 80 column card */
PORT_START("80column_dips")
PORT_DIPNAME(0x02, 0x00, "Startup mode")
PORT_DIPSETTING(0x00, "40 column")
PORT_DIPSETTING(0x02, "80 column")
PORT_DIPNAME(0x04, 0x00, "50/60Hz")
PORT_DIPSETTING(0x00, "50Hz")
PORT_DIPSETTING(0x04, "60Hz")
INPUT_PORTS_END
@ -647,27 +483,13 @@ INPUT_PORTS_END
MACHINE DRIVERS
***************************************************************************/
/* F4 Character Displayer */
static const gfx_layout einstei2_charlayout =
{
8, 10, /* 8 x 10 characters */
256, /* 256*2 characters */
1, /* 1 bits per pixel */
{ 0 },
/* x offsets */
{ 0, 1, 2, 3, 4, 5, 6, 7 },
/* y offsets */
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 0x800*8, 0x801*8 },
8*8
};
static GFXDECODE_START( einstei2 )
GFXDECODE_ENTRY( "gfx1", 0x0000, einstei2_charlayout, 16, 1 )
GFXDECODE_ENTRY( "gfx1", 0x1000, einstei2_charlayout, 16, 1 )
GFXDECODE_END
static SLOT_INTERFACE_START( einstein_floppies )
SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
SLOT_INTERFACE("3ss", TEAC_FD_30A)
SLOT_INTERFACE("3ds", FLOPPY_3_DSDD)
SLOT_INTERFACE("525ssqd", FLOPPY_525_SSQD)
SLOT_INTERFACE("525qd", FLOPPY_525_QD)
SLOT_INTERFACE("35ssdd", FLOPPY_35_SSDD)
SLOT_INTERFACE("35dd", FLOPPY_35_DD)
SLOT_INTERFACE_END
static MACHINE_CONFIG_START( einstein )
@ -684,7 +506,10 @@ static MACHINE_CONFIG_START( einstein )
MCFG_DEVICE_ADD(IC_I063, Z80PIO, XTAL_X002 / 2)
MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(IC_I001, INPUT_LINE_IRQ0))
MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("cent_data_out", output_latch_device, write))
MCFG_Z80PIO_OUT_PB_CB(DEVWRITELINE("centronics", centronics_device, write_strobe))
MCFG_Z80PIO_OUT_ARDY_CB(DEVWRITELINE("centronics", centronics_device, write_strobe))
MCFG_Z80PIO_IN_PB_CB(DEVREAD8("user", einstein_userport_device, read))
MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("user", einstein_userport_device, write))
MCFG_Z80PIO_OUT_BRDY_CB(DEVWRITELINE("user", einstein_userport_device, brdy_w))
MCFG_DEVICE_ADD(IC_I058, Z80CTC, XTAL_X002 / 2)
MCFG_Z80CTC_INTR_CB(INPUTLINE(IC_I001, INPUT_LINE_IRQ0))
@ -705,9 +530,9 @@ static MACHINE_CONFIG_START( einstein )
/* video hardware */
MCFG_DEVICE_ADD( "tms9929a", TMS9929A, XTAL_10_738635MHz / 2 )
MCFG_TMS9928A_VRAM_SIZE(0x4000) /* 16k RAM, provided by IC i040 and i041 */
MCFG_TMS9928A_SET_SCREEN( "screen" )
MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" )
MCFG_SCREEN_UPDATE_DEVICE( "tms9929a", tms9929a_device, screen_update )
MCFG_TMS9928A_SET_SCREEN("screen")
MCFG_TMS9928A_SCREEN_ADD_PAL("screen")
MCFG_SCREEN_UPDATE_DEVICE("tms9929a", tms9929a_device, screen_update)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@ -730,10 +555,10 @@ static MACHINE_CONFIG_START( einstein )
MCFG_WD1770_ADD(IC_I042, XTAL_X002)
MCFG_FLOPPY_DRIVE_ADD(IC_I042 ":0", einstein_floppies, "525dd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(IC_I042 ":1", einstein_floppies, "525dd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(IC_I042 ":2", einstein_floppies, "525dd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(IC_I042 ":3", einstein_floppies, "525dd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(IC_I042 ":0", einstein_floppies, "3ss", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(IC_I042 ":1", einstein_floppies, "3ss", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(IC_I042 ":2", einstein_floppies, "525qd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(IC_I042 ":3", einstein_floppies, "525qd", floppy_image_device::default_floppy_formats)
/* software lists */
MCFG_SOFTWARE_LIST_ADD("disk_list","einstein")
@ -742,36 +567,13 @@ static MACHINE_CONFIG_START( einstein )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("64K")
MACHINE_CONFIG_END
// tatung pipe connector
MCFG_TATUNG_PIPE_ADD("pipe")
static MACHINE_CONFIG_DERIVED( einstei2, einstein )
MCFG_CPU_MODIFY(IC_I001)
MCFG_CPU_IO_MAP(einstein2_io)
MCFG_MACHINE_START_OVERRIDE(einstein_state,einstein2)
MCFG_MACHINE_RESET_OVERRIDE(einstein_state,einstein2)
/* video hardware */
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("80column", RASTER)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(640, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_UPDATE_DRIVER(einstein_state, screen_update_einstein2)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", einstei2)
/* 2 additional colors for the 80 column screen */
MCFG_PALETTE_ADD("palette", tms9928a_device::PALETTE_SIZE + 2)
MCFG_MC6845_ADD("crtc", MC6845, "80column", XTAL_X002 / 4)
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8)
MCFG_MC6845_UPDATE_ROW_CB(einstein_state, crtc_update_row)
MCFG_MC6845_OUT_DE_CB(WRITELINE(einstein_state, einstein_6845_de_changed))
// user port
MCFG_EINSTEIN_USERPORT_ADD("user")
MCFG_EINSTEIN_USERPORT_BSTB_HANDLER(DEVWRITELINE(IC_I063, z80pio_device, strobe_b))
MACHINE_CONFIG_END
@ -796,32 +598,16 @@ ROM_START( einstein )
ROM_FILL(0x4000, 0x4000, 0xff)
ROM_END
ROM_START( einstei2 )
ROM_REGION(0x8000, "bios", 0)
/* i023 */
ROM_SYSTEM_BIOS(0, "mos12", "MOS 1.2")
ROMX_LOAD("mos12.i023", 0, 0x2000, CRC(ec134953) SHA1(a02125d8ebcda48aa784adbb42a8b2d7ef3a4b77), ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "mos121", "MOS 1.21")
ROMX_LOAD("mos121.i023", 0, 0x2000, CRC(a746eeb6) SHA1(f75aaaa777d0fd92225acba291f6bf428b341d3e), ROM_BIOS(2))
ROM_RELOAD(0x2000, 0x2000)
/* i024 */
ROM_FILL(0x4000, 0x4000, 0xff)
/* character rom from 80 column card */
ROM_REGION(0x2000, "gfx1", 0)
ROM_LOAD("tk02-v1.00.rom", 0, 0x2000, CRC(ad3c4346) SHA1(cd57e630371b4d0314e3f15693753fb195c7257d))
ROM_END
ROM_START( einst256 )
ROM_REGION(0x8000, "bios", 0)
ROM_LOAD("tc256.rom", 0x0000, 0x4000, CRC(ef8dad88) SHA1(eb2102d3bef572db7161c26a7c68a5fcf457b4d0) )
ROM_END
/***************************************************************************
GAME DRIVERS
***************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
COMP( 1984, einstein, 0, 0, einstein, einstein, einstein_state, 0, "Tatung", "Einstein TC-01", 0 )
COMP( 1984, einstei2, einstein, 0, einstei2, einstein_80col, einstein_state, 0, "Tatung", "Einstein TC-01 + 80 column device", 0 )
COMP( 1984, einst256, 0, 0, einstein, einstein, einstein_state, 0, "Tatung", "Einstein 256", MACHINE_NOT_WORKING )
// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
COMP( 1984, einstein, 0, 0, einstein, einstein, einstein_state, 0, "Tatung", "Einstein TC-01", 0 )
COMP( 1984, einst256, 0, 0, einstein, einstein, einstein_state, 0, "Tatung", "Einstein 256", MACHINE_NOT_WORKING )

View File

@ -420,18 +420,6 @@ static ADDRESS_MAP_START(tms7020_mem, AS_PROGRAM, 8, exelv_state)
AM_RANGE(0xc800, 0xf7ff) AM_NOP
ADDRESS_MAP_END
static ADDRESS_MAP_START(tms7020_port, AS_IO, 8, exelv_state)
AM_RANGE(TMS7000_PORTA, TMS7000_PORTA) AM_READ(tms7020_porta_r)
AM_RANGE(TMS7000_PORTB, TMS7000_PORTB) AM_WRITE(tms7020_portb_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START(tms7041_port, AS_IO, 8, exelv_state)
AM_RANGE(TMS7000_PORTA, TMS7000_PORTA) AM_READ(tms7041_porta_r)
AM_RANGE(TMS7000_PORTB, TMS7000_PORTB) AM_WRITE(tms7041_portb_w)
AM_RANGE(TMS7000_PORTC, TMS7000_PORTC) AM_READWRITE(tms7041_portc_r, tms7041_portc_w)
AM_RANGE(TMS7000_PORTD, TMS7000_PORTD) AM_READWRITE(tms7041_portd_r, tms7041_portd_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START(tms7040_mem, AS_PROGRAM, 8, exelv_state)
AM_RANGE(0x0080, 0x00ff) AM_NOP
@ -490,12 +478,19 @@ static MACHINE_CONFIG_START( exl100 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS7020_EXL, XTAL_4_9152MHz)
MCFG_CPU_PROGRAM_MAP(tms7020_mem)
MCFG_CPU_IO_MAP(tms7020_port)
MCFG_TMS7000_IN_PORTA_CB(READ8(exelv_state, tms7020_porta_r))
MCFG_TMS7000_OUT_PORTB_CB(WRITE8(exelv_state, tms7020_portb_w))
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", exelv_state, exelv_hblank_interrupt, "screen", 0, 1)
MCFG_MACHINE_START_OVERRIDE(exelv_state, exl100)
MCFG_CPU_ADD("tms7041", TMS7041, XTAL_4_9152MHz)
MCFG_CPU_IO_MAP(tms7041_port)
MCFG_TMS7000_IN_PORTA_CB(READ8(exelv_state, tms7041_porta_r))
MCFG_TMS7000_OUT_PORTB_CB(WRITE8(exelv_state, tms7041_portb_w))
MCFG_TMS7000_IN_PORTC_CB(READ8(exelv_state, tms7041_portc_r))
MCFG_TMS7000_OUT_PORTC_CB(WRITE8(exelv_state, tms7041_portc_w))
MCFG_TMS7000_IN_PORTD_CB(READ8(exelv_state, tms7041_portd_r))
MCFG_TMS7000_OUT_PORTD_CB(WRITE8(exelv_state, tms7041_portd_w))
MCFG_QUANTUM_PERFECT_CPU("maincpu")
@ -539,12 +534,19 @@ static MACHINE_CONFIG_START( exeltel )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS7040, XTAL_4_9152MHz)
MCFG_CPU_PROGRAM_MAP(tms7040_mem)
MCFG_CPU_IO_MAP(tms7020_port)
MCFG_TMS7000_IN_PORTA_CB(READ8(exelv_state, tms7020_porta_r))
MCFG_TMS7000_OUT_PORTB_CB(WRITE8(exelv_state, tms7020_portb_w))
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", exelv_state, exelv_hblank_interrupt, "screen", 0, 1)
MCFG_MACHINE_START_OVERRIDE(exelv_state, exeltel)
MCFG_CPU_ADD("tms7042", TMS7042, XTAL_4_9152MHz)
MCFG_CPU_IO_MAP(tms7041_port)
MCFG_TMS7000_IN_PORTA_CB(READ8(exelv_state, tms7041_porta_r))
MCFG_TMS7000_OUT_PORTB_CB(WRITE8(exelv_state, tms7041_portb_w))
MCFG_TMS7000_IN_PORTC_CB(READ8(exelv_state, tms7041_portc_r))
MCFG_TMS7000_OUT_PORTC_CB(WRITE8(exelv_state, tms7041_portc_w))
MCFG_TMS7000_IN_PORTD_CB(READ8(exelv_state, tms7041_portd_r))
MCFG_TMS7000_OUT_PORTD_CB(WRITE8(exelv_state, tms7041_portd_w))
MCFG_QUANTUM_PERFECT_CPU("maincpu")

View File

@ -927,32 +927,32 @@ ROM_START( pbillrd )
ROM_LOAD( "82s129.3c", 0x0500, 0x0100, CRC(cc1657e5) SHA1(358f20dce376c2389009f9673ce38b297af863f6) )
ROM_END
ROM_START( pbillrds ) /* Encrytped with a Sega MC-8123 (317-0030) CPU module */
ROM_START( pbillrds ) /* Encrytped with a Sega MC-8123 (317-0030) CPU module, Sega ID# 836-6304 PERFECT BILLIARD */
ROM_REGION( 0x10000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "10626.8n", 0x0000, 0x4000, CRC(51d725e6) SHA1(d7007c983530780e7fa3686cb7a6d7c382c802fa) ) /* encrypted */
ROM_LOAD( "10625.8r", 0x4000, 0x8000, CRC(8977c724) SHA1(f00835a04dc6fa7d8c1e382dace515f2aa7d6f44) ) /* encrypted */
ROM_LOAD( "10627.10n", 0xc000, 0x4000, CRC(2335e6dd) SHA1(82352b6f4abea88aad3a96ca63cccccb6e278f48) ) /* encrypted */
ROM_LOAD( "epr-10626.8n", 0x0000, 0x4000, CRC(51d725e6) SHA1(d7007c983530780e7fa3686cb7a6d7c382c802fa) ) /* encrypted */
ROM_LOAD( "epr-10625.8r", 0x4000, 0x8000, CRC(8977c724) SHA1(f00835a04dc6fa7d8c1e382dace515f2aa7d6f44) ) /* encrypted */
ROM_LOAD( "epr-10627.10n", 0xc000, 0x4000, CRC(2335e6dd) SHA1(82352b6f4abea88aad3a96ca63cccccb6e278f48) ) /* encrypted */
ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */
ROM_LOAD( "317-0030.key", 0x0000, 0x2000, CRC(9223f06d) SHA1(51a22a4c80fe273526bde68918c13c6476cec383) )
ROM_REGION( 0xc000, "gfx1", 0 ) /* GFX */
ROM_LOAD( "10622.3h", 0x000000, 0x04000, CRC(23b864ac) SHA1(5a13ad6f2278761967269eed8c07077293c921d6) )
ROM_LOAD( "10623.3h", 0x004000, 0x04000, CRC(3dbfb790) SHA1(81a2645b7b3addf8f5b83043c967647cea476002) )
ROM_LOAD( "10624.3g", 0x008000, 0x04000, CRC(b80032a9) SHA1(20096bdae1aad8913d8d7b1045912ea5ae7fce6f) )
ROM_LOAD( "epr-10622.3h", 0x000000, 0x04000, CRC(23b864ac) SHA1(5a13ad6f2278761967269eed8c07077293c921d6) ) /* these 3 roms had a green strip down the middle of the label */
ROM_LOAD( "epr-10623.3h", 0x004000, 0x04000, CRC(3dbfb790) SHA1(81a2645b7b3addf8f5b83043c967647cea476002) ) /* these 3 roms had a green strip down the middle of the label */
ROM_LOAD( "epr-10624.3g", 0x008000, 0x04000, CRC(b80032a9) SHA1(20096bdae1aad8913d8d7b1045912ea5ae7fce6f) ) /* these 3 roms had a green strip down the middle of the label */
ROM_REGION( 0x6000, "gfx2", 0 ) /* GFX */
ROM_LOAD( "10619.3r", 0x000000, 0x02000, CRC(3296b9d9) SHA1(51393306f74394de96c4097b6244e8eb36114dac) )
ROM_LOAD( "10621.3m", 0x002000, 0x02000, CRC(3dca8e4b) SHA1(ca0416d8faba0bb5e6b8c0a8fc227b57caa75f71) )
ROM_LOAD( "10620.3n", 0x004000, 0x02000, CRC(ee76b079) SHA1(99abe2c5b1889d20bc3f5720b168690e3979fb2f) )
ROM_LOAD( "epr-10619.3r", 0x000000, 0x02000, CRC(3296b9d9) SHA1(51393306f74394de96c4097b6244e8eb36114dac) )
ROM_LOAD( "epr-10621.3m", 0x002000, 0x02000, CRC(3dca8e4b) SHA1(ca0416d8faba0bb5e6b8c0a8fc227b57caa75f71) )
ROM_LOAD( "epr-10620.3n", 0x004000, 0x02000, CRC(ee76b079) SHA1(99abe2c5b1889d20bc3f5720b168690e3979fb2f) )
ROM_REGION( 0x0600, "proms", 0 )
ROM_LOAD( "82s129.3a", 0x0000, 0x0100, CRC(44802169) SHA1(f181d80185e0f87ee906d2b40e3a5deb6f563aa2) )
ROM_LOAD( "82s129.4d", 0x0100, 0x0100, CRC(69ca07cc) SHA1(38ab08174633b53d70a38aacb40059a25cf12069) )
ROM_LOAD( "82s129.4a", 0x0200, 0x0100, CRC(145f950a) SHA1(b007d0c1cc9545e0e241b39b79a48593d457f826) )
ROM_LOAD( "82s129.3d", 0x0300, 0x0100, CRC(43d24e17) SHA1(de5c9391574781dcd8f244794010e8eddffa1c1e) )
ROM_LOAD( "82s129.3b", 0x0400, 0x0100, CRC(7fdc872c) SHA1(98572560aa524490489d4202dba292a5af9f15e7) )
ROM_LOAD( "82s129.3c", 0x0500, 0x0100, CRC(cc1657e5) SHA1(358f20dce376c2389009f9673ce38b297af863f6) )
ROM_LOAD( "pr10628.3a", 0x0000, 0x0100, CRC(44802169) SHA1(f181d80185e0f87ee906d2b40e3a5deb6f563aa2) ) /* 82s129 or compatible BPROM */
ROM_LOAD( "pr10633.4d", 0x0100, 0x0100, CRC(69ca07cc) SHA1(38ab08174633b53d70a38aacb40059a25cf12069) ) /* 82s129 or compatible BPROM */
ROM_LOAD( "pr10632.4a", 0x0200, 0x0100, CRC(145f950a) SHA1(b007d0c1cc9545e0e241b39b79a48593d457f826) ) /* 82s129 or compatible BPROM */
ROM_LOAD( "pr10631.3d", 0x0300, 0x0100, CRC(43d24e17) SHA1(de5c9391574781dcd8f244794010e8eddffa1c1e) ) /* 82s129 or compatible BPROM */
ROM_LOAD( "pr10629.3b", 0x0400, 0x0100, CRC(7fdc872c) SHA1(98572560aa524490489d4202dba292a5af9f15e7) ) /* 82s129 or compatible BPROM */
ROM_LOAD( "pr10630.3c", 0x0500, 0x0100, CRC(cc1657e5) SHA1(358f20dce376c2389009f9673ce38b297af863f6) ) /* 82s129 or compatible BPROM */
ROM_END
ROM_START( pbillrdsa ) /* all ROMs were HN4827128G-25, except 17, HN27256G-25, CPU module marked 317-5008, but seems to act the same as above */

View File

@ -32,6 +32,7 @@ public:
DECLARE_READ16_MEMBER(switches_r);
private:
virtual void machine_start() override;
virtual void machine_reset() override;
required_shared_ptr<uint16_t> m_p_base;
@ -64,6 +65,12 @@ static INPUT_PORTS_START( ft68m )
INPUT_PORTS_END
void ft68m_state::machine_start()
{
// GATE 1 is tied to Vcc; other GATE and SRC pins are all grounded
subdevice<am9513_device>("stc")->gate1_w(1);
}
void ft68m_state::machine_reset()
{
uint8_t* ROM = memregion("roms")->base();

View File

@ -155,7 +155,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, funkyjet_state )
AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */
AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco146_device, soundlatch_r)
AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w)
AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w)
@ -334,6 +334,7 @@ static MACHINE_CONFIG_START( funkyjet )
MCFG_DECO146_IN_PORTA_CB(IOPORT("INPUTS"))
MCFG_DECO146_IN_PORTB_CB(IOPORT("SYSTEM"))
MCFG_DECO146_IN_PORTC_CB(IOPORT("DSW"))
MCFG_DECO146_SOUNDLATCH_IRQ_CB(INPUTLINE("audiocpu", 0))
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_INTERLEAVE
@ -361,8 +362,6 @@ static MACHINE_CONFIG_START( funkyjet )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_32_22MHz/9)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2
MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)

View File

@ -7117,10 +7117,10 @@ GAME( 199?, soccernw, 0, royalcd1, royalcrd, funworld_state, soccernw,
// Other games...
GAME( 198?, funquiz, 0, funquiz, funquiz, funworld_state, 0, ROT0, "Fun World / Oehlinger", "Fun World Quiz (Austrian)", 0 )
GAMEL( 1986, novoplay, 0, fw2ndpal, novoplay, funworld_state, 0, ROT0, "Admiral/Novomatic", "Novo Play Multi Card / Club Card", 0, layout_novoplay )
GAME( 1991, intrgmes, 0, intrgmes, funworld, funworld_state, 0, ROT0, "Inter Games", "Unknown Inter Games poker", MACHINE_NOT_WORKING )
GAMEL( 1985, fw_a7_11, 0, fw_a7_11, funworld, funworld_state, 0, ROT0, "Fun World", "Unknown Fun World A7-11 game 1", MACHINE_NOT_WORKING, layout_jollycrd )
GAMEL( 1985, fw_a7_11a, fw_a7_11, fw_a7_11, funworld, funworld_state, 0, ROT0, "Fun World", "Unknown Fun World A7-11 game 2", MACHINE_NOT_WORKING, layout_jollycrd )
GAMEL( 1991, fw_a0_1, 0, fw_a7_11, funworld, funworld_state, 0, ROT0, "Fun World", "Unknown Fun World A0-1 game", MACHINE_NOT_WORKING, layout_jollycrd )
GAME( 1991, intrgmes, 0, intrgmes, funworld, funworld_state, 0, ROT0, "Inter Games", "unknown Inter Games poker", MACHINE_NOT_WORKING )
GAMEL( 1985, fw_a7_11, 0, fw_a7_11, funworld, funworld_state, 0, ROT0, "Fun World", "unknown Fun World A7-11 game 1", MACHINE_NOT_WORKING, layout_jollycrd )
GAMEL( 1985, fw_a7_11a, fw_a7_11, fw_a7_11, funworld, funworld_state, 0, ROT0, "Fun World", "unknown Fun World A7-11 game 2", MACHINE_NOT_WORKING, layout_jollycrd )
GAMEL( 1991, fw_a0_1, 0, fw_a7_11, funworld, funworld_state, 0, ROT0, "Fun World", "unknown Fun World A0-1 game", MACHINE_NOT_WORKING, layout_jollycrd )
// These are 2-in-1 stealth boards, they can run the Poker game, or, using completely separate hardware on the same PCB, a NES / MSX Multigames!
GAMEL( 1991, royalcrd_nes, royalcrd, royalcd2, royalcrd, funworld_state, 0, ROT0, "bootleg", "Royal Card (stealth with NES multigame)", MACHINE_NOT_WORKING, layout_jollycrd )

View File

@ -66,7 +66,7 @@ U.S.A. Trivia New Sports General Facts
or alt: Adult Sex 2 or alt: Adult Sex 3 or alt: Gay Times
NOTE: Trivia Question rom names are the internal names used. IE: read from the file with
a Hex Editor. Any "_alt" extention is used to separate different roms with the same
a Hex Editor. Any "_alt" extension is used to separate different roms with the same
label or internal name.
*/
@ -90,26 +90,12 @@ public:
m_maincpu(*this, "maincpu"),
m_dac(*this, "dac"),
m_ticket(*this, "ticket"),
m_screen(*this, "screen") { }
required_device<cpu_device> m_maincpu;
required_device<dac_bit_interface> m_dac;
optional_device<ticket_dispenser_device> m_ticket;
required_device<screen_device> m_screen;
virtual void video_start() override;
m_screen(*this, "screen"),
m_signature(*this, "signature"),
m_rombank(*this, "rombank") { }
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
bitmap_ind16 m_bitmap;
uint8_t m_drawctrl[3];
uint8_t m_color[8];
int m_prevoffset;
int m_yadd;
int m_signature_answer;
int m_signature_pos;
uint8_t m_nmi_mask;
DECLARE_WRITE8_MEMBER(gei_drawctrl_w);
DECLARE_WRITE8_MEMBER(gei_bitmap_w);
DECLARE_READ8_MEMBER(catchall);
@ -137,50 +123,83 @@ public:
DECLARE_READ8_MEMBER(banksel_5_r);
DECLARE_READ8_MEMBER(signature_r);
DECLARE_WRITE8_MEMBER(signature_w);
DECLARE_WRITE8_MEMBER(signature2_w);
DECLARE_WRITE8_MEMBER(lamps_w);
DECLARE_WRITE8_MEMBER(sound_w);
DECLARE_WRITE8_MEMBER(sound2_w);
DECLARE_WRITE8_MEMBER(lamps2_w);
DECLARE_WRITE8_MEMBER(nmi_w);
DECLARE_READ8_MEMBER(portC_r);
DECLARE_DRIVER_INIT(geimulti);
DECLARE_DRIVER_INIT(setbank);
DECLARE_DRIVER_INIT(bank2k);
DECLARE_DRIVER_INIT(bank8k);
DECLARE_DRIVER_INIT(geimulti);
INTERRUPT_GEN_MEMBER(vblank_irq);
protected:
virtual void video_start() override;
private:
bitmap_ind16 m_bitmap;
uint8_t m_drawctrl[3];
uint8_t m_color[8];
int m_prevoffset;
int m_yadd;
int m_signature_answer;
int m_signature_pos;
uint8_t m_nmi_mask;
required_device<cpu_device> m_maincpu;
required_device<dac_bit_interface> m_dac;
optional_device<ticket_dispenser_device> m_ticket;
required_device<screen_device> m_screen;
optional_region_ptr<uint8_t> m_signature;
optional_memory_bank m_rombank;
};
WRITE8_MEMBER(gei_state::gei_drawctrl_w)
{
m_drawctrl[offset] = data;
if (offset == 2)
{
int i;
for (i = 0; i < 8; i++)
if (BIT(m_drawctrl[1],i)) m_color[i] = m_drawctrl[0] & 7;
for (int i = 0; i < 8; i++)
if (BIT(m_drawctrl[1], i)) m_color[i] = m_drawctrl[0] & 7;
}
}
WRITE8_MEMBER(gei_state::gei_bitmap_w)
{
int sx,sy;
int i;
m_yadd = (offset==m_prevoffset) ? (m_yadd+1):0;
m_yadd = (offset == m_prevoffset) ? (m_yadd + 1) : 0;
m_prevoffset = offset;
sx = 8 * (offset % 64);
sy = offset / 64;
int sx = 8 * (offset % 64);
int sy = offset / 64;
sy = (sy + m_yadd) & 0xff;
for (i = 0; i < 8; i++)
m_bitmap.pix16(sy, sx+i) = m_color[8-i-1];
for (int i = 0; i < 8; i++)
m_bitmap.pix16(sy, sx + i) = m_color[8 - i - 1];
}
void gei_state::video_start()
{
m_screen->register_screen_bitmap(m_bitmap);
save_item(NAME(m_drawctrl));
save_item(NAME(m_color));
save_item(NAME(m_prevoffset));
save_item(NAME(m_yadd));
save_item(NAME(m_nmi_mask));
save_item(NAME(m_bitmap));
if (m_signature.found())
{
save_item(NAME(m_signature_answer));
save_item(NAME(m_signature_pos));
}
}
uint32_t gei_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@ -192,28 +211,28 @@ uint32_t gei_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
WRITE8_MEMBER(gei_state::lamps_w)
{
/* 5 button lamps */
output().set_led_value(0,data & 0x01);
output().set_led_value(1,data & 0x02);
output().set_led_value(2,data & 0x04);
output().set_led_value(3,data & 0x08);
output().set_led_value(4,data & 0x10);
output().set_led_value(0, data & 0x01);
output().set_led_value(1, data & 0x02);
output().set_led_value(2, data & 0x04);
output().set_led_value(3, data & 0x08);
output().set_led_value(4, data & 0x10);
/* 3 button lamps for deal, cancel, stand in poker games;
lamp order verified in poker and selection self tests */
output().set_led_value(7,data & 0x20);
output().set_led_value(5,data & 0x40);
output().set_led_value(6,data & 0x80);
output().set_led_value(7, data & 0x20);
output().set_led_value(5, data & 0x40);
output().set_led_value(6, data & 0x80);
}
WRITE8_MEMBER(gei_state::sound_w)
{
/* bit 3 - coin lockout, lamp10 in poker / lamp6 in trivia test modes */
machine().bookkeeping().coin_lockout_global_w(~data & 0x08);
output().set_led_value(9,data & 0x08);
output().set_led_value(9, data & 0x08);
/* bit 5 - ticket out in trivia games */
if (m_ticket != nullptr)
m_ticket->write(machine().dummy_space(), 0, (data & 0x20)<< 2);
m_ticket->write(machine().dummy_space(), 0, (data & 0x20) << 2);
/* bit 6 enables NMI */
m_nmi_mask = data & 0x40;
@ -224,16 +243,16 @@ WRITE8_MEMBER(gei_state::sound_w)
WRITE8_MEMBER(gei_state::sound2_w)
{
/* bit 3,6 - coin lockout, lamp10+11 in selection test mode */
/* bit 3,6 - coin lockout, lamp 10 + 11 in selection test mode */
machine().bookkeeping().coin_lockout_w(0, ~data & 0x08);
machine().bookkeeping().coin_lockout_w(1, ~data & 0x40);
output().set_led_value(9,data & 0x08);
output().set_led_value(10,data & 0x40);
output().set_led_value(9, data & 0x08);
output().set_led_value(10, data & 0x40);
/* bit 4,5 - lamps 12, 13 in selection test mode;
12 lights up if dsw maximum bet = 30 an bet > 15 or if dsw maximum bet = 10 an bet = 10 */
output().set_led_value(11,data & 0x10);
output().set_led_value(12,data & 0x20);
output().set_led_value(11, data & 0x10);
output().set_led_value(12, data & 0x20);
/* bit 7 goes directly to the sound amplifier */
m_dac->write(BIT(data, 7));
@ -242,13 +261,13 @@ WRITE8_MEMBER(gei_state::sound2_w)
WRITE8_MEMBER(gei_state::lamps2_w)
{
/* bit 4 - play/raise button lamp, lamp 9 in poker test mode */
output().set_led_value(8,data & 0x10);
output().set_led_value(8, data & 0x10);
}
WRITE8_MEMBER(gei_state::nmi_w)
{
/* bit 4 - play/raise button lamp, lamp 9 in selection test mode */
output().set_led_value(8,data & 0x10);
output().set_led_value(8, data & 0x10);
/* bit 6 enables NMI */
m_nmi_mask = data & 0x40;
@ -271,68 +290,68 @@ READ8_MEMBER(gei_state::portC_r)
WRITE8_MEMBER(gei_state::banksel_main_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x8000);
m_rombank->set_entry(0);
}
WRITE8_MEMBER(gei_state::banksel_1_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x10000);
m_rombank->set_entry(1);
}
WRITE8_MEMBER(gei_state::banksel_2_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x18000);
m_rombank->set_entry(2);
}
WRITE8_MEMBER(gei_state::banksel_3_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x20000);
m_rombank->set_entry(3);
}
WRITE8_MEMBER(gei_state::banksel_4_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x28000);
m_rombank->set_entry(4);
}
WRITE8_MEMBER(gei_state::banksel_5_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x30000);
m_rombank->set_entry(5);
}
WRITE8_MEMBER(gei_state::banksel_1_1_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x10000);
m_rombank->set_entry(0);
}
WRITE8_MEMBER(gei_state::banksel_2_1_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x14000);
m_rombank->set_entry(2);
}
WRITE8_MEMBER(gei_state::banksel_3_1_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x18000);
m_rombank->set_entry(4);
}
WRITE8_MEMBER(gei_state::banksel_4_1_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x1c000);
m_rombank->set_entry(6);
}
WRITE8_MEMBER(gei_state::banksel_5_1_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x20000);
m_rombank->set_entry(8);
}
WRITE8_MEMBER(gei_state::banksel_1_2_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x12000);
m_rombank->set_entry(1);
}
WRITE8_MEMBER(gei_state::banksel_2_2_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x16000);
m_rombank->set_entry(3);
}
WRITE8_MEMBER(gei_state::banksel_3_2_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x1a000);
m_rombank->set_entry(5);
}
WRITE8_MEMBER(gei_state::banksel_4_2_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x1e000);
m_rombank->set_entry(7);
}
WRITE8_MEMBER(gei_state::banksel_5_2_w)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x22000);
m_rombank->set_entry(9);
}
WRITE8_MEMBER(gei_state::geimulti_bank_w)
@ -360,36 +379,36 @@ WRITE8_MEMBER(gei_state::geimulti_bank_w)
}
if (bank != -1)
membank("bank1")->set_base(memregion("bank")->base() + bank*0x8000);
m_rombank->set_entry(bank);
}
READ8_MEMBER(gei_state::banksel_1_r)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x10000);
m_rombank->set_entry(1);
return 0x03;
}
READ8_MEMBER(gei_state::banksel_2_r)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x18000);
m_rombank->set_entry(2);
return 0x03;
}
READ8_MEMBER(gei_state::banksel_3_r)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x20000);
m_rombank->set_entry(3);
return 0x03;
}
READ8_MEMBER(gei_state::banksel_4_r)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x28000);
m_rombank->set_entry(4);
return 0x03;
}
READ8_MEMBER(gei_state::banksel_5_r)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x30000);
m_rombank->set_entry(5);
return 0x03;
}
@ -403,24 +422,10 @@ READ8_MEMBER(gei_state::signature_r)
WRITE8_MEMBER(gei_state::signature_w)
{
if (data == 0) m_signature_pos = 0;
else
{
static const uint8_t signature[8] = { 0xff, 0x01, 0xfd, 0x05, 0xf5, 0x15, 0xd5, 0x55 };
m_signature_answer = signature[m_signature_pos++];
m_signature_pos &= 7; /* safety; shouldn't happen */
}
}
WRITE8_MEMBER(gei_state::signature2_w)
{
if (data == 0) m_signature_pos = 0;
else
{
static const uint8_t signature[8] = { 0xff, 0x01, 0xf7, 0x11, 0xd7, 0x51, 0x57, 0x51 };
m_signature_answer = signature[m_signature_pos++];
m_signature_answer = m_signature[m_signature_pos++];
m_signature_pos &= 7; /* safety; shouldn't happen */
}
@ -428,7 +433,7 @@ WRITE8_MEMBER(gei_state::signature2_w)
static ADDRESS_MAP_START( getrivia_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
@ -450,7 +455,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( gselect_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
AM_RANGE(0x4000, 0x40ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_1_1_w)
AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_1_2_w)
@ -465,7 +470,7 @@ ADDRESS_MAP_END
// TODO: where are mapped the lower 0x2000 bytes of the banks?
static ADDRESS_MAP_START( amuse_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
@ -481,7 +486,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( gepoker_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
@ -498,7 +503,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( amuse1_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_1_1_w)
AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_2_1_w)
@ -528,7 +533,7 @@ static ADDRESS_MAP_START( findout_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x6200, 0x6200) AM_WRITE(signature_w)
AM_RANGE(0x6400, 0x6400) AM_READ(signature_r)
AM_RANGE(0x7800, 0x7fff) AM_ROM /*space for diagnostic ROM?*/
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank")
AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w)
AM_RANGE(0x0000, 0xffff) AM_READ(catchall)
@ -546,7 +551,7 @@ static ADDRESS_MAP_START( quizvid_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x603d, 0x603d) AM_READ(banksel_2_r)
AM_RANGE(0x603e, 0x603e) AM_READ(banksel_1_r)
AM_RANGE(0x7800, 0x7fff) AM_ROM /*space for diagnostic ROM?*/
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank")
AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w)
AM_RANGE(0x0000, 0xffff) AM_READ(catchall)
@ -557,7 +562,7 @@ static ADDRESS_MAP_START( suprpokr_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
AM_RANGE(0x6200, 0x6200) AM_WRITE(signature2_w)
AM_RANGE(0x6200, 0x6200) AM_WRITE(signature_w)
AM_RANGE(0x6400, 0x6400) AM_READ(signature_r)
AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w)
@ -573,7 +578,7 @@ static ADDRESS_MAP_START( geimulti_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x5a00, 0x5cff) AM_WRITE(geimulti_bank_w)
AM_RANGE(0x6000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank")
AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w)
ADDRESS_MAP_END
@ -587,7 +592,7 @@ static ADDRESS_MAP_START( sprtauth_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x5a00, 0x5cff) AM_WRITE(geimulti_bank_w)
AM_RANGE(0x6000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank")
AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w)
ADDRESS_MAP_END
@ -870,6 +875,37 @@ static INPUT_PORTS_START(sexappl)
PORT_INCLUDE(trivia_standard)
INPUT_PORTS_END
static INPUT_PORTS_START(bigjoke)
PORT_START("DSWA")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Orientation" ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10, "Horizontal" )
PORT_DIPSETTING( 0x00, "Vertical" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_INCLUDE(trivia_standard)
INPUT_PORTS_END
static INPUT_PORTS_START( gt103 )
PORT_START("DSWA") /* DSW A */
PORT_DIPNAME( 0x07, 0x01, "Coinage Multiplier" ) PORT_DIPLOCATION("SW1:1,2,3")
@ -951,7 +987,7 @@ static INPUT_PORTS_START(geimulti)
PORT_INCLUDE(gselect)
PORT_MODIFY("DSWA")
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
PORT_DIPNAME( 0x0f, 0x09, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
PORT_DIPSETTING( 0x07, DEF_STR( 7C_1C ) )
PORT_DIPSETTING( 0x06, DEF_STR( 6C_1C ) )
@ -986,7 +1022,7 @@ static INPUT_PORTS_START(sprtauth)
PORT_INCLUDE(trivia_standard)
PORT_START("DSWA")
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
PORT_DIPNAME( 0x0f, 0x09, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
PORT_DIPSETTING( 0x07, DEF_STR( 7C_1C ) )
PORT_DIPSETTING( 0x06, DEF_STR( 6C_1C ) )
@ -1020,7 +1056,7 @@ INPUT_PORTS_END
INTERRUPT_GEN_MEMBER(gei_state::vblank_irq)
{
if(m_nmi_mask)
if (m_nmi_mask)
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
@ -1028,7 +1064,7 @@ INTERRUPT_GEN_MEMBER(gei_state::vblank_irq)
static MACHINE_CONFIG_START( getrivia )
MCFG_CPU_ADD("maincpu",Z80,4000000) /* 4 MHz */
MCFG_CPU_PROGRAM_MAP(getrivia_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", gei_state, vblank_irq)
MCFG_CPU_VBLANK_INT_DRIVER("screen", gei_state, vblank_irq)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -1157,6 +1193,7 @@ static MACHINE_CONFIG_DERIVED( sprtauth, getrivia )
MCFG_CPU_PROGRAM_MAP(sprtauth_map)
MACHINE_CONFIG_END
/***************************************************
Rom board is UVM-1A
@ -1200,7 +1237,7 @@ Rom board is UVM-1B
Contains:
4 2732 eproms (Program Code)
Battery (3.5V litium battery) backed up NEC 8444XF301
Battery (3.5V lithium battery) backed up NEC 8444XF301
DM7408N
****************************************************/
@ -1219,7 +1256,7 @@ Rom board is UVM 10 B
Contains:
2 2764 eproms (Program Code)
5 27128 eproms (Question roms)
Battery (3V litium battery) backed up HM6117P-4
Battery (3V lithium battery) backed up HM6117P-4
SN74LS374
MMI PAL10L8
@ -1228,7 +1265,7 @@ Sets will be listed by "series" - the program code version
is not as important as maintaining the correct questions
sets as per known series
Missing sets will be filled as dumped, as question roms
are interchangeable, operators did thier own swaps
are interchangeable, operators did their own swaps
Note: Question roms that contain "#1" (or 2 ect)
are corrected roms (spelling and / or answers)
@ -1357,7 +1394,7 @@ Rom board is UVM-4B
Contains 5 2764 eproms, MMI PAL16R4CN
Battery (3V litium battery) backed up HM6117P-4
Battery (3V lithium battery) backed up HM6117P-4
Roms labeled as:
@ -1408,7 +1445,7 @@ PAL16R4
Roms in this order on the UMV 10 C board:
Label Normaly in the slot
Label Normally in the slot
--------------------------------
High
Control
@ -1456,7 +1493,7 @@ ROM_START( gepoker1 ) /* v50.02 with roms for ICB dated 9-30-86 */
ROM_LOAD( "blackjack_icb_9-30-86", 0x12000, 0x2000, CRC(82804184) SHA1(2e2e6a80c99c8eb226dc54c1d32d0bf24de300a4) )
ROM_LOAD( "casinoslots_icb_9-30-86", 0x14000, 0x2000, CRC(713c3963) SHA1(a9297c04fc44522ca6891516a2c744712132896a) )
ROM_LOAD( "beatthespread_icb_9-30-86", 0x16000, 0x2000, CRC(93654d2a) SHA1(3aa5a54b91867c03182e93a7f1607545503a33f7) )
ROM_LOAD( "instantbingo_t24_10-07-86", 0x18000, 0x2000, CRC(de87ed0a) SHA1(4a26d93368c1a39dd38aabe450c34203101f0ef7) ) /* Found with this set, is it compatible or an operater swap? */
ROM_LOAD( "instantbingo_t24_10-07-86", 0x18000, 0x2000, CRC(de87ed0a) SHA1(4a26d93368c1a39dd38aabe450c34203101f0ef7) ) /* Found with this set, is it compatible or an operator swap? */
ROM_END
ROM_START( gepoker2 ) /* v50.02 with control dated 9-30-84 */
@ -1509,7 +1546,7 @@ Rom board is "GEI, inc UVM-8B" with a date code of "8339"
Contains 1 AM2732A eprom, 5 HN4827128G eproms, 1 MMI PAL16R4CN, 1 7474N
Battery (3V litium battery) backed up HM6117P-4
Battery (3V lithium battery) backed up HM6117P-4
Roms labeled as:
@ -1539,6 +1576,12 @@ ROM_START( suprpokr ) /* Super Poker Version 10.19S BOBC. Rom board UMV-7C */
ROM_LOAD( "supr_pokr_10.19s_#1", 0x00000, 0x4000, CRC(50662b4d) SHA1(967161a755db43d2cfd5ce92e14c5284f1f1f8ad) )
ROM_LOAD( "supr_pokr_10.19s_#2", 0x08000, 0x4000, CRC(22b45aeb) SHA1(006c3072cc44c6fde9b4d15163dc70707bbd5a9c) )
ROM_RELOAD( 0x0c000, 0x4000 )
ROM_REGION( 0x0800, "nvram", 0 )
ROM_LOAD( "suprpokr.nvram", 0x0000, 0x0800, CRC(0e716e23) SHA1(15e35bfbab9a6778834df1c85c25643010054cdb) )
ROM_REGION( 0x0008, "signature", 0 )
ROM_LOAD( "suprpokr.sig", 0x0000, 0x0008, CRC(8f622afe) SHA1(8c1c8cee444c88211760a0f5c3adcfd887da5bb7) )
ROM_END
ROM_START( suprpokra ) /* Super Poker Version 10.15S BOBC. Rom board UMV-7C */
@ -1546,6 +1589,12 @@ ROM_START( suprpokra ) /* Super Poker Version 10.15S BOBC. Rom board UMV-7C */
ROM_LOAD( "supr_pokr_10.15s_#1", 0x00000, 0x4000, CRC(5cc7c1e0) SHA1(1cdca32c4df7227dab77574abe344b291741139e) )
ROM_LOAD( "supr_pokr_10.15s_#2", 0x08000, 0x4000, CRC(e47d6e2a) SHA1(9cabc42275dad8be6cd5b167e381ddb5bf08276d) )
ROM_RELOAD( 0x0c000, 0x4000 )
ROM_REGION( 0x0800, "nvram", 0 )
ROM_LOAD( "suprpokr.nvram", 0x0000, 0x0800, CRC(0e716e23) SHA1(15e35bfbab9a6778834df1c85c25643010054cdb) )
ROM_REGION( 0x0008, "signature", 0 )
ROM_LOAD( "suprpokr.sig", 0x0000, 0x0008, CRC(8f622afe) SHA1(8c1c8cee444c88211760a0f5c3adcfd887da5bb7) )
ROM_END
ROM_START( suprpokrb ) /* Super Poker Version 10.10 BOBC. Rom board UMV-7C */
@ -1553,6 +1602,12 @@ ROM_START( suprpokrb ) /* Super Poker Version 10.10 BOBC. Rom board UMV-7C */
ROM_LOAD( "supr_pokr_10.10_#1", 0x00000, 0x4000, CRC(8324471f) SHA1(c38b7a735ef06feea3e8d4ba6dd963e24d38c792) )
ROM_LOAD( "supr_pokr_10.10_#2", 0x08000, 0x4000, CRC(a82ca9c5) SHA1(3b0f4ad7d53370dc1f00dec696e993359147a496) )
ROM_RELOAD( 0x0c000, 0x4000 )
ROM_REGION( 0x0800, "nvram", 0 )
ROM_LOAD( "suprpokr.nvram", 0x0000, 0x0800, CRC(0e716e23) SHA1(15e35bfbab9a6778834df1c85c25643010054cdb) )
ROM_REGION( 0x0008, "signature", 0 )
ROM_LOAD( "suprpokr.sig", 0x0000, 0x0008, CRC(8f622afe) SHA1(8c1c8cee444c88211760a0f5c3adcfd887da5bb7) )
ROM_END
@ -1565,6 +1620,12 @@ ROM_START( reelfun ) /* v7.03 */
ROM_LOAD( "reelfun-3-phrase", 0x20000, 0x8000, CRC(199e36b0) SHA1(d9dfe39c9a4fca1169150f8941f8ebc499dfbaf5) )
ROM_LOAD( "reelfun-4-person", 0x28000, 0x8000, CRC(49b0710b) SHA1(a38b3251bcb8683d43bdb903036970140a9735e6) )
ROM_LOAD( "reelfun-5-song_title", 0x30000, 0x8000, CRC(cce01c45) SHA1(c484f5828928edf39335cedf21acab0b9e2a6881) )
ROM_REGION( 0x0800, "nvram", 0 )
ROM_LOAD( "reelfun.nvram", 0x0000, 0x0800, CRC(fbb791ce) SHA1(0db77cbc42b5362b3d2ecde46a4289619e8f59a6) ) /* Defaults */
ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
ROM_LOAD( "reelfun.sig", 0x0000, 0x0008, CRC(c8e944a3) SHA1(d34de9e3163ba61fa4e4f2264caff40434fcc9b0) )
ROM_END
ROM_START( reelfun1 ) /* v7.01 */
@ -1576,6 +1637,12 @@ ROM_START( reelfun1 ) /* v7.01 */
ROM_LOAD( "reelfun-3-phrase", 0x20000, 0x8000, CRC(199e36b0) SHA1(d9dfe39c9a4fca1169150f8941f8ebc499dfbaf5) )
ROM_LOAD( "reelfun-4-person", 0x28000, 0x8000, CRC(49b0710b) SHA1(a38b3251bcb8683d43bdb903036970140a9735e6) )
ROM_LOAD( "reelfun-5-song_title", 0x30000, 0x8000, CRC(cce01c45) SHA1(c484f5828928edf39335cedf21acab0b9e2a6881) )
ROM_REGION( 0x0800, "nvram", 0 )
ROM_LOAD( "reelfun.nvram", 0x0000, 0x0800, CRC(fbb791ce) SHA1(0db77cbc42b5362b3d2ecde46a4289619e8f59a6) ) /* Defaults */
ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
ROM_LOAD( "reelfun.sig", 0x0000, 0x0008, CRC(c8e944a3) SHA1(d34de9e3163ba61fa4e4f2264caff40434fcc9b0) )
ROM_END
ROM_START( findout )
@ -1590,6 +1657,12 @@ ROM_START( findout )
ROM_REGION( 0x0200, "gfx2", 0 )
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(f3b663bb) SHA1(5a683951c8d3a2baac4b49e379d6e10e35465c8a) ) /* unknown */
ROM_REGION( 0x0800, "nvram", 0 )
ROM_LOAD( "findout.nvram", 0x0000, 0x0800, CRC(b6950ffc) SHA1(ecc08904b208fb87c7a47d2f6081652405bf73b4) ) /* Defaults */
ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
ROM_LOAD( "findout.sig", 0x0000, 0x0008, CRC(c8e944a3) SHA1(d34de9e3163ba61fa4e4f2264caff40434fcc9b0) )
ROM_END
ROM_START( gt507uk )
@ -1599,7 +1672,7 @@ ROM_START( gt507uk )
ROM_LOAD( "aerospace", 0x10000, 0x8000, CRC(cb555d46) SHA1(559ae05160d7893ff96311a2177eba039a4cf186) ) /* Also found in Series #11 set */
ROM_LOAD( "english_sport_4", 0x18000, 0x8000, CRC(6ae8a63d) SHA1(c6018141d8bbe0ed7619980bf7da89dd91d7fcc2) )
ROM_LOAD( "general_facts", 0x20000, 0x8000, CRC(f921f108) SHA1(fd72282df5cee0e6ab55268b40785b3dc8e3d65b) ) /* Also found in Series #11 set */
ROM_LOAD( "horrors", 0x28000, 0x8000, CRC(5f7b262a) SHA1(047480d6bf5c6d0603d538b84c996bd226f07f77) ) /* Possiblely Series #13 rom */
ROM_LOAD( "horrors", 0x28000, 0x8000, CRC(5f7b262a) SHA1(047480d6bf5c6d0603d538b84c996bd226f07f77) ) /* Possibly Series #13 rom */
ROM_LOAD( "pop_music", 0x30000, 0x8000, CRC(884fec7c) SHA1(b389216c17f516df4e15eee46246719dd4acb587) )
ROM_END
@ -1695,6 +1768,9 @@ ROM_START( gtsers15 ) /* v5.06, From a TRIV3D romboard */
ROM_LOAD( "nfl_football", 0x28000, 0x8000, CRC(42eb2849) SHA1(c24e681a508ef8350f7e5d50aea2c31cf70ce5c9) )
ROM_LOAD( "adult_sex_6", 0x30000, 0x8000, CRC(d66f35f7) SHA1(81b56756230b27b0903d0c5df30439726526afe2) )
/* Missing unknown question rom (and alternate question?) */
ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
ROM_LOAD( "gtsers15.sig", 0x0000, 0x0008, CRC(c8e944a3) SHA1(d34de9e3163ba61fa4e4f2264caff40434fcc9b0) )
ROM_END
ROM_START( gt103a1 ) /* Need to verify which series these belong to */
@ -1790,6 +1866,27 @@ ROM_START( quiz211 )
ROM_LOAD( "pal10l8cn.bin", 0x0000, 0x002c, CRC(86095226) SHA1(e7496efbd5ca240f0df2dfa5627402342c7f5384) )
ROM_END
ROM_START( bigjoke ) /* TRIV3D PCB, stickered THE JOKE 11/87 */
ROM_REGION( 0x38000, "maincpu", 0 )
ROM_LOAD( "joke_cont_128", 0x00000, 0x4000, CRC(acb4355f) SHA1(0fc9a218e94fc49297bd11547fb193d1f91ce90c) )
ROM_LOAD( "joke_2764", 0x08000, 0x2000, CRC(8a7ac263) SHA1(6f9a18b7f38e83cc2d1f1911e3b01ada7df4d2ba) ) /* banked */
ROM_LOAD( "joke_drty_nsty_1012", 0x10000, 0x8000, CRC(e3fcd0e3) SHA1(fae1ddfb244e5c84e9ba6d4b90bd265365a4f662) ) /* banked ROMs for solution data */
ROM_LOAD( "joke_fams_folk_1012", 0x18000, 0x8000, CRC(08eb35f2) SHA1(0dba706750a9276dac9976eb07f64ecf4a42e658) )
ROM_LOAD( "joke_jmbl_joke_1012", 0x20000, 0x8000, CRC(26daf757) SHA1(76560bf437b4ee851f075b30e79df563367830cf) )
ROM_LOAD( "joke_racl_ethn_1012", 0x28000, 0x8000, CRC(ca814fa9) SHA1(0c2ac15568bd64c282f257089305309ef7f91411) )
ROM_LOAD( "joke_wrkg_wrld_1012", 0x30000, 0x8000, CRC(f4b0fa76) SHA1(70b4a29d928729da52948c12e55473ecf83b3daa) )
ROM_REGION( 0x0800, "nvram", 0 )
ROM_LOAD( "bigjoke.nvram", 0x0000, 0x0800, CRC(89e0e325) SHA1(c2398c64f938e8ed036e72a5ba0b703513f31a6d) )
ROM_REGION( 0x0400, "pld", 0 ) // probably one of the two GALs provides the "signature"
ROM_LOAD( "gal16v8", 0x0000, 0x0117, NO_DUMP ) /* read protected */
ROM_LOAD( "gal18v8", 0x0200, 0x0117, NO_DUMP ) /* read protected */
ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
ROM_LOAD( "bigjoke.sig", 0x0000, 0x0008, CRC(bfa5388b) SHA1(876bf954116fcc14d0bed017a9bec42038c5f89a) )
ROM_END
ROM_START( sexappl ) /* TRIV3D PCB, stickered SEX APPL 6.02 5/92 */
ROM_REGION( 0x38000, "maincpu", 0 )
ROM_LOAD( "6.02_cont", 0x00000, 0x4000, CRC(63ad3593) SHA1(fd93a71b82ef04757d79485ca4c7e306b2983c76) )
@ -1802,6 +1899,13 @@ ROM_START( sexappl ) /* TRIV3D PCB, stickered SEX APPL 6.02 5/92 */
ROM_REGION( 0x0800, "nvram", 0 )
ROM_LOAD( "sexappl.nvram", 0x0000, 0x0800, CRC(be65737c) SHA1(5b8a603a9ddecdad4aaef0b9e8ef373885b236c0) ) /* Defaults but with card dispenser OFF! */
ROM_REGION( 0x0400, "pld", 0 ) // probably one of the two GALs provides the "signature"
ROM_LOAD( "gal16v8", 0x0000, 0x0117, NO_DUMP ) /* read protected */
ROM_LOAD( "gal18v8", 0x0200, 0x0117, NO_DUMP ) /* read protected */
ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
ROM_LOAD( "sexappl.sig", 0x0000, 0x0008, CRC(c8e944a3) SHA1(d34de9e3163ba61fa4e4f2264caff40434fcc9b0) )
ROM_END
/*
@ -1877,78 +1981,98 @@ ROM_START( sprtauth )
ROM_LOAD( "sprt-auth-supr-bowl.bank9", 0x40000, 0x8000, CRC(3a548fe5) SHA1(6ad35516651a8a878b512cb3eff697952e194dd0) )
ROM_LOAD( "sprt-auth-rev1-kb.grph", 0x68000, 0x8000, CRC(c4f734ac) SHA1(028217fe6d7be75f75e9f67b665d465c729d2995) )
ROM_REGION( 0x0800, "nvram", 0 )
ROM_LOAD( "sprtauth.nvram", 0x0000, 0x0800, CRC(969869f9) SHA1(a5a7b679e99255650dc8ea12d2b36e97e6296aae) ) /* Defaults but with card dispenser OFF! */
ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
ROM_LOAD( "sprtauth.sig", 0x0000, 0x0008, CRC(c8e944a3) SHA1(d34de9e3163ba61fa4e4f2264caff40434fcc9b0) )
ROM_END
DRIVER_INIT_MEMBER(gei_state,setbank)
DRIVER_INIT_MEMBER(gei_state, setbank)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x2000);
m_rombank->set_base(memregion("maincpu")->base() + 0x2000);
}
DRIVER_INIT_MEMBER(gei_state,geimulti)
DRIVER_INIT_MEMBER(gei_state, bank2k)
{
membank("bank1")->set_base(memregion("bank")->base() + 0x0000);
m_rombank->configure_entries(0, 10, memregion("maincpu")->base() + 0x10000, 0x2000);
m_rombank->set_entry(0);
}
GAME( 1982, jokpoker, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1983, jokpokera, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1983, jokpokerb, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.04BI 10-19-88, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1983, jokpokerc, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Poker No Raise ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1982, superbwl, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Super Bowl (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
DRIVER_INIT_MEMBER(gei_state, bank8k)
{
m_rombank->configure_entries(0, 6, memregion("maincpu")->base() + 0x8000, 0x8000);
m_rombank->set_entry(0);
}
GAME( 1982, gs4002, 0, gselect, gselect, gei_state, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1982, gs4002a, gs4002, gselect, gselect, gei_state, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
DRIVER_INIT_MEMBER(gei_state, geimulti)
{
m_rombank->configure_entries(0, 14, memregion("bank")->base(), 0x8000);
m_rombank->set_entry(0);
}
GAME( 1982, amuse, 0, amuse, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Amuse (Version 50.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1982, amuse1, amuse, amuse1, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1983, amuse1a, amuse, amuse1, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1982, jokpoker, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1983, jokpokera, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1983, jokpokerb, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.04BI 10-19-88, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1983, jokpokerc, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Poker No Raise ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1982, superbwl, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Super Bowl (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gepoker, 0, gepoker, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gepoker1, gepoker, gepoker, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gepoker2, gepoker, gepoker, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gepoker3, gepoker, gepoker, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1982, gs4002, 0, gselect, gselect, gei_state, bank2k, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1982, gs4002a, gs4002, gselect, gselect, gei_state, bank2k, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsers1, 0, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsers2, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsers3, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsers4, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsers5, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 5)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsers7, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 7)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsersa, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsersb, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsers8, 0, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsers8a, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsers9, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 9)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsers10, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsers11, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsers11a, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsers12, gtsers8, findout, gt103, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1986, gtsers14, gtsers8, findout, gt103, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 14)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1986, gtsers15, gtsers8, findout, gt103, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 15)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gt103a1, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Unsorted question roms)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gt103aa, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gt103ab, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gt103asx, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Sex questions)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1982, amuse, 0, amuse, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Amuse (Version 50.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1982, amuse1, amuse, amuse1, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Amuse (Version 30.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1983, amuse1a, amuse, amuse1, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Amuse (Version 30.08A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1985, sextriv1, 0, getrivia, sextriv1, gei_state, 0, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1985, sextriv2, sextriv1, getrivia, sextriv1, gei_state, 0, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gepoker, 0, gepoker, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gepoker1, gepoker, gepoker, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gepoker2, gepoker, gepoker, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gepoker3, gepoker, gepoker, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1986, gt507uk, 0, findout, gt507uk, gei_state, 0, ROT0, "Grayhound Electronics", "Trivia (UK Version 5.07)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1984, gtsers1, 0, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsers2, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsers3, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsers4, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsers5, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 5)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsers7, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 7)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsersa, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsersb, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsers8, 0, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsers8a, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsers9, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 9)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsers10, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsers11, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsers11a, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gtsers12, gtsers8, findout, gt103, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1986, gtsers14, gtsers8, findout, gt103, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 14)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1986, gtsers15, gtsers8, findout, gt103, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 15)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gt103a1, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Unsorted question roms)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gt103aa, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gt103ab, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1984, gt103asx, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Sex questions)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1986, quiz, 0, findout, quiz, gei_state, 0, ROT0, "Elettronolo", "Quiz (Revision 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1985, sextriv1, 0, getrivia, sextriv1, gei_state, bank2k, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1985, sextriv2, sextriv1, getrivia, sextriv1, gei_state, bank2k, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1986, quizvid, 0, quizvid, quiz, gei_state, 0, ROT0, "bootleg", "Video Quiz", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1986, gt507uk, 0, findout, gt507uk, gei_state, bank8k, ROT0, "Grayhound Electronics", "Trivia (UK Version 5.07)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1986, reelfun, 0, findout, reelfun, gei_state, 0, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1986, reelfun1, reelfun, findout, reelfun, gei_state, 0, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.01)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1987, findout, 0, findout, findout, gei_state, 0, ROT0, "Elettronolo", "Find Out (Version 4.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1986, quiz, 0, findout, quiz, gei_state, bank8k, ROT0, "Elettronolo", "Quiz (Revision 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1986, suprpokr, 0, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.19S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1986, suprpokra, suprpokr, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.15S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1986, suprpokrb, suprpokr, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1986, quizvid, 0, quizvid, quiz, gei_state, bank8k, ROT0, "bootleg", "Video Quiz", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1991, quiz211, 0, findout, quiz, gei_state, 0, ROT0, "Elettronolo", "Quiz (Revision 2.11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1986, reelfun, 0, findout, reelfun, gei_state, bank8k, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1986, reelfun1, reelfun, findout, reelfun, gei_state, bank8k, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.01)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1987, findout, 0, findout, findout, gei_state, bank8k, ROT0, "Elettronolo", "Find Out (Version 4.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1992, sexappl, 0, findout, sexappl, gei_state, 0, ROT0, "Grayhound Electronics", "Sex Appeal (Version 6.02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1986, suprpokr, 0, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.19S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1986, suprpokra, suprpokr, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.15S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1986, suprpokrb, suprpokr, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1992, geimulti, 0, geimulti, geimulti, gei_state, geimulti, ROT0, "Grayhound Electronics", "GEI Multi Game", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1992, sprtauth, 0, sprtauth, sprtauth, gei_state, geimulti, ROT0, "Classic Games", "Sports Authority", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1987, bigjoke, 0, findout, bigjoke, gei_state, bank8k, ROT0, "Grayhound Electronics", "The Big Joke (Version 0.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1991, quiz211, 0, findout, quiz, gei_state, bank8k, ROT0, "Elettronolo", "Quiz (Revision 2.11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1992, sexappl, 0, findout, sexappl, gei_state, bank8k, ROT0, "Grayhound Electronics", "Sex Appeal (Version 6.02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1992, geimulti, 0, geimulti, geimulti, gei_state, geimulti, ROT0, "Grayhound Electronics", "GEI Multi Game", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1992, sprtauth, 0, sprtauth, sprtauth, gei_state, geimulti, ROT0, "Classic Games", "Sports Authority", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )

View File

@ -692,7 +692,10 @@ MACHINE_CONFIG_END
ROM_START( ibmpcjr )
ROM_REGION(0x10000,"bios", 0)
ROM_LOAD("bios.rom", 0x0000, 0x10000,CRC(31e3a7aa) SHA1(1f5f7013f18c08ff50d7942e76c4fbd782412414))
ROM_SYSTEM_BIOS( 0, "default", "Default" )
ROMX_LOAD("bios.rom", 0x0000, 0x10000,CRC(31e3a7aa) SHA1(1f5f7013f18c08ff50d7942e76c4fbd782412414), ROM_BIOS(1))
ROM_SYSTEM_BIOS( 1, "quiksilver", "Quicksilver" ) // Alternate bios to boot up faster (Synectics)
ROMX_LOAD("quiksilv.rom", 0x0000, 0x10000, CRC(86aaa1c4) SHA1(b3d7e8ce5de17441891e0b71e5261ed01a169dc1), ROM_BIOS(2))
ROM_REGION(0x08100,"gfx1", 0)
ROM_LOAD("cga.chr", 0x00000, 0x01000, CRC(42009069) SHA1(ed08559ce2d7f97f68b9f540bddad5b6295294dd)) // from an unknown clone cga card

View File

@ -18,6 +18,7 @@
#include "emu.h"
#include "cpu/i8085/i8085.h"
//#include "bus/s100/s100.h"
#include "machine/i8251.h"
#include "machine/pit8253.h"
#include "machine/terminal.h"

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