summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2020-08-07 02:46:28 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2020-08-07 02:46:28 +1000
commit830c6299a88d6332783bca93f405d9febb8acae0 (patch)
tree30d7e1558158d1e0c1e523368d68997a2237f032
parentaa1ef0b0f40d1cc83af079b217bd76b4f9c1eae9 (diff)
pmd85: cleanup; added sound.
-rw-r--r--hash/pmd85_cass.xml647
-rw-r--r--src/mame/drivers/pmd85.cpp320
-rw-r--r--src/mame/includes/pmd85.h169
-rw-r--r--src/mame/machine/pmd85.cpp323
4 files changed, 711 insertions, 748 deletions
diff --git a/hash/pmd85_cass.xml b/hash/pmd85_cass.xml
index 3681c259843..827ba417ba6 100644
--- a/hash/pmd85_cass.xml
+++ b/hash/pmd85_cass.xml
@@ -3,16 +3,21 @@
<!--
license:CC0
-For now tape loading only works in PMD-85.1
+See source notes for more information about tapes and Basic.
+
+These tapes are generally usable with pmd851, pmd852, pmd852a, pmd852b and alfa.
+
+If the Usage shows a filename of xx, it's because it hasn't been possible to identify the number.
+
-->
<softwarelist name="pmd85_cass" description="Tesla PMD-85 cassettes">
<!-- From TOSEC -->
- <software name="auto">
+ <software name="auto" supported="partial"><!-- loads but does nothing -->
<description>Auto</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="1317">
<rom name="auto (198x)(-).ptp" size="1317" crc="1e33b4d6" sha1="6527f2b701e78de177315c43ce434287668ad22a"/>
@@ -24,7 +29,7 @@ For now tape loading only works in PMD-85.1
<description>Bludiště</description>
<year>1988</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="8567">
<rom name="bludiste (1988)(-).ptp" size="8567" crc="62c8ad42" sha1="5b891fb3c92a6d7a23725fcb2e94a046314e98c2"/>
@@ -32,11 +37,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="bombard">
+ <software name="bombard" supported="no"><!-- unrecognised, and can crash MAME at start -->
<description>Bombarder</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In BASIC, LOAD xx and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="2772">
<rom name="bombarder (19xx)(-).ptp" size="2772" crc="7e5b178e" sha1="2d876752fcf774be6464a084144a6a85e2f4c31d"/>
@@ -44,11 +49,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="bdash">
+ <software name="bdash" supported="no"><!-- can crash MAME at start, machine resets while loading -->
<description>Boulder Dash</description>
<year>1988</year>
<publisher>VBG Software</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 03 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="24903">
<rom name="boulder dash (1988)(vbg software).ptp" size="24903" crc="9ea24bb6" sha1="19617ebfe73fcc752c7ddaa8d43367ca7cc74581"/>
@@ -56,11 +61,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="faraonov">
+ <software name="faraonov" supported="no"><!-- unrecognised -->
<description>Faraonova Hbroka</description>
<year>1988</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In BASIC, LOAD xx and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="7096">
<rom name="faraonova hbroka (1988)(-).ptp" size="7096" crc="307994fc" sha1="198ce2a78304aeb61d081d3e64d8f737d2a64918"/>
@@ -68,11 +73,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="flappy">
+ <software name="flappy" supported="no"><!-- machine resets while loading -->
<description>Flappy</description>
<year>1987</year>
<publisher>VBG Software</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 03 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="36448">
<rom name="flappy (1987)(vbg software).ptp" size="36448" crc="0f4cb0a9" sha1="40bf5f34362fdaa25f5de1f95640916ccaee1c4d"/>
@@ -84,7 +89,7 @@ For now tape loading only works in PMD-85.1
<description>Fred</description>
<year>1988</year>
<publisher>VBG Software</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 03 and press Play. E to go up, Ctrl if you get stuck"/>
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="17235">
<rom name="fred (1988)(vbg software).ptp" size="17235" crc="39499aa9" sha1="9b1670900ec3aff9a78ad1dc4079a5c521f62e95"/>
@@ -96,7 +101,7 @@ For now tape loading only works in PMD-85.1
<description>Galaxia</description>
<year>1988</year>
<publisher>Ceres Soft</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="21656">
<rom name="galaxia (1988)(ceres soft).ptp" size="21656" crc="7de36b2e" sha1="ee0e489c99e7274dca788f24bbf4ca45df0cfdda"/>
@@ -108,7 +113,7 @@ For now tape loading only works in PMD-85.1
<description>Hlípa</description>
<year>1989</year>
<publisher>ZO Svazarmu</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="44336">
<rom name="hlipa (1989)(zo svazarmu).ptp" size="44336" crc="26f53a9f" sha1="90ee9074f98b4b110bf5ba34cfc3432a428bde35"/>
@@ -116,11 +121,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="horac">
+ <software name="horac" supported="no"><!-- unrecognised, and can crash MAME at start -->
<description>Horác a pavouci</description>
<year>1985</year>
<publisher>ZO Svazarmu</publisher>
-
+ <info name="usage" value="In Monitor, MGLD xx and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="3292">
<rom name="horac a pavouci (1985)(zo svazarmu).ptp" size="3292" crc="44d23af1" sha1="960961bbffa7d76c0f4e9a0f64c5373f7eabb978"/>
@@ -128,11 +133,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="karel">
+ <software name="karel" supported="no"><!-- loads then freezes -->
<description>Karel</description>
<year>1988</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="7027">
<rom name="karel (1988)(-).ptp" size="7027" crc="8cfb094b" sha1="6bb68b63b1baeb75400fd130a6f962ddafaea3ff"/>
@@ -140,11 +145,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="kuriatko">
+ <software name="kuriatko" supported="partial"><!-- loads but does nothing -->
<description>Kuriatko</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="6379">
<rom name="kuriatko (19xx)(-).ptp" size="6379" crc="bb208585" sha1="3f0a958bc750d49b11b02cb2e5722109472bde5f"/>
@@ -156,7 +161,7 @@ For now tape loading only works in PMD-85.1
<description>Manic Miner</description>
<year>1987</year>
<publisher>VBG Software</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play. Shift to jump." />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="27792">
<rom name="manic miner (1987)(vbg software).ptp" size="27792" crc="f21937aa" sha1="cfbc4ea6f39d2f38da095c19dd8e784e8686861f"/>
@@ -168,7 +173,7 @@ For now tape loading only works in PMD-85.1
<description>Město robotů</description>
<year>1988</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="28221">
<rom name="mesto robotu (1988)(-).ptp" size="28221" crc="07938025" sha1="8c4460275829e503cf330c1fc08d27bd41e878ee"/>
@@ -176,11 +181,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="pampuch">
+ <software name="pampuch" supported="partial"><!-- loads but does nothing -->
<description>Pampuch &amp; Duch</description>
<year>1986</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 01 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="4691">
<rom name="pampuch &amp; duch (1986)(-).ptp" size="4691" crc="8552213a" sha1="a2845da6f8ca66ae78d7815c8e839dfcca79eb06"/>
@@ -192,7 +197,7 @@ For now tape loading only works in PMD-85.1
<description>Penetrator</description>
<year>1988</year>
<publisher>VBG Software</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 03 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="34125">
<rom name="penetrator (1988)(vbg software).ptp" size="34125" crc="c46033fe" sha1="19739f1b1328be1a0886a03fa7619652989afb22"/>
@@ -204,7 +209,7 @@ For now tape loading only works in PMD-85.1
<description>Pexeso</description>
<year>1988</year>
<publisher>Petisoft</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="23006">
<rom name="pexeso (1988)(petisoft).ptp" size="23006" crc="f994b980" sha1="cb2b6be14dd2a85447f41cdf838e0dd66c7e3f97"/>
@@ -212,11 +217,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="piskvork">
+ <software name="piskvork" supported="no"><!-- machine resets while loading -->
<description>Piškvorky</description>
<year>1987</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="10132">
<rom name="piskvorky (1987)(-).ptp" size="10132" crc="9ea553c2" sha1="4660b90d8d0c06107795a4faf2db7e5be20e92e2"/>
@@ -224,11 +229,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="princjas">
+ <software name="princjas" supported="no"><!-- machine froze while loading -->
<description>Princ Jasoň</description>
<year>1989</year>
<publisher>Ceres Soft</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="37194">
<rom name="princ jason (1989)(ceres soft).ptp" size="37194" crc="f0e67ee4" sha1="3593fc5b95e16cd6c6ac95748f097bf5eb9da5e6"/>
@@ -240,7 +245,7 @@ For now tape loading only works in PMD-85.1
<description>Saboter</description>
<year>1989</year>
<publisher>VBG Software</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 03 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="30541">
<rom name="saboter (1989)(vbg software).ptp" size="30541" crc="0706a1ca" sha1="1d6485f12903f3cc0be07754b975eaca67895f28"/>
@@ -248,11 +253,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="tava">
+ <software name="tava" supported="no"><!-- unrecognised, and can crash MAME at start -->
<description>Tava - HRA s Nahodou a Prirodou</description>
<year>1985</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In BASIC, LOAD xx and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="6841">
<rom name="tava - hra s nahodou a prirodou (1985)(-).ptp" size="6841" crc="3346f7a1" sha1="50a87c7e81c637161742929b42f225183e3215f6"/>
@@ -260,11 +265,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="zaby">
+ <software name="zaby" supported="partial"><!-- loads but does nothing -->
<description>Zaby</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 09 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="2883">
<rom name="zaby (198x)(-).ptp" size="2883" crc="f8ff3af1" sha1="89c0df30ce1c1e703396f76eb85cd77688054e2a"/>
@@ -272,11 +277,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="zed">
+ <software name="zed" supported="partial"><!-- loads but does nothing -->
<description>ZED</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="1185">
<rom name="zed (198x)(-).ptp" size="1185" crc="99be7a35" sha1="bfbb57b61e5867082feb6d80c658a8bccabd0010"/>
@@ -284,11 +289,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="grdemo">
+ <software name="grdemo" supported="no"><!-- loads then freezes -->
<description>GRDEMO</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="29639">
<rom name="zzz-unk-grdemo.ptp" size="29639" crc="f9e1e8ac" sha1="5dc2a7436073eb59ebe74a4c2c56ffdf2cb92cd5"/>
@@ -296,11 +301,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="kurca">
+ <software name="kurca" supported="partial"><!-- loads but does nothing -->
<description>KURCA</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 14 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="18243">
<rom name="zzz-unk-kurca.ptp" size="18243" crc="dc8db4aa" sha1="0c74ac004911cd4024c08b0bc91a608ed1885455"/>
@@ -308,11 +313,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="wurmi">
+ <software name="wurmi" supported="no"><!-- unrecognised, and can crash MAME at start -->
<description>WURMI</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In BASIC, LOAD xx and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="2440">
<rom name="zzz-unk-wurmi.ptp" size="2440" crc="8aa15e50" sha1="d69ccff727f54c79fdc689c7099de8e18dcfc1e1"/>
@@ -323,21 +328,21 @@ For now tape loading only works in PMD-85.1
<!-- From pmd85.borik.net/ -->
<!-- bas20-demo.ptp
-| CURSOR | Ilustrácia príkazu CURSOR |
-| GENZN | Generátor znakov MON 20 |
-| CHANNEL0 | Ilustrácia príkazov OUTPUT a ENTER kanál 0 |
-| INPUT | Ilustrácia príkazov PRINT DIM a INPUT DIM |
-| KEYBOARD | Rozloženie kláves na klávesnici v príkaze TEXT |
-| MENU | Ilustrácia príkazu WINDOW |
-| MODIF | Program na modifikovanie BASIC 20 |
-| SACHOV | Ilustrácia zobrazenia sachovnice príkazmi FILL a WINDOW |
-| ZIZALA | Klasická Húsenka alias Wurmi |
--->
- <software name="bas20dem">
+| 00 CURSOR | Ilustrácia príkazu CURSOR |
+| 00 GENZN | Generátor znakov MON 20 |
+| 00 CHANNEL0 | Ilustrácia príkazov OUTPUT a ENTER kanál 0 |
+| 00 INPUT | Ilustrácia príkazov PRINT DIM a INPUT DIM |
+| 00 KEYBOARD | Rozloženie kláves na klávesnici v príkaze TEXT |
+| 00 MENU | Ilustrácia príkazu WINDOW |
+| 00 MODIF | Program na modifikovanie BASIC 20 |
+| 00 SACHOV | Ilustrácia zobrazenia sachovnice príkazmi FILL a WINDOW |
+| 00 ZIZALA | Klasická Húsenka alias Wurmi |
+-->
+ <software name="bas20dem"><!-- doesn't seem to work? -->
<description>BASIC20 Demo</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In BASIC v2.0, LOAD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="13998">
<rom name="bas20-demo.ptp" size="13998" crc="08f25c1f" sha1="bdd77e5c4417e20e2b256ab2e3e65a4a29439602"/>
@@ -346,17 +351,17 @@ For now tape loading only works in PMD-85.1
</software>
<!-- cirkus-sasa-tomasa.ptp
-| SASO | AutoRun | 1,2,2A,3 | A. Blaho, I. Kalaš, D. Tóth |
-| POSTARIK | AutoRun | 1,2,2A,3 | A. Blaho, I. Kalaš, M. Lupták, D. Tóth |
-| ZMRZLINY | AutoRun | 1,2,2A,3 | A. Blaho, I. Kalaš, ¼. Moravèíková, D. Tóth|
-| DOMCEKY | AutoRun | 1,2,2A,3 | A. Blaho, I. Kalaš, D. Tóth, M. Vittek |
-| ROBOTIK | AutoRun | 1,2,2A,3 | A. Blaho, I. Kalaš, D. Tóth |
+| 01 SASO | AutoRun | 1,2,2A,3 | A. Blaho, I. Kalaš, D. Tóth |
+| 02 POSTARIK | AutoRun | 1,2,2A,3 | A. Blaho, I. Kalaš, M. Lupták, D. Tóth |
+| 03 ZMRZLINY | AutoRun | 1,2,2A,3 | A. Blaho, I. Kalaš, M. Moravèíková, D. Tóth|
+| 04 DOMCEKY | AutoRun | 1,2,2A,3 | A. Blaho, I. Kalaš, D. Tóth, M. Vittek |
+| 05 ROBOTIK | AutoRun | 1,2,2A,3 | A. Blaho, I. Kalaš, D. Tóth |
-->
<software name="cirkus">
<description>cirkus-sasa-tomasa</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In BASIC, LOAD 01 (saso), 02 (postarik), 03 (zmrzliny), 04 (domceky) or 05 (robotik), and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="112591">
<rom name="cirkus-sasa-tomasa.ptp" size="112591" crc="46e8bfda" sha1="f6ad3626d190a549bf6ade72739590bea9110326"/>
@@ -365,17 +370,17 @@ For now tape loading only works in PMD-85.1
</software>
<!-- copytape.ptp
-| COPY | JUMP 0000 | 1 | IFO software - UAK |
-| COPYPLUS | JUMP 0100 | 1 | IFO software |
-| COPYCOPY | JUMP 0000 | 1 | IFO software |
-| COPPY | JUMP 0000 | 1 | ODPM PRAHA 2 |
-| WELL+2 | AutoRun | 2,2A,3 | Karel Šuhajda, Petr Tùma |
+| 00 COPY | JUMP 0000 | 1 | IFO software - UAK |
+| 00 COPYPLUS | JUMP 0100 | 1 | IFO software |
+| 00 COPYCOPY | JUMP 0000 | 1 | IFO software |
+| 00 COPPY | JUMP 0000 | 1 | ODPM PRAHA 2 |
+| 00 WELL+2 | AutoRun | 2,2A,3 | Karel Šuhajda, Petr Tùma |
-->
- <software name="copytape">
+ <software name="copytape"><!-- untested -->
<description>Copy Tape</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="8177">
<rom name="copytape.ptp" size="8177" crc="1fb93bb7" sha1="d23d44bb4c2fa41a2fe5027b4c329665e725c688"/>
@@ -384,27 +389,27 @@ For now tape loading only works in PMD-85.1
</software>
<!-- dam+2.ptp
-| DAM+2 | ? | AutoRun | 2,2A,3 | štandardný relokovate¾ný DAM |
-| DAM+2.1 | X | | | \ |
-| DAM+2.2 | X | | | \ manuál k DAM+2 napísaný v |
-| DAM+2.3 | X | | | / v textovom editore KASWORD |
-| DAM+2.3 | X | | | / |
-| TRANSFER | ? | JUMP 0000 | 2,2A,3 | konvertor zdroj. textov z DAM-0000 |
-| TRANSFER | X | | | manuál k utilite TRANSFER |
-| OPTIMAX | ? | JUMP 0000 | 2,2A,3 | optimalizér zdrojových textov |
-| RESRC2 | ? | AutoRun | 2,2A,3 | disassemblig do zdrojového textu |
-| TEXTER | A | | | zdrojak - prevod dat do zdr. textu |
-| EXTENDCH | A | | | zdrojak - zobr. znakov s diakr. |
-| JOYDEMO | A | | | zdrojak - 4004/482 joystick test |
-| JOYSTICK | > | RUN | 1,2,2A,3 | BASIC - schema zapojenia joysticku |
-| ALLRAM2A | ? | JUMP 7000 | 2A | prepnutie do AllRAM na PMD 85-2A |
-| DAM+9000 | ? | JUMP 9000 | 2A,3 | DAM od adresy 9000H |
--->
- <software name="dam2">
+| 00 DAM+2 | ? | AutoRun | 2,2A,3 | štandardný relokovate¾ný DAM |
+| 00 DAM+2.1 | X | | | \ |
+| 00 DAM+2.2 | X | | | \ manuál k DAM+2 napísaný v |
+| 00 DAM+2.3 | X | | | / v textovom editore KASWORD |
+| 00 DAM+2.3 | X | | | / |
+| 00 TRANSFER | ? | JUMP 0000 | 2,2A,3 | konvertor zdroj. textov z DAM-0000 |
+| 00 TRANSFER | X | | | manuál k utilite TRANSFER |
+| 00 OPTIMAX | ? | JUMP 0000 | 2,2A,3 | optimalizér zdrojových textov |
+| 00 RESRC2 | ? | AutoRun | 2,2A,3 | disassemblig do zdrojového textu |
+| 00 TEXTER | A | | | zdrojak - prevod dat do zdr. textu |
+| 00 EXTENDCH | A | | | zdrojak - zobr. znakov s diakr. |
+| 00 JOYDEMO | A | | | zdrojak - 4004/482 joystick test |
+| 00 JOYSTICK | > | RUN | 1,2,2A,3 | BASIC - schema zapojenia joysticku |
+| 00 ALLRAM2A | ? | JUMP 7000 | 2A | prepnutie do AllRAM na PMD 85-2A |
+| 00 DAM+9000 | ? | JUMP 9000 | 2A,3 | DAM od adresy 9000H |
+-->
+ <software name="dam2"><!-- untested -->
<description>DAM+2</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="73030">
<rom name="dam+2.ptp" size="73030" crc="b388c4ee" sha1="7ee8d1625d4274ac068dab54d533603ba6d29eb1"/>
@@ -413,13 +418,13 @@ For now tape loading only works in PMD-85.1
</software>
<!-- dat-pmd.ptp
-| DAT PMD | ? | JUMP 0000 | 2,2A,3 | |
+| 00 DAT PMD | ? | JUMP 0000 | 2,2A,3 | |
-->
<software name="datpmd">
<description>DAT PMD</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play, then JUMP 0000" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="6213">
<rom name="dat-pmd.ptp" size="6213" crc="4f262583" sha1="31ee56a4566eb3ddc137b1cfae27c17507c50948"/>
@@ -428,17 +433,17 @@ For now tape loading only works in PMD-85.1
</software>
<!-- devutils.ptp
-| DDT 6000 | JUMP 6000 | 1,2,2A,3 | ? / monitor, debbugger |
-| VMON 2.1 | JUMP E900 | 1,2,2A,3 | Petr Tùma / obrazovkový monitor, debugger |
-| ALLRAM2A | JUMP 7000 | 2A | prepnutie do AllRAM na PMD 85-2A |
-| VMON9000 | JUMP 9000 | 2A,3 | Petr Tùma / monitor, debugger v ext. mem. |
-| DISASS | RUN | 1,2,2A,3 | Pavol Kiko / disassembler v BASICu |
+| 00 DDT 6000 | JUMP 6000 | 1,2,2A,3 | ? / monitor, debbugger |
+| 00 VMON 2.1 | JUMP E900 | 1,2,2A,3 | Petr Tùma / obrazovkový monitor, debugger |
+| 00 ALLRAM2A | JUMP 7000 | 2A | prepnutie do AllRAM na PMD 85-2A |
+| 00 VMON9000 | JUMP 9000 | 2A,3 | Petr Tùma / monitor, debugger v ext. mem. |
+| 00 DISASS | RUN | 1,2,2A,3 | Pavol Kiko / disassembler v BASICu |
-->
- <software name="devutils">
+ <software name="devutils"><!-- untested -->
<description>Development Utils</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="20914">
<rom name="devutils.ptp" size="20914" crc="68c99dc8" sha1="cde02be5b0b1f53e1e16d3e5f7dcb76c731edaef"/>
@@ -447,23 +452,23 @@ For now tape loading only works in PMD-85.1
</software>
<!-- evidence.ptp
-| EVIDENCE | ? | AutoRun | 1,2,2A,3 | samotný databázový systém |
-| EVIDEDIT | ? | AutoRun | 1,2,2A,3 | editor formulárov pre databázu |
-| ZAJ.CIN | E | | | \ |
-| CLEN.ZAK | E | | | \ ukážkové dátove súbory |
-| SEZNAM | E | | | / |
-| PROGRAMY | E | | | / |
-| EVIMAN 1 | X | | | \ |
-| EVIMAN 2 | X | | | \ |
-| EVIMAN 3 | X | | | | manuál k programu |
-| EVIMAN 4 | X | | | / |
-| EVIMAN 5 | X | | | / |
--->
- <software name="evidence">
+| 00 EVIDENCE | ? | AutoRun | 1,2,2A,3 | samotný databázový systém |
+| 00 EVIDEDIT | ? | AutoRun | 1,2,2A,3 | editor formulárov pre databázu |
+| 00 ZAJ.CIN | E | | | \ |
+| 00 CLEN.ZAK | E | | | \ ukážkové dátove súbory |
+| 00 SEZNAM | E | | | / |
+| 00 PROGRAMY | E | | | / |
+| 00 EVIMAN 1 | X | | | \ |
+| 00 EVIMAN 2 | X | | | \ |
+| 00 EVIMAN 3 | X | | | | manuál k programu |
+| 00 EVIMAN 4 | X | | | / |
+| 00 EVIMAN 5 | X | | | / |
+-->
+ <software name="evidence"><!-- untested -->
<description>Evidence</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="74358">
<rom name="evidence.ptp" size="74358" crc="25938fbf" sha1="dbc699b46932a701d5ebdaf063a9a5c74023ad8e"/>
@@ -471,11 +476,11 @@ For now tape loading only works in PMD-85.1
</part>
</software>
- <software name="lemm256k">
+ <software name="lemm256k" supported="no"><!-- machine resets while loading -->
<description>Lemmings (256k)</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="115835">
<rom name="game-lemmings-256k.ptp" size="115835" crc="14800807" sha1="b5d3cc843584cbcd062252aa86d33c04b2f1814c"/>
@@ -487,7 +492,7 @@ For now tape loading only works in PMD-85.1
<description>Lemmings</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="168252">
<rom name="game-lemmings.ptp" size="168252" crc="95cdfcd5" sha1="6f57ebffff27ffb9b44d29ab1484d3ead42e55ee"/>
@@ -496,20 +501,20 @@ For now tape loading only works in PMD-85.1
</software>
<!-- games-1.ptp
-| AUTO | JUMP 2000 | 1,2,2A,3 | R.D. |
-| INVADERS | JUMP 0100 | 1,2,2A,3 | IFO software, UAK Bratislava |
-| KURA | JUMP 0000 | 1,2,2A,3 | SAS |
-| MUR | JUMP 0000 | 1,2,2A,3 | SAS |
-| PUZZLE | JUMP 0000 | 1,2,2A,3 | SAS |
-| TANK | JUMP 2000 | 1,2,2A | Pavol Kiko (prednostne pre PMD 85-1) |
-| TENISS | JUMP 7000 | 2,2A | ? |
-| ZABY | JUMP 1500 | 1,2,2A,3 | ? |
-| ZED | JUMP 1000 | 1,2,2A,3 | R.D. |
-| CROSFIRE | JUMP 0000 | 1 | ? |
-| AIR RAID | JUMP 1000 | 1,2,2A,3 | ? (NITRA 1987) |
-| REVERZ | JUMP 0000 | 1,2,2A,3 | SEN SOFTWARE |
--->
- <software name="games1">
+| 00 AUTO | JUMP 2000 | 1,2,2A,3 | R.D. |
+| 17 INVADERS | JUMP 0100 | 1,2,2A,3 | IFO software, UAK Bratislava |
+| 01 KURA | JUMP 0000 | 1,2,2A,3 | SAS |
+| 04 MUR | JUMP 0000 | 1,2,2A,3 | SAS |
+| 02 PUZZLE | JUMP 0000 | 1,2,2A,3 | SAS |
+| 00 TANK | JUMP 2000 | 1,2,2A | Pavol Kiko (prednostne pre PMD 85-1) |
+| 16 TENISS | JUMP 7000 | 2,2A | ? |
+| 09 ZABY | JUMP 1500 | 1,2,2A,3 | ? |
+| 00 ZED | JUMP 1000 | 1,2,2A,3 | R.D. |
+| 00 CROSFIRE | JUMP 0000 | 1 | ? |
+| 00 AIR RAID | JUMP 1000 | 1,2,2A,3 | ? (NITRA 1987) |
+| 00 REVERZ | JUMP 0000 | 1,2,2A,3 | SEN SOFTWARE |
+-->
+ <software name="games1"><!-- untested -->
<description>Games 1</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -522,21 +527,21 @@ For now tape loading only works in PMD-85.1
</software>
<!-- games-2.ptp
-| GALAXIA | AutoRun | 1,2,2A | Petr Tuma (CERES SOFT) |
-| GLUTTON | AutoRun | 1,2,2A,3 | Jaroslav Szczurek, Peter Gregorovic |
-| GRDEMO | AutoRun | 1,2,2A,3 | Petr Tuma (CERES SOFT) |
-| JASON | AutoRun | 1,2,2A,3 | Petr Tuma (CERES SOFT) |
-| KANKAN | JUMP 0000 | 1,2,2A,3 | ? |
-| MESTO | AutoRun | 1,2,2A | Vit Libovicky (heslo: konvalinka) |
-| MANIC+ | AutoRun | 1 | Vit Libovicky, Daniel Jenne |
-| MANIC+2 | AutoRun | 2,2A,3 | Vit Libovicky, Daniel Jenne |
-| PAMPUCH | AutoRun | 1 | D. Blasko |
-| PAMPUCHX | AutoRun | 1 | D. Blasko (255 zivotov) |
-| ON&DUCH4 | AutoRun | 1 | D. Blasko (s hudobnym podmazom) |
-| SPACE-RA | AutoRun | 1 | Dusan Kertes |
-| SP'DEMIS | AutoRun | 1 | Ján Miche¾, Igor Kolla |
--->
- <software name="games2">
+| 00 GALAXIA | AutoRun | 1,2,2A | Petr Tuma (CERES SOFT) |
+| 00 GLUTTON | AutoRun | 1,2,2A,3 | Jaroslav Szczurek, Peter Gregorovic |
+| 00 GRDEMO | AutoRun | 1,2,2A,3 | Petr Tuma (CERES SOFT) |
+| 00 JASON | AutoRun | 1,2,2A,3 | Petr Tuma (CERES SOFT) |
+| 00 KANKAN | JUMP 0000 | 1,2,2A,3 | ? |
+| 00 MESTO | AutoRun | 1,2,2A | Vit Libovicky (heslo: konvalinka) |
+| 02 MANIC+ | AutoRun | 1 | Vit Libovicky, Daniel Jenne |
+| 01 MANIC+2 | AutoRun | 2,2A,3 | Vit Libovicky, Daniel Jenne |
+| 00 PAMPUCH | AutoRun | 1 | D. Blasko |
+| 00 PAMPUCHX | AutoRun | 1 | D. Blasko (255 zivotov) |
+| 17 ON&DUCH4 | AutoRun | 1 | D. Blasko (s hudobnym podmazom) |
+| 02 SPACE-RA | AutoRun | 1 | Dusan Kertes |
+| 01 SP'DEMIS | AutoRun | 1 | Ján Miche, Igor Kolla |
+-->
+ <software name="games2"><!-- untested -->
<description>Games 2</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -549,15 +554,15 @@ For now tape loading only works in PMD-85.1
</software>
<!-- games-3.ptp
-| CATEGORI | JUMP 1000 | 1 | Miroslav Urda |
-| COBRA | JUMP 5B00 | 1 | Miroslav Urda |
-| STRIPPED | AutoRun | 1 | Miroslav Urda |
-| PANGO | AutoRun | 1 | Miroslav Urda |
-| MISSION | AutoRun | 1 | Miroslav Urda |
-| RESCUER | AutoRun | 1 | Miroslav Urda, OK soft |
-| MICRHYTM | AutoRun | 1 | Miroslav Urda |
--->
- <software name="games3">
+| 11 CATEGORI | JUMP 1000 | 1 | Miroslav Urda |
+| 05 COBRA | JUMP 5B00 | 1 | Miroslav Urda |
+| 03 STRIPPED | AutoRun | 1 | Miroslav Urda |
+| 30 PANGO | AutoRun | 1 | Miroslav Urda |
+| 06 MISSION | AutoRun | 1 | Miroslav Urda |
+| 01 RESCUER | AutoRun | 1 | Miroslav Urda, OK soft |
+| 05 MICRHYTM | AutoRun | 1 | Miroslav Urda |
+-->
+ <software name="games3"><!-- untested -->
<description>Games 3</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -570,20 +575,20 @@ For now tape loading only works in PMD-85.1
</software>
<!-- games-4004-482.ptp
-| -WILLY- | AutoRun | 1 | Karel Šuhajda |
-| WILLY2 | JUMP 0000 | 2,2A,3 | Karel Šuhajda |
-| HORACE+2 | AutoRun | 1,2,2A,3 | Karel Šuhajda |
-| FERLAJT | AutoRun | 1 | K. Šuhajda, Pavel Šindelka, Michal Èerný |
-| M-TRON 1 | AutoRun | 1 | Karel Šuhajda, Michal Èerný |
-| M-TRON 2 | AutoRun | 1 | Karel Šuhajda, Michal Èerný |
-| M-TRON 3 | AutoRun | 1 | Karel Šuhajda, Michal Èerný |
-| PISQORKY | AutoRun | 2,2A,3 | K. Šuhajda, P. Paleta |
-| BLUDISTE | AutoRun | 1,2,2A,3 | K. Šuhajda, P. Šindelka, M. Èerný, T. Švec|
-| PEXESO | AutoRun | 1,2,2A | Petr Thiel - elektrické znaèky |
-| PEXESO2 | AutoRun | 1,2,2A | Petr Thiel - detské obrázky |
-| HLIPA | AutoRun | 1,2,2A | Karel Šuhajda, Tomáš Švec |
--->
- <software name="game4004">
+| 00 -WILLY- | AutoRun | 1 | Karel Šuhajda |
+| 00 WILLY2 | JUMP 0000 | 2,2A,3 | Karel Šuhajda |
+| 17 HORACE+2 | AutoRun | 1,2,2A,3 | Karel Šuhajda |
+| 13 FERLAJT | AutoRun | 1 | K. Šuhajda, Pavel Šindelka, Michal Èerný |
+| 00 M-TRON 1 | AutoRun | 1 | Karel Šuhajda, Michal Èerný |
+| 00 M-TRON 2 | AutoRun | 1 | Karel Šuhajda, Michal Èerný |
+| 00 M-TRON 3 | AutoRun | 1 | Karel Šuhajda, Michal Èerný |
+| 00 PISQORKY | AutoRun | 2,2A,3 | K. Šuhajda, P. Paleta |
+| 00 BLUDISTE | AutoRun | 1,2,2A,3 | K. Šuhajda, P. Šindelka, M. Èerný, T. Švec|
+| 00 PEXESO | AutoRun | 1,2,2A | Petr Thiel - elektrické znaèky |
+| 00 PEXESO2 | AutoRun | 1,2,2A | Petr Thiel - detské obrázky |
+| 21 HLIPA | AutoRun | 1,2,2A | Karel Šuhajda, Tomáš Švec |
+-->
+ <software name="game4004"><!-- untested -->
<description>Games by 4004/482 ZO Svazarmu</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -596,10 +601,10 @@ For now tape loading only works in PMD-85.1
</software>
<!-- games-libor-lasota.ptp
-| JETPAC | AutoRun | 1,2,2A,3 | Konverzia hry zo ZX Spectrum |
-| PSSST | AutoRun | 1,2,2A,3 | Konverzia hry zo ZX Spectrum |
+| 01 JETPAC | AutoRun | 1,2,2A,3 | Konverzia hry zo ZX Spectrum |
+| 02 PSSST | AutoRun | 1,2,2A,3 | Konverzia hry zo ZX Spectrum |
-->
- <software name="gameslib">
+ <software name="gameslib"><!-- untested -->
<description>Games by Libor Lasota</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -612,13 +617,13 @@ For now tape loading only works in PMD-85.1
</software>
<!-- games-rm-team.ptp
-| KVADRO | AutoRun | 1,2,2A,3 | Martin Bórik, Roman Bórik |
-| KVADRO.E | AutoRun | 1,2,2A,3 | Martin Bórik, Roman Bórik / anglická verzia |
-| PLOTTING | AutoRun | 1,2,2A,3 | Roman Bórik, Martin Bórik |
-| SPINDZ | AutoRun | 2A,3 | Roman Bórik, Martin Bórik |
-| GAME2048 | AutoRun | 1,2,2A,3 | Roman Bórik, Martin Bórik |
+| 00 KVADRO | AutoRun | 1,2,2A,3 | Martin Bórik, Roman Bórik |
+| 00 KVADRO.E | AutoRun | 1,2,2A,3 | Martin Bórik, Roman Bórik / anglická verzia |
+| 00 PLOTTING | AutoRun | 1,2,2A,3 | Roman Bórik, Martin Bórik |
+| 00 SPINDZ | AutoRun | 2A,3 | Roman Bórik, Martin Bórik |
+| 00 GAME2048 | AutoRun | 1,2,2A,3 | Roman Bórik, Martin Bórik |
-->
- <software name="gamesrm">
+ <software name="gamesrm"><!-- untested -->
<description>Games by RM-TEAM</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -631,22 +636,22 @@ For now tape loading only works in PMD-85.1
</software>
<!-- games-vbg.ptp
-| JERRY | JUMP 1100 | 1,2,2A,3 | Jerry |
-| *FLAPPY* | AutoRun | 1 | Flappy (prvotna verzia, odlisny obrazok) |
-| FLAPPY+4 | AutoRun | 1,2,2A,3 | Flappy |
-| MANIC2+3 | AutoRun | 1,2,2A,3 | Manic Miner |
-| MANIC23c | AutoRun | 1,2,2A,3 | Manic Miner s Cheat modom |
-| BOULDER | AutoRun | 1 | Boulder Dash (prvotna verzia) |
-| BOULD+4 | AutoRun | 1,2,2A,3 | Boulder Dash |
-| PENETR.3 | AutoRun | 1,2,2A,3 | Penetrator |
-| FRED +4 | AutoRun | 1,2,2A,3 | Fred |
-| TETRIS+4 | AutoRun | 1,2,2A,3 | Tetris (aj vo farbe) |
-| SABO +4 | AutoRun | 1,2,2A,3 | Saboter |
-| CERES-01 | AutoRun | 1,2,2A,3 | DEMO od CERES-SOFTu s POKE do hier |
-| | | | PENETR.3, FLAPPY+4, MANIC2+3, BOULD+4 |
-| PONTRIS | AutoRun | 1,2,2A,3 | Pontris (nova hra aj vo farbe, rok 2010) |
--->
- <software name="gamesvbg">
+| 00 JERRY | JUMP 1100 | 1,2,2A,3 | Jerry |
+| 03 *FLAPPY* | AutoRun | 1 | Flappy (prvotna verzia, odlisny obrazok) |
+| 03 FLAPPY+4 | AutoRun | 1,2,2A,3 | Flappy |
+| 03 MANIC2+3 | AutoRun | 1,2,2A,3 | Manic Miner |
+| 03 MANIC23c | AutoRun | 1,2,2A,3 | Manic Miner s Cheat modom |
+| 03 BOULDER | AutoRun | 1 | Boulder Dash (prvotna verzia) |
+| 03 BOULD+4 | AutoRun | 1,2,2A,3 | Boulder Dash |
+| 03 PENETR.3 | AutoRun | 1,2,2A,3 | Penetrator |
+| 03 FRED +4 | AutoRun | 1,2,2A,3 | Fred |
+| 03 TETRIS+4 | AutoRun | 1,2,2A,3 | Tetris (aj vo farbe) |
+| 03 SABO +4 | AutoRun | 1,2,2A,3 | Saboter |
+| 00 CERES-01 | AutoRun | 1,2,2A,3 | DEMO od CERES-SOFTu s POKE do hier |
+| | | | PENETR.3, FLAPPY+4, MANIC2+3, BOULD+4 |
+| 00 PONTRIS | AutoRun | 1,2,2A,3 | Pontris (nova hra aj vo farbe, rok 2010) |
+-->
+ <software name="gamesvbg"><!-- untested -->
<description>Games by VBG Software</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -659,13 +664,13 @@ For now tape loading only works in PMD-85.1
</software>
<!-- gr.ptp
-| GR v1.00 | ? | AutoRun | 2,2A,3 | |
-| GR - obr | C | | | \ |
-| GR - obr | C | | | \ obrázky vytvorené v editore |
-| GR - obr | C | | | / |
-| GR - obr | C | | | / |
+| 00 GR v1.00 | ? | AutoRun | 2,2A,3 | |
+| 00 GR - obr | C | | | \ |
+| 00 GR - obr | C | | | \ obrázky vytvorené v editore |
+| 00 GR - obr | C | | | / |
+| 00 GR - obr | C | | | / |
-->
- <software name="gr">
+ <software name="gr"><!-- untested -->
<description>GR v1.00</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -678,11 +683,11 @@ For now tape loading only works in PMD-85.1
</software>
<!-- gred.ptp
-| GRED 2.1 | ? | AutoRun | 2,2A,3 | verzia 2.1 - 10/1988 |
-| GRED 3.2 | ? | AutoRun | 2,2A,3 | verzia 3.2 - 4/1989 |
-| * | C | | | rôzne obrázky zo ZX Spectrum |
+| 00 GRED 2.1 | ? | AutoRun | 2,2A,3 | verzia 2.1 - 10/1988 |
+| 00 GRED 3.2 | ? | AutoRun | 2,2A,3 | verzia 3.2 - 4/1989 |
+| 00 * | C | | | rôzne obrázky zo ZX Spectrum |
-->
- <software name="gred">
+ <software name="gred"><!-- untested -->
<description>GRED</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -695,10 +700,10 @@ For now tape loading only works in PMD-85.1
</software>
<!-- grep.ptp
-| GREP2 | ? | AutoRun | 2,2A,3 | |
-| * | G | | | ukážkové sprity |
+| 00 GREP2 | ? | AutoRun | 2,2A,3 | |
+| 00 * | G | | | ukážkové sprity |
-->
- <software name="grep">
+ <software name="grep"><!-- untested -->
<description>GREP</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -711,26 +716,26 @@ For now tape loading only works in PMD-85.1
</software>
<!-- hry1.ptp
-| BLACK | 1,2,2A,3 | Andrej Blaho / logicka hra |
-| BOMBARDE | 1,2,2A | org. František Fuka / Bombardér |
-| ELKA | 1,2,2A | D / logicka hra |
-| FARAON | 1,2,2A,3 | KM PF Nitra / log. hra Faraónova hrobka štýlu "HRA 15"|
-| GARDNER | 2,2A,3 | Roman Bórik pod¾a Zenitu Pionierov / logická hra |
-| LAVICKA | 2,2A,3 | ? / hra Lietajúca lavièka (primárne pre PMD 85-3) |
-| KON | 1,2,2A | ? / logická hra ah koòom |
-| NALET | 3 | org. František Fuka / upraveny Bombardér pre PMD 85-3 |
-| PAVUCI | 1,2,2A | Karel Šuhajda / Horac a pavouci |
-| PEXESO | 1,2,2A,3 | ? Zenit Pionierov / Písmenové pexeso |
-| REVERZ | 2,2A,3 | P.N. / logická hra (primárne pre PMD 85-3) |
-| ROBINSON | 1,2,2A | RNDr. Daniel Polcin / strielanie na kaèicu :-) |
-| SLALOM | 3 | ? / slalom na lyžiach :-) |
-| TANKY | 1,2,2A | Pavol Kiko / Tanková bitva |
-| TAVA | 1,2,2A,3 | KM PF Nitra / textovka-prejdite s avou 200km v púšti |
-| VIDEOSTP | 2,2A,3 | Roman Bórik / na motívy známej TV hry |
-| VOTRELCI | 2,2A,3 | TESLA / nicenie votrelcov (primárne pre PMD 85-3) |
-| WURMI | 1,2,2A | org. František Fuka / Húsenka :-) |
--->
- <software name="hry1">
+| 01 BLACK | 1,2,2A,3 | Andrej Blaho / logicka hra |
+| 02 BOMBARDE | 1,2,2A | org. František Fuka / Bombardér |
+| 00 ELKA | 1,2,2A | D / logicka hra |
+| 03 FARAON | 1,2,2A,3 | KM PF Nitra / log. hra Faraónova hrobka štýlu "HRA 15"|
+| 44 GARDNER | 2,2A,3 | Roman Bórik pod¾a Zenitu Pionierov / logická hra |
+| 00 LAVICKA | 2,2A,3 | ? / hra Lietajúca lavièka (primárne pre PMD 85-3) |
+| 04 KON | 1,2,2A | ? / logická hra ah koòom |
+| 00 NALET | 3 | org. František Fuka / upraveny Bombardér pre PMD 85-3 |
+| 40 PAVUCI | 1,2,2A | Karel Šuhajda / Horac a pavouci |
+| 30 PEXESO | 1,2,2A,3 | ? Zenit Pionierov / Písmenové pexeso |
+| 00 REVERZ | 2,2A,3 | P.N. / logická hra (primárne pre PMD 85-3) |
+| 01 ROBINSON | 1,2,2A | RNDr. Daniel Polcin / strielanie na kaèicu :-) |
+| 00 SLALOM | 3 | ? / slalom na lyžiach :-) |
+| 53 TANKY | 1,2,2A | Pavol Kiko / Tanková bitva |
+| 05 TAVA | 1,2,2A,3 | KM PF Nitra / textovka-prejdite s avou 200km v púšti |
+| 11 VIDEOSTP | 2,2A,3 | Roman Bórik / na motívy známej TV hry |
+| 00 VOTRELCI | 2,2A,3 | TESLA / nicenie votrelcov (primárne pre PMD 85-3) |
+| 07 WURMI | 1,2,2A | org. František Fuka / Húsenka :-) |
+-->
+ <software name="hry1"><!-- untested -->
<description>HRY1</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -743,20 +748,20 @@ For now tape loading only works in PMD-85.1
</software>
<!-- hry2.ptp
-| ADC | 2,2A | R&I / chodièka |
-| BARBAR | 2,2A | R&I / chodièka |
-| COSMIC | 2,2A | R&I / chodièka |
-| ERB | 2,2A | R&I / chodièka |
-| JOE1 | 2,2A | R&I / chodièka |
-| KRES | 2,2A | R&I / kreslenie |
-| MYTH1 | 2,2A | R&I / chodièka |
-| MYTH2 | 2,2A | R&I / chodièka |
-| MYTH3 | 2,2A | R&I / chodièka |
-| NINJA | 2,2A | R&I / chodièka |
-| OSTROV | 2,2A | R&I / chodièka |
-| POKLAD | 2,2A | R&I / chodièka |
--->
- <software name="hry2">
+| 01 ADC | 2,2A | R&I / chodièka |
+| 01 BARBAR | 2,2A | R&I / chodièka |
+| 01 COSMIC | 2,2A | R&I / chodièka |
+| 01 ERB | 2,2A | R&I / chodièka |
+| 01 JOE1 | 2,2A | R&I / chodièka |
+| 01 KRES | 2,2A | R&I / kreslenie |
+| 01 MYTH1 | 2,2A | R&I / chodièka |
+| 01 MYTH2 | 2,2A | R&I / chodièka |
+| 01 MYTH3 | 2,2A | R&I / chodièka |
+| 01 NINJA | 2,2A | R&I / chodièka |
+| 01 OSTROV | 2,2A | R&I / chodièka |
+| 01 POKLAD | 2,2A | R&I / chodièka |
+-->
+ <software name="hry2"><!-- untested -->
<description>HRY2</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -769,13 +774,13 @@ For now tape loading only works in PMD-85.1
</software>
<!-- k-studio.ptp
-| K-STUDIO | ? | AutoRun | 2,2A,3 | |
+| 01 K-STUDIO | ? | AutoRun | 2,2A,3 | |
-->
<software name="kstudio">
- <description>K-Studio</description>
- <year>198?</year>
- <publisher>&lt;unknown&gt;</publisher>
-
+ <description>K-Studio v2.7</description>
+ <year>1988</year>
+ <publisher>S2 Software</publisher>
+ <info name="usage" value="In Monitor, MGLD 01 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="19156">
<rom name="k-studio.ptp" size="19156" crc="a765d1c3" sha1="0aaa901ffeb3f2e7bb38f92e87bc3720d5b1938b"/>
@@ -784,18 +789,18 @@ For now tape loading only works in PMD-85.1
</software>
<!-- karel.ptp
-| KAREL | AutoRun | 1,2,2A,3 | Karel Šuhajda / 2D Karel |
-| KAREL2D | RUN | 1,2,2A | Tomáš Bartovský / 2D Karel (Basic) |
-| KAREL-2R | JUMP 0000 | 1 | Tomáš Bartovský / 2D Karel |
-| KAREL3D0 | JUMP 0000 | 1,2,2A,3 | Marián Vittek / 3D Karel v0.0 |
-| KAREL3.2 | JUMP 0000 | 1,2,2A,3 | Marián Vittek / 3D Karel v2.0 |
-| KAREL3D2 | JUMP 0000 | 1,2,2A,3 | Marián Vittek / 3D Karel v3.2 |
--->
- <software name="karela" cloneof="karel">
+| 00 KAREL | AutoRun | 1,2,2A,3 | Karel Šuhajda / 2D Karel |
+| 22 KAREL2D | RUN | 1,2,2A | Tomáš Bartovský / 2D Karel (Basic) |
+| 16 KAREL-2R | JUMP 0000 | 1 | Tomáš Bartovský / 2D Karel |
+| 17 KAREL3D0 | JUMP 0000 | 1,2,2A,3 | Marián Vittek / 3D Karel v0.0 |
+| 18 KAREL3.2 | JUMP 0000 | 1,2,2A,3 | Marián Vittek / 3D Karel v2.0 |
+| 19 KAREL3D2 | JUMP 0000 | 1,2,2A,3 | Marián Vittek / 3D Karel v3.2 |
+-->
+ <software name="karela" cloneof="karel"><!-- untested -->
<description>Karel (Alt)</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
-
+ <info name="usage" value="In Monitor, MGLD 00 and press Play" />
<part name="cass1" interface="pmd85_cass">
<dataarea name="cass" size="54244">
<rom name="karel.ptp" size="54244" crc="20e10dd8" sha1="ce8c6b7a790754edecb65bb9e6f15ee64d466502"/>
@@ -804,12 +809,12 @@ For now tape loading only works in PMD-85.1
</software>
<!-- karel2d3d.ptp
-| KAREL | AutoRun | 1,2,2A,3 | Karel Šuhajda / 2D Karel |
-| KAREL3D0 | AutoRun | 1,2,2A,3 | Marián Vittek / 3D Karel v0.0 |
-| KAREL3.2 | AutoRun | 1,2,2A,3 | Marián Vittek / 3D Karel v2.0 |
-| KAREL3D2 | AutoRun | 1,2,2A,3 | Marián Vittek / 3D Karel v3.2 |
+| 00 KAREL | AutoRun | 1,2,2A,3 | Karel Šuhajda / 2D Karel |
+| 01 KAREL3D0 | AutoRun | 1,2,2A,3 | Marián Vittek / 3D Karel v0.0 |
+| 02 KAREL3.2 | AutoRun | 1,2,2A,3 | Marián Vittek / 3D Karel v2.0 |
+| 03 KAREL3D2 | AutoRun | 1,2,2A,3 | Marián Vittek / 3D Karel v3.2 |
-->
- <software name="karelb" cloneof="karel">
+ <software name="karelb" cloneof="karel"><!-- untested -->
<description>Karel (Alt 2)</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -822,13 +827,13 @@ For now tape loading only works in PMD-85.1
</software>
<!-- krivky.ptp
- - SIERPIN - program na kreslenie Sierpinskeho kriviek
- - HILBERT - program na kreslenie Hilbertovych kriviek
- - W-KRIVKY - program na kreslenie W kriviek (Iba krivky 1. a 2. rádu sa
+ - SIERPIN - program na kreslenie Sierpinskeho kriviek (01/P, 02/?, 03/?, 04/?)
+ - HILBERT - program na kreslenie Hilbertovych kriviek (01/P, 02/?, 03/?)
+ - W-KRIVKY - program na kreslenie W kriviek (Iba krivky 1. a 2. rádu sa (01/P, 02/?, 03/?)
kreslia správne. Od 3. rádu sa kreslia zle.
Nájde niekto správne riešenie?... :-)
-->
- <software name="krivky">
+ <software name="krivky"><!-- untested -->
<description>Krivky</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -841,16 +846,16 @@ For now tape loading only works in PMD-85.1
</software>
<!-- logo.ptp
- - ZOFKA1 - korytnaèka Žofka v BASICu (v1)
- - ZOFKA2 - korytnaèka Žofka v BASICu (v2/v2A/v3)
- - ZOFKA 2 - korytnaèka Žofka v BASICu (staršia verzia) (v2/v2A/v3)
- - ZOFKA2T - korytnaèka Žofka v BASICu s prikazom pre tlac (v2/v2A/v3)
- - Zofka 3 - korytnaèka Žofka v strojovom kóde (v2/v2A/v3). Po nahratí sa spúšta JUMP 0003
+ 01 - ZOFKA1 - korytnaèka Žofka v BASICu (v1)
+ 10 - ZOFKA2 - korytnaèka Žofka v BASICu (v2/v2A/v3)
+ 12 - ZOFKA 2 - korytnaèka Žofka v BASICu (staršia verzia) (v2/v2A/v3)
+ 11 - ZOFKA2T - korytnaèka Žofka v BASICu s prikazom pre tlac (v2/v2A/v3)
+ 42 - Zofka 3 - korytnaèka Žofka v strojovom kóde (v2/v2A/v3). Po nahratí sa spúšta JUMP 0003
(pri PMD 85-3 je treba najprv prejs do režimu kompatibility zadanim JUMP FFF0 v monitore).
- - MRAVEC - jednoduchý logický jazyk Mravec (v2/v2A/v3)
- - T.MRAVEC - jednoduchý logický jazyk Toèi-Mravec (v2/v2A/v3)
+ 34 - MRAVEC - jednoduchý logický jazyk Mravec (v2/v2A/v3)
+ 52 - T.MRAVEC - jednoduchý logický jazyk Toèi-Mravec (v2/v2A/v3)
-->
- <software name="logo">
+ <software name="logo"><!-- untested -->
<description>LOGO</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -863,13 +868,13 @@ For now tape loading only works in PMD-85.1
</software>
<!-- mrs.ptp
-| MRS | JUMP 6000 | 1 | |
-| MRS-NOVE | JUMP 6000 | 1 | upravená verzia |
-| MRS2 | JUMP 6000 | 2,2A,3 | verzia pre PMD 85-2, 2A a 3 |
-| LIB | | | knižnica |
-| BZZZZT | | | zdroják - zabzuèanie z hry Hlípa |
+| 00 MRS | JUMP 6000 | 1 | |
+| 00 MRS-NOVE | JUMP 6000 | 1 | upravená verzia |
+| 00 MRS2 | JUMP 6000 | 2,2A,3 | verzia pre PMD 85-2, 2A a 3 |
+| 00 LIB | | | knižnica |
+| 00 BZZZZT | | | zdroják - zabzuèanie z hry Hlípa |
-->
- <software name="mrs">
+ <software name="mrs"><!-- untested -->
<description>MRS</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -882,13 +887,13 @@ For now tape loading only works in PMD-85.1
</software>
<!-- musica.ptp
-| MUSICA | ? | AutoRun | 1 | |
-| MUSICA+2 | ? | AutoRun | 2,2A,3 | |
-| MUSICA+3 | ? | AutoRun | 2,2A,3 | |
-| MUSICman | T | | | manuál k programu |
-| * | M | | | rôzne ukážkové hudby |
+| 00 MUSICA | ? | AutoRun | 1 | |
+| 00 MUSICA+2 | ? | AutoRun | 2,2A,3 | |
+| 00 MUSICA+3 | ? | AutoRun | 2,2A,3 | |
+| 00 MUSICman | T | | | manuál k programu |
+| 00 * | M | | | rôzne ukážkové hudby |
-->
- <software name="musica">
+ <software name="musica"><!-- untested -->
<description>Musica</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -901,20 +906,20 @@ For now tape loading only works in PMD-85.1
</software>
<!-- rozne.ptp
-| BUBLSORT | 1,2,2A,3 | KM PF Nitra / vysvetlenie bublinkového triedenia |
-| GONIO | 2,2A,3 | Martin Bórik / ukážka SIN/COS (primárne pre PMD 85-3) |
-| KLAV-PMD | 3 | TESLA Bratislava / demo |
-| LISSAJ | 1,2,2A,3 | ? / ukážka SIN/COS |
-| MATODEMO | 1,2,2A,3 | ? / demo z poèítaèa MAO |
-| MESIAC | 1,2,2A,3 | Brestenský - Zenit Pionierov / Fázy mesiaca |
-| MUZIKANT | 1,2,2A,3 | ? Zenit Pionierov / Vytváranie jednoduchých melódií |
-| REZ | 2,2A,3 | ? / demonštrácia rezu kockou |
-| TEST3A | 3 | TESLA Bratislava / demo k PMD 85-3 |
-| TESTATTR | 2,2A,3 | Roman Bórik / Test farebného zobrazenia |
-| TESTATR2 | 2,2A,3 | Roman Bórik / Test farebného zobrazenia |
-| TEST LOG | 1,2,2A,3 | KM PF Nitra / Test logiky a inteligencie |
--->
- <software name="rozne">
+| 00 BUBLSORT | 1,2,2A,3 | KM PF Nitra / vysvetlenie bublinkového triedenia |
+| 34 GONIO | 2,2A,3 | Martin Bórik / ukážka SIN/COS (primárne pre PMD 85-3) |
+| 00 KLAV-PMD | 3 | TESLA Bratislava / demo |
+| 09 LISSAJ | 1,2,2A,3 | ? / ukážka SIN/COS |
+| 55 MATODEMO | 1,2,2A,3 | ? / demo z poèítaèa MATO |
+| 23 MESIAC | 1,2,2A,3 | Brestenský - Zenit Pionierov / Fázy mesiaca |
+| 19 MUZIKANT | 1,2,2A,3 | ? Zenit Pionierov / Vytváranie jednoduchých melódií |
+| 00 REZ | 2,2A,3 | ? / demonštrácia rezu kockou |
+| 00 TEST3A | 3 | TESLA Bratislava / demo k PMD 85-3 |
+| 00 TESTATTR | 2,2A,3 | Roman Bórik / Test farebného zobrazenia |
+| 01 TESTATR2 | 2,2A,3 | Roman Bórik / Test farebného zobrazenia |
+| 06 TEST LOG | 1,2,2A,3 | KM PF Nitra / Test logiky a inteligencie |
+-->
+ <software name="rozne"><!-- untested -->
<description>Rozne</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -927,12 +932,12 @@ For now tape loading only works in PMD-85.1
</software>
<!-- rozne.ptp (pascal)
- - DRAW - test grafických príkazov
- - GRAPH - test grafických príkazov 2
- - FACT.PAS - výpoèet faktoriálu
- - SNC.PAS - súèet nepárnych èísel
+ - DRAW - test grafických príkazov (01/P)
+ - GRAPH - test grafických príkazov 2 (01/P, 02/:, 03/:)
+ - FACT.PAS - výpoèet faktoriálu (01/P)
+ - SNC.PAS - súèet nepárnych èísel (01/P)
-->
- <software name="rozne_1">
+ <software name="rozne_1"><!-- untested -->
<description>Rozne (Pascal)</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -945,14 +950,14 @@ For now tape loading only works in PMD-85.1
</software>
<!-- skladatel.ptp
-| SKLADATE | ? | JUMP 0100 | 2,2A,3 | |
-| FLAPPY1 | ? | JUMP 0F90 | 1,2,2A,3 | muzika z hry Flappy |
-| FLAPPY2 | ? | JUMP 0F90 | 1,2,2A,3 | muzika z hry Flappy |
-| PENETR-1 | ? | JUMP 0F90 | 1,2,2A,3 | muzika z hry Penetrator |
-| PENETR-2 | ? | JUMP 0F90 | 1,2,2A,3 | muzika z hry Penetrator |
-| PENETR-3 | ? | JUMP 0F90 | 1,2,2A,3 | muzika z hry Penetrator |
--->
- <software name="skladate">
+| 03 SKLADATE | ? | JUMP 0100 | 2,2A,3 | |
+| 00 FLAPPY1 | ? | JUMP 0F90 | 1,2,2A,3 | muzika z hry Flappy |
+| 00 FLAPPY2 | ? | JUMP 0F90 | 1,2,2A,3 | muzika z hry Flappy |
+| 00 PENETR-1 | ? | JUMP 0F90 | 1,2,2A,3 | muzika z hry Penetrator |
+| 00 PENETR-2 | ? | JUMP 0F90 | 1,2,2A,3 | muzika z hry Penetrator |
+| 00 PENETR-3 | ? | JUMP 0F90 | 1,2,2A,3 | muzika z hry Penetrator |
+-->
+ <software name="skladate"><!-- untested -->
<description>Skladatel</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -965,14 +970,14 @@ For now tape loading only works in PMD-85.1
</software>
<!-- texted.ptp
-| KASWORD3 | ? | JUMP 0000 | 1,2,2A,3 | KASWORD 3 |
-| KASW.MAN | X | | | manuál k editoru KASWORD3 |
-| TEXED | ? | JUMP 0000 | 2,2A,3 | úprava P. Holubek |
-| MANTEXED | T | | | manuál k editoru TEXED |
-| KASWRD+2 | ? | AutoRun | 2,2A,3 | KASWORD+2 |
-| KASW-CON | ? | AutoRun | 2,2A,3 | KASWORD+2 s inym ovladacom tlaciarne|
--->
- <software name="texted">
+| 00 KASWORD3 | ? | JUMP 0000 | 1,2,2A,3 | KASWORD 3 |
+| 00 KASW.MAN | X | | | manuál k editoru KASWORD3 |
+| 00 TEXED | ? | JUMP 0000 | 2,2A,3 | úprava P. Holubek |
+| 00 MANTEXED | T | | | manuál k editoru TEXED |
+| 00 KASWRD+2 | ? | AutoRun | 2,2A,3 | KASWORD+2 |
+| 03 KASW-CON | ? | AutoRun | 2,2A,3 | KASWORD+2 s inym ovladacom tlaciarne|
+-->
+ <software name="texted"><!-- untested -->
<description>Texted</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
@@ -985,13 +990,13 @@ For now tape loading only works in PMD-85.1
</software>
<!-- vegrap.ptp
-| VEGRAP3X | ? | JUMP 0000 | 1,2,2A,3 | (9.3.1988) |
-| MANVEGR1 | T | | | manuál k editoru VEGRAP3X |
-| MANVEGR2 | T | | | |
-| VEGRAP;Q | ? | JUMP 0000 | 1,2,2A,3 | (30.12.1989) |
-| MANVGP;Q | X | | | manuál k editoru VEGRAP;Q |
+| 03 VEGRAP3X | ? | JUMP 0000 | 1,2,2A,3 | (9.3.1988) |
+| 00 MANVEGR1 | T | | | manuál k editoru VEGRAP3X |
+| 00 MANVEGR2 | T | | | |
+| 03 VEGRAP;Q | ? | JUMP 0000 | 1,2,2A,3 | (30.12.1989) |
+| 00 MANVGP;Q | X | | | manuál k editoru VEGRAP;Q |
-->
- <software name="vegrap">
+ <software name="vegrap"><!-- untested -->
<description>Vegrap</description>
<year>198?</year>
<publisher>&lt;unknown&gt;</publisher>
diff --git a/src/mame/drivers/pmd85.cpp b/src/mame/drivers/pmd85.cpp
index cd048925706..b8eab04d666 100644
--- a/src/mame/drivers/pmd85.cpp
+++ b/src/mame/drivers/pmd85.cpp
@@ -26,19 +26,19 @@ What's new:
Notes on emulation status and to do list:
-----------------------------------------
-1. V.24.
-2. Tape emulation for other machines than PMD-85.1.
-3. Flash video attribute.
-4. External interfaces connectors (K2-K5).
-5. Speaker.
-6. Verify PMD-85.2A, PMD-85.3, Didaktik Alfa and Mato monitor roms.
-7. Verify all Basic roms.
-8. 8251 in Didaktik Alfa.
-9. Colors (if any).
-10. PMD-85, Didaktik Alfa 2 and Didaktik Beta (ROMs and documentation needed).
-11. FDD interface (ROMs and disk images needed).
-12. "Duch & Pampuch" Mato game displays scores with incorrect characters.
-13. Tape save in pmd851 is badly formatted - cannot be loaded.
+1. V.24.
+2. Flash video attribute.
+3. External interfaces connectors (K2-K5).
+4. C2717PMD is marked MNW, but there's nothing to say why.
+5. Verify PMD-85.2A, PMD-85.3, Didaktik Alfa and Mato monitor roms.
+6. Verify all Basic roms.
+7. 8251 in Didaktik Alfa.
+8. Colors (if any). Seems most versions supported 4 colours via RGB connector. But, the TV modulator only carried the G line.
+ The video signals are developed in a forest of gates which may take a while to work out.
+9. PMD-85, Didaktik Alfa 2 and Didaktik Beta (ROMs and documentation needed).
+10. FDD interface (ROMs and disk images needed).
+11. "Duch & Pampuch" Mato game displays scores with incorrect characters.
+
PMD-85 technical information
============================
@@ -183,47 +183,50 @@ SUB aaaa bb cc dd... - write bytes to memory starting at aaaa with bb,cc,dd...
Cassette
--------
-The systems belong to 3 groups which are not compatible with each other.
-- pmd851, alfa
-- mato
-- pmd852, pmd852a, pmd852b, pmd853, c2717, c2717pmd
Cassettes tested with Basic
- pmd852,pmd852a,pmd852b,pmd853,c2717,c2717pmd - these can save and load back their own files
-- pmd851 - won't go into basic
-- mato,alfa - don't come with basic?
-
-Software list items
-- mato - not compatible
-- all others - recognise headers of sw-item-tapes, but won't load? Maybe the usage is not understood properly.
-
-- Some software items will crash the emulator, for example >mame pmd851 bdash
-
-Header information from what I can understand
-xx/z yyyyyyyy
+- pmd851,mato,alfa - not tested yet.
+
+Getting into Basic:
+- pmd852,pmd852a,pmd852b,pmd853 : In the Machine Configuration, enable Basic and Reset.
+- pmd851,alfa : type BASIC 00 (or any parameter)
+- mato : type BASIC
+- c2717,c2717pmd : you're already in Basic.
+- How to get out? Unknown.
+
+Loading a tape:
+- In the monitor : type MGLD <fn>, where <fn> is the file number, usually 00. File numbers will be shown in the
+ software list usage.
+- In Basic : type LOAD <fn>, where <fn> is the same as above.
+- The tape can only be loaded into the environment it's meant for. Otherwise, you'll only get header information
+ followed by a freeze.
+
+Header information from what I can understand: xx/z yyyyyyyy
+yyyyyyyy = filename
xx = file number
z = status code (guesses below)
> - only loadable by Basic
- ? - only loadable by the monitor - it gives no clue as to the exec address
- P - protected? I've had no luck getting one to load
-yyyyyyyy = filename
+ ? - only loadable by the monitor - it gives no clue as to the exec address, but should start by itself if it's
+ been saved correctly.
+ x - other codes are added by the user and have program-specific meanings.
+
+Software list items: Some work, some don't, and some only work on certain machines. A test with "bludiste"
+(a monitor program) produced the following:
+- pmd851,pmd852,pmd852a,pmd852b,alfa - loads and runs
+- c2717,c2717pmd - recognises and prints the header, but then doesn't load the tape, because the machine is
+ stuck in Basic.
+- mato,pmd853 - does nothing
+
+Some software items will crash MAME, for example "bdash".
*******************************************************************************************************************/
#include "emu.h"
#include "includes/pmd85.h"
-
#include "cpu/i8085/i8085.h"
-#include "imagedev/cassette.h"
-#include "machine/i8251.h"
-#include "machine/i8255.h"
-#include "machine/pit8253.h"
-#include "machine/ram.h"
-
#include "screen.h"
-#include "softlist.h"
#include "speaker.h"
-
#include "formats/pmd_cas.h"
@@ -231,7 +234,7 @@ yyyyyyyy = filename
// VIDEO EMULATION
//**************************************************************************
-uint32_t pmd85_state::screen_update_pmd85(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t pmd85_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
for (int y = 0; y < 256; y++)
{
@@ -258,12 +261,12 @@ uint32_t pmd85_state::screen_update_pmd85(screen_device &screen, bitmap_ind16 &b
/* I/O ports */
-void pmd85_state::pmd85_io_map(address_map &map)
+void pmd85_state::pmd85_io(address_map &map)
{
- map(0x00, 0xff).rw(FUNC(pmd85_state::pmd85_io_r), FUNC(pmd85_state::pmd85_io_w));
+ map(0x00, 0xff).rw(FUNC(pmd85_state::io_r), FUNC(pmd85_state::io_w));
}
-void pmd85_state::mato_io_map(address_map &map)
+void pmd85_state::mato_io(address_map &map)
{
map(0x00, 0xff).rw(FUNC(pmd85_state::mato_io_r), FUNC(pmd85_state::mato_io_w));
}
@@ -278,9 +281,7 @@ void pmd85_state::pmd85_mem(address_map &map)
map(0x3000, 0x3fff).bankrw("bank4");
map(0x4000, 0x7fff).bankrw("bank5");
map(0x8000, 0x8fff).bankr("bank6");
- map(0x9000, 0x9fff).noprw();
map(0xa000, 0xafff).bankr("bank7");
- map(0xb000, 0xbfff).noprw();
map(0xc000, 0xffff).bankrw("bank8");
}
@@ -318,7 +319,6 @@ void pmd85_state::alfa_mem(address_map &map)
map(0x4000, 0x7fff).bankrw("bank4");
map(0x8000, 0x8fff).bankr("bank5");
map(0x9000, 0xb3ff).bankr("bank6");
- map(0xb400, 0xbfff).noprw();
map(0xc000, 0xffff).bankrw("bank7");
}
@@ -518,7 +518,7 @@ static INPUT_PORTS_START( alfa )
PORT_INCLUDE( pmd85 )
PORT_MODIFY( "DSW0" )
- PORT_BIT( 0x01, 0x00, IPT_UNUSED )
+ PORT_BIT( 0x01, 0x01, IPT_UNUSED )
INPUT_PORTS_END
@@ -623,7 +623,7 @@ void pmd85_state::pmd85(machine_config &config, bool with_uart)
/* basic machine hardware */
I8080(config, m_maincpu, XTAL(18'432'000)/9);
m_maincpu->set_addrmap(AS_PROGRAM, &pmd85_state::pmd85_mem);
- m_maincpu->set_addrmap(AS_IO, &pmd85_state::pmd85_io_map);
+ m_maincpu->set_addrmap(AS_IO, &pmd85_state::pmd85_io);
config.set_maximum_quantum(attotime::from_hz(60));
@@ -647,10 +647,10 @@ void pmd85_state::pmd85(machine_config &config, bool with_uart)
*******************************************************************************/
- PIT8253(config, m_pit8253, 0);
- m_pit8253->set_clk<0>(0);
- m_pit8253->set_clk<1>(XTAL(18'432'000)/9);
- m_pit8253->set_clk<2>(1);
+ PIT8253(config, m_pit, 0);
+ m_pit->set_clk<0>(0);
+ m_pit->set_clk<1>(XTAL(18'432'000)/9);
+ m_pit->set_clk<2>(1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -659,13 +659,14 @@ void pmd85_state::pmd85(machine_config &config, bool with_uart)
screen.set_vblank_time(0);
screen.set_size(288, 256);
screen.set_visarea(0, 288-1, 0, 256-1);
- screen.set_screen_update(FUNC(pmd85_state::screen_update_pmd85));
+ screen.set_screen_update(FUNC(pmd85_state::screen_update));
screen.set_palette(m_palette);
PALETTE(config, m_palette, palette_device::MONOCHROME_HIGHLIGHT);
/* sound hardware */
SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
/* cassette */
CASSETTE(config, m_cassette);
@@ -687,44 +688,44 @@ void pmd85_state::pmd85(machine_config &config, bool with_uart)
}
/* internal ram */
- RAM(config, m_ram).set_default_size("64K");
+ RAM(config, m_ram).set_default_size("64K").set_default_value(0x00);
}
void pmd85_state::pmd851(machine_config &config)
{
pmd85(config);
- I8255(config, m_ppi8255_0, 0);
- m_ppi8255_0->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_0_porta_r));
- m_ppi8255_0->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portb_r));
- m_ppi8255_0->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portc_r));
- m_ppi8255_0->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_0_porta_w));
- m_ppi8255_0->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portb_w));
- m_ppi8255_0->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portc_w));
-
- I8255(config, m_ppi8255_1, 0);
- m_ppi8255_1->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_1_porta_r));
- m_ppi8255_1->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portb_r));
- m_ppi8255_1->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portc_r));
- m_ppi8255_1->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_1_porta_w));
- m_ppi8255_1->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portb_w));
- m_ppi8255_1->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portc_w));
-
- I8255(config, m_ppi8255_2, 0);
- m_ppi8255_2->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_2_porta_r));
- m_ppi8255_2->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portb_r));
- m_ppi8255_2->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portc_r));
- m_ppi8255_2->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_2_porta_w));
- m_ppi8255_2->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portb_w));
- m_ppi8255_2->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portc_w));
-
- I8255(config, m_ppi8255_3, 0);
- m_ppi8255_3->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_3_porta_r));
- m_ppi8255_3->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_3_portb_r));
- m_ppi8255_3->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_3_portc_r));
- m_ppi8255_3->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_3_porta_w));
- m_ppi8255_3->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_3_portb_w));
- m_ppi8255_3->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_3_portc_w));
+ I8255(config, m_ppi0, 0);
+ m_ppi0->in_pa_callback().set(FUNC(pmd85_state::ppi0_porta_r));
+ m_ppi0->in_pb_callback().set(FUNC(pmd85_state::ppi0_portb_r));
+ m_ppi0->in_pc_callback().set(FUNC(pmd85_state::ppi0_portc_r));
+ m_ppi0->out_pa_callback().set(FUNC(pmd85_state::ppi0_porta_w));
+ m_ppi0->out_pb_callback().set(FUNC(pmd85_state::ppi0_portb_w));
+ m_ppi0->out_pc_callback().set(FUNC(pmd85_state::ppi0_portc_w));
+
+ I8255(config, m_ppi1, 0);
+ m_ppi1->in_pa_callback().set(FUNC(pmd85_state::ppi1_porta_r));
+ m_ppi1->in_pb_callback().set(FUNC(pmd85_state::ppi1_portb_r));
+ m_ppi1->in_pc_callback().set(FUNC(pmd85_state::ppi1_portc_r));
+ m_ppi1->out_pa_callback().set(FUNC(pmd85_state::ppi1_porta_w));
+ m_ppi1->out_pb_callback().set(FUNC(pmd85_state::ppi1_portb_w));
+ m_ppi1->out_pc_callback().set(FUNC(pmd85_state::ppi1_portc_w));
+
+ I8255(config, m_ppi2, 0);
+ m_ppi2->in_pa_callback().set(FUNC(pmd85_state::ppi2_porta_r));
+ m_ppi2->in_pb_callback().set(FUNC(pmd85_state::ppi2_portb_r));
+ m_ppi2->in_pc_callback().set(FUNC(pmd85_state::ppi2_portc_r));
+ m_ppi2->out_pa_callback().set(FUNC(pmd85_state::ppi2_porta_w));
+ m_ppi2->out_pb_callback().set(FUNC(pmd85_state::ppi2_portb_w));
+ m_ppi2->out_pc_callback().set(FUNC(pmd85_state::ppi2_portc_w));
+
+ I8255(config, m_ppi3, 0);
+ m_ppi3->in_pa_callback().set(FUNC(pmd85_state::ppi3_porta_r));
+ m_ppi3->in_pb_callback().set(FUNC(pmd85_state::ppi3_portb_r));
+ m_ppi3->in_pc_callback().set(FUNC(pmd85_state::ppi3_portc_r));
+ m_ppi3->out_pa_callback().set(FUNC(pmd85_state::ppi3_porta_w));
+ m_ppi3->out_pb_callback().set(FUNC(pmd85_state::ppi3_portb_w));
+ m_ppi3->out_pc_callback().set(FUNC(pmd85_state::ppi3_portc_w));
}
void pmd85_state::pmd852a(machine_config &config)
@@ -744,44 +745,44 @@ void pmd85_state::alfa(machine_config &config)
pmd85(config);
m_maincpu->set_addrmap(AS_PROGRAM, &pmd85_state::alfa_mem);
- I8255(config, m_ppi8255_0, 0);
- m_ppi8255_0->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_0_porta_r));
- m_ppi8255_0->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portb_r));
- m_ppi8255_0->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portc_r));
- m_ppi8255_0->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_0_porta_w));
- m_ppi8255_0->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portb_w));
- m_ppi8255_0->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portc_w));
-
- I8255(config, m_ppi8255_1, 0);
- m_ppi8255_1->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_1_porta_r));
- m_ppi8255_1->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portb_r));
- m_ppi8255_1->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portc_r));
- m_ppi8255_1->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_1_porta_w));
- m_ppi8255_1->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portb_w));
- m_ppi8255_1->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portc_w));
-
- I8255(config, m_ppi8255_2, 0);
- m_ppi8255_2->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_2_porta_r));
- m_ppi8255_2->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portb_r));
- m_ppi8255_2->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portc_r));
- m_ppi8255_2->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_2_porta_w));
- m_ppi8255_2->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portb_w));
- m_ppi8255_2->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portc_w));
+ I8255(config, m_ppi0, 0);
+ m_ppi0->in_pa_callback().set(FUNC(pmd85_state::ppi0_porta_r));
+ m_ppi0->in_pb_callback().set(FUNC(pmd85_state::ppi0_portb_r));
+ m_ppi0->in_pc_callback().set(FUNC(pmd85_state::ppi0_portc_r));
+ m_ppi0->out_pa_callback().set(FUNC(pmd85_state::ppi0_porta_w));
+ m_ppi0->out_pb_callback().set(FUNC(pmd85_state::ppi0_portb_w));
+ m_ppi0->out_pc_callback().set(FUNC(pmd85_state::ppi0_portc_w));
+
+ I8255(config, m_ppi1, 0);
+ m_ppi1->in_pa_callback().set(FUNC(pmd85_state::ppi1_porta_r));
+ m_ppi1->in_pb_callback().set(FUNC(pmd85_state::ppi1_portb_r));
+ m_ppi1->in_pc_callback().set(FUNC(pmd85_state::ppi1_portc_r));
+ m_ppi1->out_pa_callback().set(FUNC(pmd85_state::ppi1_porta_w));
+ m_ppi1->out_pb_callback().set(FUNC(pmd85_state::ppi1_portb_w));
+ m_ppi1->out_pc_callback().set(FUNC(pmd85_state::ppi1_portc_w));
+
+ I8255(config, m_ppi2, 0);
+ m_ppi2->in_pa_callback().set(FUNC(pmd85_state::ppi2_porta_r));
+ m_ppi2->in_pb_callback().set(FUNC(pmd85_state::ppi2_portb_r));
+ m_ppi2->in_pc_callback().set(FUNC(pmd85_state::ppi2_portc_r));
+ m_ppi2->out_pa_callback().set(FUNC(pmd85_state::ppi2_porta_w));
+ m_ppi2->out_pb_callback().set(FUNC(pmd85_state::ppi2_portb_w));
+ m_ppi2->out_pc_callback().set(FUNC(pmd85_state::ppi2_portc_w));
}
void pmd85_state::mato(machine_config &config)
{
pmd85(config, false); /* no uart */
m_maincpu->set_addrmap(AS_PROGRAM, &pmd85_state::mato_mem);
- m_maincpu->set_addrmap(AS_IO, &pmd85_state::mato_io_map);
-
- I8255(config, m_ppi8255_0, 0);
- m_ppi8255_0->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_0_porta_r));
- m_ppi8255_0->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_0_porta_w));
- m_ppi8255_0->in_pb_callback().set(FUNC(pmd85_state::mato_ppi_0_portb_r));
- m_ppi8255_0->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portb_w));
- m_ppi8255_0->in_pc_callback().set(FUNC(pmd85_state::mato_ppi_0_portc_r));
- m_ppi8255_0->out_pc_callback().set(FUNC(pmd85_state::mato_ppi_0_portc_w));
+ m_maincpu->set_addrmap(AS_IO, &pmd85_state::mato_io);
+
+ I8255(config, m_ppi0, 0);
+ m_ppi0->in_pa_callback().set(FUNC(pmd85_state::ppi0_porta_r));
+ m_ppi0->out_pa_callback().set(FUNC(pmd85_state::ppi0_porta_w));
+ m_ppi0->in_pb_callback().set(FUNC(pmd85_state::mato_ppi0_portb_r));
+ m_ppi0->out_pb_callback().set(FUNC(pmd85_state::ppi0_portb_w));
+ m_ppi0->in_pc_callback().set(FUNC(pmd85_state::mato_ppi0_portc_r));
+ m_ppi0->out_pc_callback().set(FUNC(pmd85_state::mato_ppi0_portc_w));
}
void pmd85_state::c2717(machine_config &config)
@@ -792,82 +793,87 @@ void pmd85_state::c2717(machine_config &config)
ROM_START(pmd851)
- ROM_REGION(0x11000,"maincpu",0)
- ROM_LOAD("pmd85-1.bin", 0x10000, 0x1000, CRC(ef50b416) SHA1(afa3ec0d03228adc5287a4cba905ce7ad0497dff))
+ ROM_REGION(0x1000,"maincpu",0)
+ ROM_LOAD("pmd85-1.bin", 0x0000, 0x1000, CRC(ef50b416) SHA1(afa3ec0d03228adc5287a4cba905ce7ad0497dff))
+
ROM_REGION(0x2400,"user1",0)
- ROM_LOAD_OPTIONAL("pmd85-1.bas", 0x0000, 0x2400, CRC(4fc37d45) SHA1(3bd0f92f37a3f2ee539916dc75508bda37433a72))
+ ROM_LOAD("pmd85-1.bas", 0x0000, 0x2400, CRC(4fc37d45) SHA1(3bd0f92f37a3f2ee539916dc75508bda37433a72))
ROM_END
ROM_START(pmd852)
- ROM_REGION(0x11000,"maincpu",0)
- ROM_LOAD("pmd85-2.bin", 0x10000, 0x1000, CRC(d4786f63) SHA1(6facdf37bb012714244b012a0c4bd715a956e42b))
+ ROM_REGION(0x1000,"maincpu",0)
+ ROM_LOAD("pmd85-2.bin", 0x0000, 0x1000, CRC(d4786f63) SHA1(6facdf37bb012714244b012a0c4bd715a956e42b))
+
ROM_REGION(0x2400,"user1",0)
- ROM_LOAD_OPTIONAL("pmd85-2.bas", 0x0000, 0x2400, CRC(fc4a3ebf) SHA1(3bfc0e9a5cd5187da573b5d539d7246358125a88))
+ ROM_LOAD("pmd85-2.bas", 0x0000, 0x2400, CRC(fc4a3ebf) SHA1(3bfc0e9a5cd5187da573b5d539d7246358125a88))
ROM_END
ROM_START(pmd852a)
- ROM_REGION(0x11000,"maincpu",0)
- ROM_LOAD("pmd85-2a.bin", 0x10000, 0x1000, CRC(5a9a961b) SHA1(7363341596367d08b9a98767c6585ce18dfd03af))
+ ROM_REGION(0x1000,"maincpu",0)
+ ROM_LOAD("pmd85-2a.bin", 0x0000, 0x1000, CRC(5a9a961b) SHA1(7363341596367d08b9a98767c6585ce18dfd03af))
+
ROM_REGION(0x2400,"user1",0)
- ROM_LOAD_OPTIONAL("pmd85-2a.bas", 0x0000, 0x2400, CRC(6ff379ad) SHA1(edcaf2420cac9771596ead5c86c41116b228eca3))
+ ROM_LOAD("pmd85-2a.bas", 0x0000, 0x2400, CRC(6ff379ad) SHA1(edcaf2420cac9771596ead5c86c41116b228eca3))
ROM_END
ROM_START(pmd852b)
- ROM_REGION(0x11000,"maincpu",0)
- ROM_LOAD("pmd85-2a.bin", 0x10000, 0x1000, CRC(5a9a961b) SHA1(7363341596367d08b9a98767c6585ce18dfd03af))
+ ROM_REGION(0x1000,"maincpu",0)
+ ROM_LOAD("pmd85-2a.bin", 0x0000, 0x1000, CRC(5a9a961b) SHA1(7363341596367d08b9a98767c6585ce18dfd03af))
+
ROM_REGION(0x2400,"user1",0)
- ROM_LOAD_OPTIONAL("pmd85-2a.bas", 0x0000, 0x2400, CRC(6ff379ad) SHA1(edcaf2420cac9771596ead5c86c41116b228eca3))
+ ROM_LOAD("pmd85-2a.bas", 0x0000, 0x2400, CRC(6ff379ad) SHA1(edcaf2420cac9771596ead5c86c41116b228eca3))
ROM_END
ROM_START(pmd853)
- ROM_REGION(0x12000,"maincpu",0)
- ROM_LOAD("pmd85-3.bin", 0x10000, 0x2000, CRC(83e22c47) SHA1(5f131e27ae3ec8907adbe5cd228c67d131066084))
+ ROM_REGION(0x2000,"maincpu",0)
+ ROM_LOAD("pmd85-3.bin", 0x0000, 0x2000, CRC(83e22c47) SHA1(5f131e27ae3ec8907adbe5cd228c67d131066084))
+
ROM_REGION(0x2800,"user1",0)
- ROM_LOAD_OPTIONAL("pmd85-3.bas", 0x0000, 0x2800, CRC(1e30e91d) SHA1(d086040abf4c0a7e5da8cf4db7d1668a1d9309a4))
+ ROM_LOAD("pmd85-3.bas", 0x0000, 0x2800, CRC(1e30e91d) SHA1(d086040abf4c0a7e5da8cf4db7d1668a1d9309a4))
ROM_END
ROM_START(alfa)
- ROM_REGION(0x13400,"maincpu",0)
- ROM_LOAD("alfa.bin", 0x10000, 0x1000, CRC(e425eedb) SHA1(db93b5de1e16b5ae71be08feb083a2ac15759495))
- ROM_LOAD("alfa.bas", 0x11000, 0x2400, CRC(9a73bfd2) SHA1(74314d989846f64e715f64deb84cb177fa62f4a9))
+ ROM_REGION(0x3400,"maincpu",0)
+ ROM_LOAD("alfa.bin", 0x0000, 0x1000, CRC(e425eedb) SHA1(db93b5de1e16b5ae71be08feb083a2ac15759495))
+ ROM_LOAD("alfa.bas", 0x1000, 0x2400, CRC(9a73bfd2) SHA1(74314d989846f64e715f64deb84cb177fa62f4a9))
ROM_END
ROM_START(mato)
- ROM_REGION(0x14000,"maincpu",0)
+ ROM_REGION(0x4000,"maincpu",0)
ROM_SYSTEM_BIOS(0, "default", "BASIC")
- ROMX_LOAD("mato.bin", 0x10000, 0x4000, CRC(574110a6) SHA1(4ff2cd4b07a1a700c55f92e5b381c04f758fb461), ROM_BIOS(0))
+ ROMX_LOAD("mato.bin", 0x0000, 0x4000, CRC(574110a6) SHA1(4ff2cd4b07a1a700c55f92e5b381c04f758fb461), ROM_BIOS(0))
ROM_SYSTEM_BIOS(1, "ru", "Russian")
- ROMX_LOAD("mato-ru.rom", 0x10000, 0x4000, CRC(44b68be4) SHA1(0d9ea9a9380e2af011a2f0b64c534dd0eb0a1fac), ROM_BIOS(1))
+ ROMX_LOAD("mato-ru.rom", 0x0000, 0x4000, CRC(44b68be4) SHA1(0d9ea9a9380e2af011a2f0b64c534dd0eb0a1fac), ROM_BIOS(1))
ROM_SYSTEM_BIOS(2, "lan", "BASIC LAN")
- ROMX_LOAD("mato-lan.rom", 0x10000, 0x4000, CRC(422cddde) SHA1(2a3dacf8e3e7637109c9d267f589a00881e9a5f4), ROM_BIOS(2))
+ ROMX_LOAD("mato-lan.rom", 0x0000, 0x4000, CRC(422cddde) SHA1(2a3dacf8e3e7637109c9d267f589a00881e9a5f4), ROM_BIOS(2))
ROM_SYSTEM_BIOS(3, "games", "Games v1")
- ROMX_LOAD("matoh.bin", 0x10000, 0x4000, CRC(ca25880d) SHA1(38ce0b6a26d48a09fdf96863c3eaf3705aca2590), ROM_BIOS(3))
+ ROMX_LOAD("matoh.bin", 0x0000, 0x4000, CRC(ca25880d) SHA1(38ce0b6a26d48a09fdf96863c3eaf3705aca2590), ROM_BIOS(3))
ROM_SYSTEM_BIOS(4, "gamesen", "Games v2 EN")
- ROMX_LOAD("matogmen.rom", 0x10000, 0x4000, CRC(47e039c8) SHA1(6cc73a6b58921b33691d2751dee28428456eb222), ROM_BIOS(4))
+ ROMX_LOAD("matogmen.rom", 0x0000, 0x4000, CRC(47e039c8) SHA1(6cc73a6b58921b33691d2751dee28428456eb222), ROM_BIOS(4))
ROM_SYSTEM_BIOS(5, "gamessk", "Games v2 SK")
- ROMX_LOAD("matogmsk.rom", 0x10000, 0x4000, CRC(d0c9b1e7) SHA1(9e7289d971a957bf161c317e5fa76db3289ee23c), ROM_BIOS(5))
+ ROMX_LOAD("matogmsk.rom", 0x0000, 0x4000, CRC(d0c9b1e7) SHA1(9e7289d971a957bf161c317e5fa76db3289ee23c), ROM_BIOS(5))
ROM_SYSTEM_BIOS(6, "games3", "Games v3")
- ROMX_LOAD("matogm3.rom", 0x10000, 0x4000, CRC(9352f2c1) SHA1(b3e45c56d2800c69a0bb02febda6fa715f1afbc3), ROM_BIOS(6))
+ ROMX_LOAD("matogm3.rom", 0x0000, 0x4000, CRC(9352f2c1) SHA1(b3e45c56d2800c69a0bb02febda6fa715f1afbc3), ROM_BIOS(6))
ROM_END
ROM_START(c2717)
- ROM_REGION(0x14000,"maincpu",0)
- ROM_LOAD("c2717.rom", 0x10000, 0x4000, CRC(da1703b1) SHA1(9fb93e6cae8b551064c7175bf3b4e3113429ce73))
+ ROM_REGION(0x4000,"maincpu",0)
+ ROM_LOAD("c2717.rom", 0x0000, 0x4000, CRC(da1703b1) SHA1(9fb93e6cae8b551064c7175bf3b4e3113429ce73))
ROM_END
ROM_START(c2717pmd)
- ROM_REGION(0x14000,"maincpu",0)
- ROM_LOAD( "c2717-pmd32.rom", 0x10000, 0x4000, CRC(cbdd323c) SHA1(ee9fea11be8bd4f945c583b0ae5684269906d0ce))
+ ROM_REGION(0x4000,"maincpu",0)
+ ROM_LOAD( "c2717-pmd32.rom", 0x00000, 0x4000, CRC(cbdd323c) SHA1(ee9fea11be8bd4f945c583b0ae5684269906d0ce))
ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1985, pmd851, 0, 0, pmd851, pmd85, pmd85_state, init_pmd851, "Tesla", "PMD-85.1", 0 )
-COMP( 1985, pmd852, pmd851, 0, pmd851, pmd85, pmd85_state, init_pmd852, "Tesla", "PMD-85.2", 0 )
-COMP( 1985, pmd852a, pmd851, 0, pmd852a, pmd85, pmd85_state, init_pmd852a, "Tesla", "PMD-85.2A", 0 )
-COMP( 1985, pmd852b, pmd851, 0, pmd852a, pmd85, pmd85_state, init_pmd852a, "Tesla", "PMD-85.2B", 0 )
-COMP( 1988, pmd853, pmd851, 0, pmd853, pmd85, pmd85_state, init_pmd853, "Tesla", "PMD-85.3", 0 )
-COMP( 1986, alfa, pmd851, 0, alfa, alfa, pmd85_state, init_alfa, "Didaktik Skalica", "Didaktik Alfa", 0 )
-COMP( 1985, mato, pmd851, 0, mato, mato, pmd85_state, init_mato, "Statny", "Mato", 0 )
-COMP( 1989, c2717, pmd851, 0, c2717, pmd85, pmd85_state, init_c2717, "Zbrojovka Brno", "Consul 2717", 0 )
-COMP( 1989, c2717pmd, pmd851, 0, c2717, pmd85, pmd85_state, init_c2717, "Zbrojovka Brno", "Consul 2717 (with PMD-32)", MACHINE_NOT_WORKING )
+COMP( 1985, pmd851, 0, 0, pmd851, alfa, pmd85_state, init_pmd851, "Tesla", "PMD-85.1", MACHINE_SUPPORTS_SAVE )
+COMP( 1985, pmd852, pmd851, 0, pmd851, pmd85, pmd85_state, init_pmd852, "Tesla", "PMD-85.2", MACHINE_SUPPORTS_SAVE )
+COMP( 1985, pmd852a, pmd851, 0, pmd852a, pmd85, pmd85_state, init_pmd852a, "Tesla", "PMD-85.2A", MACHINE_SUPPORTS_SAVE )
+COMP( 1985, pmd852b, pmd851, 0, pmd852a, pmd85, pmd85_state, init_pmd852a, "Tesla", "PMD-85.2B", MACHINE_SUPPORTS_SAVE )
+COMP( 1988, pmd853, pmd851, 0, pmd853, pmd85, pmd85_state, init_pmd853, "Tesla", "PMD-85.3", MACHINE_SUPPORTS_SAVE )
+COMP( 1986, alfa, pmd851, 0, alfa, alfa, pmd85_state, init_alfa, "Didaktik Skalica", "Didaktik Alfa", MACHINE_SUPPORTS_SAVE )
+COMP( 1985, mato, pmd851, 0, mato, mato, pmd85_state, init_mato, "Statny", "Mato", MACHINE_SUPPORTS_SAVE )
+COMP( 1989, c2717, pmd851, 0, c2717, pmd85, pmd85_state, init_c2717, "Zbrojovka Brno", "Consul 2717", MACHINE_SUPPORTS_SAVE )
+COMP( 1989, c2717pmd, pmd851, 0, c2717, pmd85, pmd85_state, init_c2717, "Zbrojovka Brno", "Consul 2717 (with PMD-32)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/pmd85.h b/src/mame/includes/pmd85.h
index 28d79e9739a..2ee987945c6 100644
--- a/src/mame/includes/pmd85.h
+++ b/src/mame/includes/pmd85.h
@@ -14,6 +14,7 @@
#include "machine/pit8253.h"
#include "machine/i8255.h"
#include "imagedev/cassette.h"
+#include "sound/spkrdev.h"
#include "machine/ram.h"
#include "emupal.h"
@@ -21,37 +22,24 @@
class pmd85_state : public driver_device
{
public:
- pmd85_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_ram(*this, RAM_TAG),
- m_cassette(*this, "cassette"),
- m_pit8253(*this, "pit8253"),
- m_uart(*this, "uart"),
- m_ppi8255_0(*this, "ppi8255_0"),
- m_ppi8255_1(*this, "ppi8255_1"),
- m_ppi8255_2(*this, "ppi8255_2"),
- m_ppi8255_3(*this, "ppi8255_3"),
- m_region_maincpu(*this, "maincpu"),
- m_bank1(*this, "bank1"),
- m_bank2(*this, "bank2"),
- m_bank3(*this, "bank3"),
- m_bank4(*this, "bank4"),
- m_bank5(*this, "bank5"),
- m_bank6(*this, "bank6"),
- m_bank7(*this, "bank7"),
- m_bank8(*this, "bank8"),
- m_bank9(*this, "bank9"),
- m_bank10(*this, "bank10"),
- m_bank11(*this, "bank11"),
- m_bank12(*this, "bank12"),
- m_bank13(*this, "bank13"),
- m_bank14(*this, "bank14"),
- m_bank15(*this, "bank15"),
- m_bank16(*this, "bank16"),
- m_io_dsw0(*this, "DSW0"),
- m_palette(*this, "palette"),
- m_leds(*this, "led%u", 0U)
+ pmd85_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_rom(*this, "maincpu")
+ , m_ram(*this, RAM_TAG)
+ , m_cassette(*this, "cassette")
+ , m_speaker(*this, "speaker")
+ , m_pit(*this, "pit")
+ , m_uart(*this, "uart")
+ , m_ppi0(*this, "ppi0")
+ , m_ppi1(*this, "ppi1")
+ , m_ppi2(*this, "ppi2")
+ , m_ppi3(*this, "ppi3")
+ , m_bank(*this, "bank%d", 0U)
+ , m_io_dsw0(*this, "DSW0")
+ , m_palette(*this, "palette")
+ , m_io_keyboard(*this, "KEY%u", 0U)
+ , m_leds(*this, "led%u", 0U)
{ }
void pmd85(machine_config &config, bool with_uart = true);
@@ -78,6 +66,7 @@ private:
TIMER_CASSETTE
};
+ bool m_txd, m_rts;
uint8_t m_rom_module_present;
uint8_t m_ppi_port_outputs[4][3];
uint8_t m_startup_mem_map;
@@ -88,83 +77,52 @@ private:
uint8_t m_model;
emu_timer * m_cassette_timer;
void (pmd85_state::*update_memory)();
- uint8_t pmd85_io_r(offs_t offset);
- void pmd85_io_w(offs_t offset, uint8_t data);
+ uint8_t io_r(offs_t offset);
+ void io_w(offs_t offset, uint8_t data);
uint8_t mato_io_r(offs_t offset);
void mato_io_w(offs_t offset, uint8_t data);
virtual void machine_reset() override;
- uint32_t screen_update_pmd85(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_CALLBACK_MEMBER(pmd85_cassette_timer_callback);
- uint8_t pmd85_ppi_0_porta_r();
- uint8_t pmd85_ppi_0_portb_r();
- uint8_t pmd85_ppi_0_portc_r();
- void pmd85_ppi_0_porta_w(uint8_t data);
- void pmd85_ppi_0_portb_w(uint8_t data);
- void pmd85_ppi_0_portc_w(uint8_t data);
- uint8_t mato_ppi_0_portb_r();
- uint8_t mato_ppi_0_portc_r();
- void mato_ppi_0_portc_w(uint8_t data);
- uint8_t pmd85_ppi_1_porta_r();
- uint8_t pmd85_ppi_1_portb_r();
- uint8_t pmd85_ppi_1_portc_r();
- void pmd85_ppi_1_porta_w(uint8_t data);
- void pmd85_ppi_1_portb_w(uint8_t data);
- void pmd85_ppi_1_portc_w(uint8_t data);
- uint8_t pmd85_ppi_2_porta_r();
- uint8_t pmd85_ppi_2_portb_r();
- uint8_t pmd85_ppi_2_portc_r();
- void pmd85_ppi_2_porta_w(uint8_t data);
- void pmd85_ppi_2_portb_w(uint8_t data);
- void pmd85_ppi_2_portc_w(uint8_t data);
- uint8_t pmd85_ppi_3_porta_r();
- uint8_t pmd85_ppi_3_portb_r();
- uint8_t pmd85_ppi_3_portc_r();
- void pmd85_ppi_3_porta_w(uint8_t data);
- void pmd85_ppi_3_portb_w(uint8_t data);
- void pmd85_ppi_3_portc_w(uint8_t data);
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ TIMER_CALLBACK_MEMBER(cassette_timer_callback);
+ uint8_t ppi0_porta_r();
+ uint8_t ppi0_portb_r();
+ uint8_t ppi0_portc_r();
+ void ppi0_porta_w(uint8_t data);
+ void ppi0_portb_w(uint8_t data);
+ void ppi0_portc_w(uint8_t data);
+ uint8_t mato_ppi0_portb_r();
+ uint8_t mato_ppi0_portc_r();
+ void mato_ppi0_portc_w(uint8_t data);
+ uint8_t ppi1_porta_r();
+ uint8_t ppi1_portb_r();
+ uint8_t ppi1_portc_r();
+ void ppi1_porta_w(uint8_t data);
+ void ppi1_portb_w(uint8_t data);
+ void ppi1_portc_w(uint8_t data);
+ uint8_t ppi2_porta_r();
+ uint8_t ppi2_portb_r();
+ uint8_t ppi2_portc_r();
+ void ppi2_porta_w(uint8_t data);
+ void ppi2_portb_w(uint8_t data);
+ void ppi2_portc_w(uint8_t data);
+ uint8_t ppi3_porta_r();
+ uint8_t ppi3_portb_r();
+ uint8_t ppi3_portc_r();
+ void ppi3_porta_w(uint8_t data);
+ void ppi3_portb_w(uint8_t data);
+ void ppi3_portc_w(uint8_t data);
void alfa_mem(address_map &map);
void c2717_mem(address_map &map);
- void mato_io_map(address_map &map);
+ void mato_io(address_map &map);
void mato_mem(address_map &map);
void pmd852a_mem(address_map &map);
void pmd853_mem(address_map &map);
- void pmd85_io_map(address_map &map);
+ void pmd85_io(address_map &map);
void pmd85_mem(address_map &map);
- virtual void machine_start() override { m_leds.resolve(); }
-
- required_device<cpu_device> m_maincpu;
- required_device<ram_device> m_ram;
- required_device<cassette_image_device> m_cassette;
- required_device<pit8253_device> m_pit8253;
- optional_device<i8251_device> m_uart;
- optional_device<i8255_device> m_ppi8255_0;
- optional_device<i8255_device> m_ppi8255_1;
- optional_device<i8255_device> m_ppi8255_2;
- optional_device<i8255_device> m_ppi8255_3;
- required_memory_region m_region_maincpu;
- required_memory_bank m_bank1;
- required_memory_bank m_bank2;
- required_memory_bank m_bank3;
- required_memory_bank m_bank4;
- optional_memory_bank m_bank5;
- optional_memory_bank m_bank6;
- optional_memory_bank m_bank7;
- optional_memory_bank m_bank8;
- optional_memory_bank m_bank9;
- optional_memory_bank m_bank10;
- optional_memory_bank m_bank11;
- optional_memory_bank m_bank12;
- optional_memory_bank m_bank13;
- optional_memory_bank m_bank14;
- optional_memory_bank m_bank15;
- optional_memory_bank m_bank16;
- optional_ioport m_io_dsw0;
- ioport_port *m_io_port[16];
- required_device<palette_device> m_palette;
- output_finder<3> m_leds;
+ virtual void machine_start() override;
void pmd851_update_memory();
void pmd852a_update_memory();
@@ -172,10 +130,25 @@ private:
void alfa_update_memory();
void mato_update_memory();
void c2717_update_memory();
- void pmd85_common_driver_init();
+ void common_driver_init();
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- bool m_txd, m_rts;
+ required_device<cpu_device> m_maincpu;
+ required_region_ptr<u8> m_rom;
+ required_device<ram_device> m_ram;
+ required_device<cassette_image_device> m_cassette;
+ required_device<speaker_sound_device> m_speaker;
+ required_device<pit8253_device> m_pit;
+ optional_device<i8251_device> m_uart;
+ optional_device<i8255_device> m_ppi0;
+ optional_device<i8255_device> m_ppi1;
+ optional_device<i8255_device> m_ppi2;
+ optional_device<i8255_device> m_ppi3;
+ optional_memory_bank_array<17> m_bank;
+ optional_ioport m_io_dsw0;
+ required_device<palette_device> m_palette;
+ optional_ioport_array<16> m_io_keyboard;
+ output_finder<3> m_leds;
};
diff --git a/src/mame/machine/pmd85.cpp b/src/mame/machine/pmd85.cpp
index fde67618240..b4c6086e019 100644
--- a/src/mame/machine/pmd85.cpp
+++ b/src/mame/machine/pmd85.cpp
@@ -12,9 +12,8 @@
***************************************************************************/
#include "emu.h"
-#include "cpu/i8085/i8085.h"
#include "includes/pmd85.h"
-#include "machine/pit8253.h"
+
enum {PMD85_LED_1 = 0, PMD85_LED_2, PMD85_LED_3};
@@ -29,8 +28,6 @@ void pmd85_state::pmd851_update_memory()
if (m_startup_mem_map)
{
- uint8_t *mem = m_region_maincpu->base();
-
space.unmap_write(0x0000, 0x0fff);
space.nop_write(0x1000, 0x1fff);
space.unmap_write(0x2000, 0x2fff);
@@ -39,13 +36,13 @@ void pmd85_state::pmd851_update_memory()
space.nop_read(0x1000, 0x1fff);
space.nop_read(0x3000, 0x3fff);
- m_bank1->set_base(mem + 0x010000);
- m_bank3->set_base(mem + 0x010000);
- m_bank5->set_base(ram + 0xc000);
+ m_bank[1]->set_base(m_rom);
+ m_bank[3]->set_base(m_rom);
+ m_bank[5]->set_base(ram + 0xc000);
- m_bank6->set_base(mem + 0x010000);
- m_bank7->set_base(mem + 0x010000);
- m_bank8->set_base(ram + 0xc000);
+ m_bank[6]->set_base(m_rom);
+ m_bank[7]->set_base(m_rom);
+ m_bank[8]->set_base(ram + 0xc000);
}
else
{
@@ -58,11 +55,11 @@ void pmd85_state::pmd851_update_memory()
space.install_read_bank(0x1000, 0x1fff, "bank2");
space.install_read_bank(0x3000, 0x3fff, "bank4");
- m_bank1->set_base(ram);
- m_bank2->set_base(ram + 0x1000);
- m_bank3->set_base(ram + 0x2000);
- m_bank4->set_base(ram + 0x3000);
- m_bank5->set_base(ram + 0x4000);
+ m_bank[1]->set_base(ram);
+ m_bank[2]->set_base(ram + 0x1000);
+ m_bank[3]->set_base(ram + 0x2000);
+ m_bank[4]->set_base(ram + 0x3000);
+ m_bank[5]->set_base(ram + 0x4000);
}
}
@@ -73,21 +70,19 @@ void pmd85_state::pmd852a_update_memory()
if (m_startup_mem_map)
{
- uint8_t *mem = m_region_maincpu->base();
-
space.unmap_write(0x0000, 0x0fff);
space.unmap_write(0x2000, 0x2fff);
- m_bank1->set_base(mem + 0x010000);
- m_bank2->set_base(ram + 0x9000);
- m_bank3->set_base(mem + 0x010000);
- m_bank4->set_base(ram + 0xb000);
- m_bank5->set_base(ram + 0xc000);
- m_bank6->set_base(mem + 0x010000);
- m_bank7->set_base(ram + 0x9000);
- m_bank8->set_base(mem + 0x010000);
- m_bank9->set_base(ram + 0xb000);
- m_bank10->set_base(ram + 0xc000);
+ m_bank[1]->set_base(m_rom);
+ m_bank[2]->set_base(ram + 0x9000);
+ m_bank[3]->set_base(m_rom);
+ m_bank[4]->set_base(ram + 0xb000);
+ m_bank[5]->set_base(ram + 0xc000);
+ m_bank[6]->set_base(m_rom);
+ m_bank[7]->set_base(ram + 0x9000);
+ m_bank[8]->set_base(m_rom);
+ m_bank[9]->set_base(ram + 0xb000);
+ m_bank[10]->set_base(ram + 0xc000);
}
else
@@ -95,48 +90,47 @@ void pmd85_state::pmd852a_update_memory()
space.install_write_bank(0x0000, 0x0fff, "bank1");
space.install_write_bank(0x2000, 0x2fff, "bank3");
- m_bank1->set_base(ram);
- m_bank2->set_base(ram + 0x1000);
- m_bank3->set_base(ram + 0x2000);
- m_bank4->set_base(ram + 0x5000);
- m_bank5->set_base(ram + 0x4000);
+ m_bank[1]->set_base(ram);
+ m_bank[2]->set_base(ram + 0x1000);
+ m_bank[3]->set_base(ram + 0x2000);
+ m_bank[4]->set_base(ram + 0x5000);
+ m_bank[5]->set_base(ram + 0x4000);
}
}
void pmd85_state::pmd853_update_memory()
{
- uint8_t *mem = m_region_maincpu->base();
uint8_t *ram = m_ram->pointer();
if (m_startup_mem_map)
{
- m_bank1->set_base(mem + 0x010000);
- m_bank2->set_base(mem + 0x010000);
- m_bank3->set_base(mem + 0x010000);
- m_bank4->set_base(mem + 0x010000);
- m_bank5->set_base(mem + 0x010000);
- m_bank6->set_base(mem + 0x010000);
- m_bank7->set_base(mem + 0x010000);
- m_bank8->set_base(mem + 0x010000);
- m_bank9->set_base(ram);
- m_bank10->set_base(ram + 0x2000);
- m_bank11->set_base(ram + 0x4000);
- m_bank12->set_base(ram + 0x6000);
- m_bank13->set_base(ram + 0x8000);
- m_bank14->set_base(ram + 0xa000);
- m_bank15->set_base(ram + 0xc000);
- m_bank16->set_base(ram + 0xe000);
+ m_bank[1]->set_base(m_rom);
+ m_bank[2]->set_base(m_rom);
+ m_bank[3]->set_base(m_rom);
+ m_bank[4]->set_base(m_rom);
+ m_bank[5]->set_base(m_rom);
+ m_bank[6]->set_base(m_rom);
+ m_bank[7]->set_base(m_rom);
+ m_bank[8]->set_base(m_rom);
+ m_bank[9]->set_base(ram);
+ m_bank[10]->set_base(ram + 0x2000);
+ m_bank[11]->set_base(ram + 0x4000);
+ m_bank[12]->set_base(ram + 0x6000);
+ m_bank[13]->set_base(ram + 0x8000);
+ m_bank[14]->set_base(ram + 0xa000);
+ m_bank[15]->set_base(ram + 0xc000);
+ m_bank[16]->set_base(ram + 0xe000);
}
else
{
- m_bank1->set_base(ram);
- m_bank2->set_base(ram + 0x2000);
- m_bank3->set_base(ram + 0x4000);
- m_bank4->set_base(ram + 0x6000);
- m_bank5->set_base(ram + 0x8000);
- m_bank6->set_base(ram + 0xa000);
- m_bank7->set_base(ram + 0xc000);
- m_bank8->set_base(m_pmd853_memory_mapping ? mem + 0x010000 : ram + 0xe000);
+ m_bank[1]->set_base(ram);
+ m_bank[2]->set_base(ram + 0x2000);
+ m_bank[3]->set_base(ram + 0x4000);
+ m_bank[4]->set_base(ram + 0x6000);
+ m_bank[5]->set_base(ram + 0x8000);
+ m_bank[6]->set_base(ram + 0xa000);
+ m_bank[7]->set_base(ram + 0xc000);
+ m_bank[8]->set_base(m_pmd853_memory_mapping ? m_rom : ram + 0xe000);
}
}
@@ -147,18 +141,16 @@ void pmd85_state::alfa_update_memory()
if (m_startup_mem_map)
{
- uint8_t *mem = m_region_maincpu->base();
-
space.unmap_write(0x0000, 0x0fff);
space.unmap_write(0x1000, 0x33ff);
space.nop_write(0x3400, 0x3fff);
- m_bank1->set_base(mem + 0x010000);
- m_bank2->set_base(mem + 0x011000);
- m_bank4->set_base(ram + 0xc000);
- m_bank5->set_base(mem + 0x010000);
- m_bank6->set_base(mem + 0x011000);
- m_bank7->set_base(ram + 0xc000);
+ m_bank[1]->set_base(m_rom);
+ m_bank[2]->set_base(m_rom + 0x1000);
+ m_bank[4]->set_base(ram + 0xc000);
+ m_bank[5]->set_base(m_rom);
+ m_bank[6]->set_base(m_rom + 0x1000);
+ m_bank[7]->set_base(ram + 0xc000);
}
else
{
@@ -166,10 +158,10 @@ void pmd85_state::alfa_update_memory()
space.install_write_bank(0x1000, 0x33ff, "bank2");
space.install_write_bank(0x3400, 0x3fff, "bank3");
- m_bank1->set_base(ram);
- m_bank2->set_base(ram + 0x1000);
- m_bank3->set_base(ram + 0x3400);
- m_bank4->set_base(ram + 0x4000);
+ m_bank[1]->set_base(ram);
+ m_bank[2]->set_base(ram + 0x1000);
+ m_bank[3]->set_base(ram + 0x3400);
+ m_bank[4]->set_base(ram + 0x4000);
}
}
@@ -180,44 +172,41 @@ void pmd85_state::mato_update_memory()
if (m_startup_mem_map)
{
- uint8_t *mem = m_region_maincpu->base();
-
space.unmap_write(0x0000, 0x3fff);
- m_bank1->set_base(mem + 0x010000);
- m_bank2->set_base(ram + 0xc000);
- m_bank3->set_base(mem + 0x010000);
- m_bank4->set_base(ram + 0xc000);
+ m_bank[1]->set_base(m_rom);
+ m_bank[2]->set_base(ram + 0xc000);
+ m_bank[3]->set_base(m_rom);
+ m_bank[4]->set_base(ram + 0xc000);
}
else
{
space.install_write_bank(0x0000, 0x3fff, "bank1");
- m_bank1->set_base(ram);
- m_bank2->set_base(ram + 0x4000);
+ m_bank[1]->set_base(ram);
+ m_bank[2]->set_base(ram + 0x4000);
}
}
void pmd85_state::c2717_update_memory()
{
address_space& space = m_maincpu->space(AS_PROGRAM);
- uint8_t *mem = m_region_maincpu->base();
uint8_t *ram = m_ram->pointer();
if (m_startup_mem_map)
{
space.unmap_write(0x0000, 0x3fff);
- m_bank1->set_base(mem + 0x010000);
- m_bank2->set_base(ram + 0x4000);
- m_bank3->set_base(mem + 0x010000);
- m_bank4->set_base(ram + 0xc000);
+ m_bank[1]->set_base(m_rom);
+ m_bank[2]->set_base(ram + 0x4000);
+ m_bank[3]->set_base(m_rom);
+ m_bank[4]->set_base(ram + 0xc000);
}
else
{
space.install_write_bank(0x0000, 0x3fff, "bank1");
- m_bank1->set_base(ram);
- m_bank2->set_base(ram + 0x4000);
+ m_bank[1]->set_base(ram);
+ m_bank[2]->set_base(ram + 0x4000);
}
}
@@ -229,36 +218,37 @@ void pmd85_state::c2717_update_memory()
*******************************************************************************/
-uint8_t pmd85_state::pmd85_ppi_0_porta_r()
+uint8_t pmd85_state::ppi0_porta_r()
{
return 0xff;
}
-uint8_t pmd85_state::pmd85_ppi_0_portb_r()
+uint8_t pmd85_state::ppi0_portb_r()
{
- return m_io_port[(m_ppi_port_outputs[0][0] & 0x0f)]->read() & m_io_port[15]->read();
+ return m_io_keyboard[(m_ppi_port_outputs[0][0] & 0x0f)]->read() & m_io_keyboard[15]->read();
}
-uint8_t pmd85_state::pmd85_ppi_0_portc_r()
+uint8_t pmd85_state::ppi0_portc_r()
{
return 0xff;
}
-void pmd85_state::pmd85_ppi_0_porta_w(uint8_t data)
+void pmd85_state::ppi0_porta_w(uint8_t data)
{
m_ppi_port_outputs[0][0] = data;
}
-void pmd85_state::pmd85_ppi_0_portb_w(uint8_t data)
+void pmd85_state::ppi0_portb_w(uint8_t data)
{
m_ppi_port_outputs[0][1] = data;
}
-void pmd85_state::pmd85_ppi_0_portc_w(uint8_t data)
+void pmd85_state::ppi0_portc_w(uint8_t data)
{
m_ppi_port_outputs[0][2] = data;
m_leds[PMD85_LED_2] = BIT(data, 3);
- m_leds[PMD85_LED_3] = BIT(data, 2);
+ //m_leds[PMD85_LED_3] = BIT(data, 2);
+ m_speaker->level_w(BIT(data, 2));
}
/*******************************************************************************
@@ -269,31 +259,30 @@ void pmd85_state::pmd85_ppi_0_portc_w(uint8_t data)
*******************************************************************************/
-uint8_t pmd85_state::mato_ppi_0_portb_r()
+uint8_t pmd85_state::mato_ppi0_portb_r()
{
- int i;
- uint8_t data = 0xff;
+ u8 i,data = 0xff;
for (i = 0; i < 8; i++)
- {
if (!BIT(m_ppi_port_outputs[0][0], i))
- data &= m_io_port[i]->read();
- }
+ data &= m_io_keyboard[i]->read();
+
return data;
}
-uint8_t pmd85_state::mato_ppi_0_portc_r()
+uint8_t pmd85_state::mato_ppi0_portc_r()
{
- u8 data = m_io_port[8]->read() & 0x7f;
+ u8 data = m_io_keyboard[8]->read() & 0x7f;
data |= (m_cassette->input() > 0.038) ? 0x80 : 0;
return data;
}
-void pmd85_state::mato_ppi_0_portc_w(uint8_t data)
+void pmd85_state::mato_ppi0_portc_w(uint8_t data)
{
m_ppi_port_outputs[0][2] = data;
m_leds[PMD85_LED_2] = BIT(data, 3);
m_leds[PMD85_LED_3] = BIT(data, 2);
+ m_speaker->level_w(BIT(data, 1));
m_cassette->output(BIT(data, 0) ? 1 : -1);
}
@@ -305,32 +294,32 @@ void pmd85_state::mato_ppi_0_portc_w(uint8_t data)
*******************************************************************************/
-uint8_t pmd85_state::pmd85_ppi_1_porta_r()
+uint8_t pmd85_state::ppi1_porta_r()
{
return 0xff;
}
-uint8_t pmd85_state::pmd85_ppi_1_portb_r()
+uint8_t pmd85_state::ppi1_portb_r()
{
return 0xff;
}
-uint8_t pmd85_state::pmd85_ppi_1_portc_r()
+uint8_t pmd85_state::ppi1_portc_r()
{
return 0xff;
}
-void pmd85_state::pmd85_ppi_1_porta_w(uint8_t data)
+void pmd85_state::ppi1_porta_w(uint8_t data)
{
m_ppi_port_outputs[1][0] = data;
}
-void pmd85_state::pmd85_ppi_1_portb_w(uint8_t data)
+void pmd85_state::ppi1_portb_w(uint8_t data)
{
m_ppi_port_outputs[1][1] = data;
}
-void pmd85_state::pmd85_ppi_1_portc_w(uint8_t data)
+void pmd85_state::ppi1_portc_w(uint8_t data)
{
m_ppi_port_outputs[1][2] = data;
}
@@ -347,32 +336,32 @@ void pmd85_state::pmd85_ppi_1_portc_w(uint8_t data)
*******************************************************************************/
-uint8_t pmd85_state::pmd85_ppi_2_porta_r()
+uint8_t pmd85_state::ppi2_porta_r()
{
return 0xff;
}
-uint8_t pmd85_state::pmd85_ppi_2_portb_r()
+uint8_t pmd85_state::ppi2_portb_r()
{
return 0xff;
}
-uint8_t pmd85_state::pmd85_ppi_2_portc_r()
+uint8_t pmd85_state::ppi2_portc_r()
{
return 0xff;
}
-void pmd85_state::pmd85_ppi_2_porta_w(uint8_t data)
+void pmd85_state::ppi2_porta_w(uint8_t data)
{
m_ppi_port_outputs[2][0] = data;
}
-void pmd85_state::pmd85_ppi_2_portb_w(uint8_t data)
+void pmd85_state::ppi2_portb_w(uint8_t data)
{
m_ppi_port_outputs[2][1] = data;
}
-void pmd85_state::pmd85_ppi_2_portc_w(uint8_t data)
+void pmd85_state::ppi2_portc_w(uint8_t data)
{
m_ppi_port_outputs[2][2] = data;
}
@@ -403,35 +392,35 @@ void pmd85_state::pmd85_ppi_2_portc_w(uint8_t data)
*******************************************************************************/
-uint8_t pmd85_state::pmd85_ppi_3_porta_r()
+uint8_t pmd85_state::ppi3_porta_r()
{
- if (memregion("user1")->base() != nullptr)
+ if (memregion("user1")->base())
return memregion("user1")->base()[m_ppi_port_outputs[3][1] | (m_ppi_port_outputs[3][2] << 8)];
else
return 0;
}
-uint8_t pmd85_state::pmd85_ppi_3_portb_r()
+uint8_t pmd85_state::ppi3_portb_r()
{
return 0xff;
}
-uint8_t pmd85_state::pmd85_ppi_3_portc_r()
+uint8_t pmd85_state::ppi3_portc_r()
{
return 0xff;
}
-void pmd85_state::pmd85_ppi_3_porta_w(uint8_t data)
+void pmd85_state::ppi3_porta_w(uint8_t data)
{
m_ppi_port_outputs[3][0] = data;
}
-void pmd85_state::pmd85_ppi_3_portb_w(uint8_t data)
+void pmd85_state::ppi3_portb_w(uint8_t data)
{
m_ppi_port_outputs[3][1] = data;
}
-void pmd85_state::pmd85_ppi_3_portc_w(uint8_t data)
+void pmd85_state::ppi3_portc_w(uint8_t data)
{
m_ppi_port_outputs[3][2] = data;
}
@@ -459,7 +448,7 @@ void pmd85_state::pmd85_ppi_3_portc_w(uint8_t data)
*******************************************************************************/
-uint8_t pmd85_state::pmd85_io_r(offs_t offset)
+uint8_t pmd85_state::io_r(offs_t offset)
{
if (m_startup_mem_map)
{
@@ -472,7 +461,7 @@ uint8_t pmd85_state::pmd85_io_r(offs_t offset)
switch (offset & 0x80)
{
case 0x80: /* Motherboard 8255 */
- return m_ppi8255_0->read(offset & 0x03);
+ return m_ppi0->read(offset & 0x03);
}
break;
case 0x08: /* ROM module connector */
@@ -481,7 +470,7 @@ uint8_t pmd85_state::pmd85_io_r(offs_t offset)
switch (offset & 0x80)
{
case 0x80: /* ROM module 8255 */
- return m_ppi8255_3->read(offset & 0x03);
+ return m_ppi3->read(offset & 0x03);
}
}
break;
@@ -494,11 +483,11 @@ uint8_t pmd85_state::pmd85_io_r(offs_t offset)
case 0x10: /* 8251 (cassette recorder, V24) */
return m_uart->read(offset & 0x01);
case 0x40: /* 8255 (GPIO/0, GPIO/1) */
- return m_ppi8255_1->read(offset & 0x03);
+ return m_ppi1->read(offset & 0x03);
case 0x50: /* 8253 */
- return m_pit8253->read(offset & 0x03);
+ return m_pit->read(offset & 0x03);
case 0x70: /* 8255 (IMS-2) */
- return m_ppi8255_2->read(offset & 0x03);
+ return m_ppi2->read(offset & 0x03);
}
break;
case 0x80: /* external interfaces */
@@ -513,7 +502,7 @@ uint8_t pmd85_state::pmd85_io_r(offs_t offset)
return 0xff;
}
-void pmd85_state::pmd85_io_w(offs_t offset, uint8_t data)
+void pmd85_state::io_w(offs_t offset, uint8_t data)
{
if (m_startup_mem_map)
{
@@ -527,7 +516,7 @@ void pmd85_state::pmd85_io_w(offs_t offset, uint8_t data)
switch (offset & 0x80)
{
case 0x80: /* Motherboard 8255 */
- m_ppi8255_0->write(offset & 0x03, data);
+ m_ppi0->write(offset & 0x03, data);
/* PMD-85.3 memory banking */
if ((offset & 0x03) == 0x03)
{
@@ -543,7 +532,7 @@ void pmd85_state::pmd85_io_w(offs_t offset, uint8_t data)
switch (offset & 0x80)
{
case 0x80: /* ROM module 8255 */
- m_ppi8255_3->write(offset & 0x03, data);
+ m_ppi3->write(offset & 0x03, data);
break;
}
}
@@ -558,14 +547,14 @@ void pmd85_state::pmd85_io_w(offs_t offset, uint8_t data)
m_uart->write(offset & 0x01, data);
break;
case 0x40: /* 8255 (GPIO/0, GPIO/0) */
- m_ppi8255_1->write(offset & 0x03, data);
+ m_ppi1->write(offset & 0x03, data);
break;
case 0x50: /* 8253 */
- m_pit8253->write(offset & 0x03, data);
+ m_pit->write(offset & 0x03, data);
logerror ("8253 writing. Address: %02x, Data: %02x\n", offset, data);
break;
case 0x70: /* 8255 (IMS-2) */
- m_ppi8255_2->write(offset & 0x03, data);
+ m_ppi2->write(offset & 0x03, data);
break;
}
break;
@@ -602,7 +591,7 @@ uint8_t pmd85_state::mato_io_r(offs_t offset)
switch (offset & 0x80)
{
case 0x80: /* Motherboard 8255 */
- return m_ppi8255_0->read(offset & 0x03);
+ return m_ppi0->read(offset & 0x03);
}
break;
}
@@ -625,7 +614,7 @@ void pmd85_state::mato_io_w(offs_t offset, uint8_t data)
switch (offset & 0x80)
{
case 0x80: /* Motherboard 8255 */
- return m_ppi8255_0->write(offset & 0x03, data);
+ return m_ppi0->write(offset & 0x03, data);
}
break;
}
@@ -636,19 +625,19 @@ void pmd85_state::device_timer(emu_timer &timer, device_timer_id id, int param,
switch (id)
{
case TIMER_CASSETTE:
- pmd85_cassette_timer_callback(ptr, param);
+ cassette_timer_callback(ptr, param);
break;
default:
throw emu_fatalerror("Unknown id in pmd85_state::device_timer");
}
}
-TIMER_CALLBACK_MEMBER(pmd85_state::pmd85_cassette_timer_callback)
+TIMER_CALLBACK_MEMBER(pmd85_state::cassette_timer_callback)
{
bool data;
bool current_level;
- if (!(m_io_dsw0->read() & 0x02)) /* V.24 / Tape Switch */
+ if (!BIT(m_io_dsw0->read(), 1)) /* V.24 / Tape Switch */
{
/* tape reading */
if (m_cassette->get_state()&CASSETTE_PLAY)
@@ -711,18 +700,8 @@ INPUT_CHANGED_MEMBER(pmd85_state::pmd85_reset)
machine().schedule_soft_reset();
}
-void pmd85_state::pmd85_common_driver_init()
+void pmd85_state::common_driver_init()
{
- static const char *const keynames[] = {
- "KEY0", "KEY1", "KEY2", "KEY3", "KEY4", "KEY5", "KEY6", "KEY7",
- "KEY8", "KEY9", "KEY10", "KEY11", "KEY12", "KEY13", "KEY14", "KEY15"
- };
-
- for ( int i = 0; i < 16; i++ )
- {
- m_io_port[i] = ioport( keynames[i] );
- }
-
m_previous_level = 0;
m_clk_level = m_clk_level_tape = 1;
m_cassette_timer = timer_alloc(TIMER_CASSETTE);
@@ -733,67 +712,52 @@ void pmd85_state::init_pmd851()
{
m_model = PMD85_1;
update_memory = &pmd85_state::pmd851_update_memory;
- pmd85_common_driver_init();
+ common_driver_init();
}
void pmd85_state::init_pmd852()
{
m_model = PMD85_2;
update_memory = &pmd85_state::pmd851_update_memory;
- pmd85_common_driver_init();
+ common_driver_init();
}
void pmd85_state::init_pmd852a()
{
m_model = PMD85_2A;
update_memory = &pmd85_state::pmd852a_update_memory;
- pmd85_common_driver_init();
+ common_driver_init();
}
void pmd85_state::init_pmd853()
{
m_model = PMD85_3;
update_memory = &pmd85_state::pmd853_update_memory;
- pmd85_common_driver_init();
+ common_driver_init();
}
void pmd85_state::init_alfa()
{
m_model = ALFA;
update_memory = &pmd85_state::alfa_update_memory;
- pmd85_common_driver_init();
+ common_driver_init();
}
void pmd85_state::init_mato()
{
m_model = MATO;
update_memory = &pmd85_state::mato_update_memory;
-
- static const char *const keynames[] = {
- "KEY0", "KEY1", "KEY2", "KEY3", "KEY4", "KEY5", "KEY6", "KEY7", "KEY8"
- };
-
- for ( int i = 0; i < 9; i++ )
- {
- m_io_port[i] = ioport( keynames[i] );
- }
- for ( int i = 9; i < 16; i++ )
- {
- m_io_port[i] = nullptr;
- }
}
void pmd85_state::init_c2717()
{
m_model = C2717;
update_memory = &pmd85_state::c2717_update_memory;
- pmd85_common_driver_init();
+ common_driver_init();
}
void pmd85_state::machine_reset()
{
- int i, j;
-
/* checking for Rom Module */
m_rom_module_present = 0;
switch (m_model)
@@ -810,13 +774,28 @@ void pmd85_state::machine_reset()
break;
}
- for (i = 0; i < 4; i++)
- for (j = 0; j < 3; j++)
+ for (u8 i = 0; i < 4; i++)
+ for (u8 j = 0; j < 3; j++)
m_ppi_port_outputs[i][j] = 0;
/* memory initialization */
- memset(m_ram->pointer(), 0, sizeof(unsigned char)*0x10000);
m_pmd853_memory_mapping = 1;
m_startup_mem_map = 1;
(this->*update_memory)();
}
+
+void pmd85_state::machine_start()
+{
+ m_leds.resolve();
+ save_item(NAME(m_txd));
+ save_item(NAME(m_rts));
+ save_item(NAME(m_rom_module_present));
+ save_item(NAME(m_ppi_port_outputs));
+ save_item(NAME(m_startup_mem_map));
+ save_item(NAME(m_pmd853_memory_mapping));
+ save_item(NAME(m_previous_level));
+ save_item(NAME(m_clk_level));
+ save_item(NAME(m_clk_level_tape));
+ save_item(NAME(m_model));
+}
+