steps towards some spectrum expansions - attempt 2 (resynced to AJRs changes) (nw) (#5417)

* steps towards some spectrum expansions - attempt 2 (nw)

* (nw)

* (nw)
This commit is contained in:
David Haywood 2019-07-31 23:08:48 +01:00 committed by ajrhacker
parent 89040a2acd
commit d193b2f3ad
13 changed files with 1253 additions and 8 deletions

View File

@ -0,0 +1,813 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<!--
Microdrive 'cartridges'
These are infinite tape loop based devices that act like discs
-->
<softwarelist name="spectrum_microdrive" description="Sinclair ZX Microdrive tapes/cartridges">
<software name="outl001" supported="no">
<description>Outlet (Issue 001)</description>
<year>1987</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 001).mdr" size="137923" crc="72140119" sha1="2289c623b2eac1247ba68106d00301be20fb3ba6"/>
</dataarea>
</part>
</software>
<software name="outl002" supported="no">
<description>Outlet (Issue 002)</description>
<year>1987</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 002).mdr" size="137923" crc="b9fc8e8c" sha1="c238cfb8a845bd8eb7d3581a3f6a944ff2107d3d"/>
</dataarea>
</part>
</software>
<software name="outl003" supported="no">
<description>Outlet (Issue 003)</description>
<year>1987</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 003).mdr" size="137923" crc="34984328" sha1="0c65873be60070c192bfed1c0b1ea4b6c8ea6649"/>
</dataarea>
</part>
</software>
<software name="outl004" supported="no">
<description>Outlet (Issue 004)</description>
<year>1987</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 004).mdr" size="137923" crc="4e794fee" sha1="a450a650b36d3c912695a6a6a0741ab815878728"/>
</dataarea>
</part>
</software>
<software name="outl005a" supported="no">
<description>Outlet (Issue 005a)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 005a).mdr" size="137923" crc="9cb77d3e" sha1="edb8bef1c3152769f6315142ff90a31ff2a76ab2"/>
</dataarea>
</part>
</software>
<software name="outl005b" supported="no">
<description>Outlet (Issue 005b)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 005b).mdr" size="137923" crc="ef14c78a" sha1="e1a70203a96cb93150ddb8b810baaefa97e1738f"/>
</dataarea>
</part>
</software>
<software name="outl006a" supported="no">
<description>Outlet (Issue 006a)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 006a).mdr" size="137923" crc="6e51cc02" sha1="5eeb2c04d50d39ec09daeaa6b55d52e84d51e95d"/>
</dataarea>
</part>
</software>
<software name="outl006b" supported="no">
<description>Outlet (Issue 006b)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 006b).mdr" size="137923" crc="6cb20433" sha1="08a92834e5fc618155bffa0588c3c3b12eee4ca2"/>
</dataarea>
</part>
</software>
<software name="outl007a" supported="no">
<description>Outlet (Issue 007a)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 007a).mdr" size="137923" crc="8e4f73aa" sha1="a41c30ae56c3b8455bd5f7d86cb47c801535dc80"/>
</dataarea>
</part>
</software>
<software name="outl007b" supported="no">
<description>Outlet (Issue 007b)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 007b).mdr" size="137923" crc="8984d42c" sha1="cd82df621b52544517d1c62547b9a4ab25652fcd"/>
</dataarea>
</part>
</software>
<software name="outl008a" supported="no">
<description>Outlet (Issue 008a)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 008a).mdr" size="137923" crc="c3520758" sha1="a09efe5ccb0796ef483f3ce43773baa2c218dd95"/>
</dataarea>
</part>
</software>
<software name="outl008b" supported="no">
<description>Outlet (Issue 008b)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 008b).mdr" size="137923" crc="8a566f1b" sha1="6191440aaca5a3b11dc791b71258135ea29efbcd"/>
</dataarea>
</part>
</software>
<software name="outl009a" supported="no">
<description>Outlet (Issue 009a)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 009a).mdr" size="137923" crc="38a69b30" sha1="410be3577aad858709afca2b97a5263dca63e56a"/>
</dataarea>
</part>
</software>
<software name="outl009b" supported="no">
<description>Outlet (Issue 009b)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 009b).mdr" size="137923" crc="1ff1a612" sha1="a3740d743fd2454bae50acf8dcadd954449464c9"/>
</dataarea>
</part>
</software>
<software name="outl009bx" supported="no">
<description>Outlet (Issue 009bx)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 009bx).mdr" size="137923" crc="e13436a4" sha1="d9d1c97a2d5ed8c210410ee1549b3fd5ff7d63f3"/>
</dataarea>
</part>
</software>
<software name="outl010a" supported="no">
<description>Outlet (Issue 010a)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 010a).mdr" size="137923" crc="3b8a14ad" sha1="c4450e00e19d4b8e17907e9aefb3dbd76c2a70d0"/>
</dataarea>
</part>
</software>
<software name="outl010b" supported="no">
<description>Outlet (Issue 010b)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 010b).mdr" size="137923" crc="6919bdd3" sha1="4c5ecf469440194fa7bc115f3df6cb95b809bab7"/>
</dataarea>
</part>
</software>
<software name="outl011a" supported="no">
<description>Outlet (Issue 011a)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 011a).mdr" size="137923" crc="ef4ce378" sha1="b750dc6f52a87028e83cbcf47b88326b6759fbff"/>
</dataarea>
</part>
</software>
<software name="outl011b" supported="no">
<description>Outlet (Issue 011b)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 011b).mdr" size="137923" crc="360ae313" sha1="174eccf7818e9b7685db6eed2167519ecc85e1eb"/>
</dataarea>
</part>
</software>
<software name="outl012a" supported="no">
<description>Outlet (Issue 012a)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 012a).mdr" size="137923" crc="4b2c60de" sha1="d5b43f69b5dac9f3aa024973bb4f9e11c5c2b6c6"/>
</dataarea>
</part>
</software>
<software name="outl012b" supported="no">
<description>Outlet (Issue 012b)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 012b).mdr" size="137923" crc="43bc3578" sha1="3bac15652dae67236b792f8ee9736cd53ef8375a"/>
</dataarea>
</part>
</software>
<software name="outl013a" supported="no">
<description>Outlet (Issue 013a)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 013a).mdr" size="137923" crc="f610e7fa" sha1="4a9063fcc8e1186d99a4edc4ea02d315e80a2246"/>
</dataarea>
</part>
</software>
<software name="outl013b" supported="no">
<description>Outlet (Issue 013b)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 013b).mdr" size="137923" crc="81355e67" sha1="4b317335fdd1649c69282d912a522df79e95056e"/>
</dataarea>
</part>
</software>
<software name="outl014a" supported="no">
<description>Outlet (Issue 014a)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 014a).mdr" size="137923" crc="94ef50bf" sha1="8df6e237eb96b0930cf63deaf04d57fcdbc6a473"/>
</dataarea>
</part>
</software>
<software name="outl014b" supported="no">
<description>Outlet (Issue 014b)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 014b).mdr" size="137923" crc="acec3cf5" sha1="13c6a6806d4982948591fd00d61ebf4217d91032"/>
</dataarea>
</part>
</software>
<software name="outl015a" supported="no">
<description>Outlet (Issue 015a)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 015a).mdr" size="137923" crc="3218da10" sha1="951a0df879706b40b96b95d0dac05e3a71800b6b"/>
</dataarea>
</part>
</software>
<software name="outl015b" supported="no">
<description>Outlet (Issue 015b)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 015b).mdr" size="137923" crc="d90a0e6b" sha1="1c8902bcb0bf7e2b3895d11a4b0f4ebe54be6a8c"/>
</dataarea>
</part>
</software>
<software name="outl016a" supported="no">
<description>Outlet (Issue 016a)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 016a).mdr" size="137923" crc="6baa42f8" sha1="d89f4ad0941d8de42dba1063961c1d01f6ca34b0"/>
</dataarea>
</part>
</software>
<software name="outl016b" supported="no">
<description>Outlet (Issue 016b)</description>
<year>1988</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 016b).mdr" size="137923" crc="8944fd90" sha1="ad91dd55fe55c979294bb15b5dbf2625f109326e"/>
</dataarea>
</part>
</software>
<software name="outl017a" supported="no">
<description>Outlet (Issue 017a)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 017a).mdr" size="137923" crc="bf35dfc4" sha1="8223f9c83961c66cd6a6411cc653cc742a9f9a77"/>
</dataarea>
</part>
</software>
<software name="outl017b" supported="no">
<description>Outlet (Issue 017b)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 017b).mdr" size="137923" crc="242b54a8" sha1="738b6fbcb0a8a85b052c26ba05f07757886fdeb5"/>
</dataarea>
</part>
</software>
<software name="outl018a" supported="no">
<description>Outlet (Issue 018a)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 018a).mdr" size="137923" crc="c380540e" sha1="6f6fe0e751edd3d7db40b11148d9d15f74052de1"/>
</dataarea>
</part>
</software>
<software name="outl018b" supported="no">
<description>Outlet (Issue 018b)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 018b).mdr" size="137923" crc="59f7446d" sha1="3bd6eaf3cb8c9b86113d74bb5004c00adee5487e"/>
</dataarea>
</part>
</software>
<software name="outl019a" supported="no">
<description>Outlet (Issue 019a)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 019a).mdr" size="137923" crc="fc09bffa" sha1="c599c203bcdfb217edcbc216ec5896aa83fdbaf8"/>
</dataarea>
</part>
</software>
<software name="outl019b" supported="no">
<description>Outlet (Issue 019b)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 019b).mdr" size="137923" crc="a1e78cf5" sha1="6a2fdad7c4e25c96383db65fb84566543c25882b"/>
</dataarea>
</part>
</software>
<software name="outl020a" supported="no">
<description>Outlet (Issue 020a)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 020a).mdr" size="137923" crc="8442b009" sha1="5d3e03b46954a0841c61965c8566554d4081802a"/>
</dataarea>
</part>
</software>
<software name="outl020b" supported="no">
<description>Outlet (Issue 020b)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 020b).mdr" size="137923" crc="36f53c1b" sha1="a906d840096a2d73107381730ab616d336c22edc"/>
</dataarea>
</part>
</software>
<software name="outl021a" supported="no">
<description>Outlet (Issue 021a)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 021a).mdr" size="137923" crc="981d48dc" sha1="a77d20df81d7ef7cb79a61a60aace21e86689b24"/>
</dataarea>
</part>
</software>
<software name="outl021b" supported="no">
<description>Outlet (Issue 021b)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 021b).mdr" size="137923" crc="33fa5641" sha1="363aaf70f39afd41149b08d15bd384e008b1ab15"/>
</dataarea>
</part>
</software>
<software name="outl022a" supported="no">
<description>Outlet (Issue 022a)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 022a).mdr" size="137923" crc="5c0b851f" sha1="8e2ef91fe01796e9bd29919d90d4f38fc902ffd4"/>
</dataarea>
</part>
</software>
<software name="outl022b" supported="no">
<description>Outlet (Issue 022b)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 022b).mdr" size="137923" crc="32583176" sha1="c3b5c10b7810f2ae76e2afab3367d62dcf04ef72"/>
</dataarea>
</part>
</software>
<software name="outl023a" supported="no">
<description>Outlet (Issue 023a)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 023a).mdr" size="137923" crc="bdf2f83b" sha1="acea2c404bf502573562bafba9d30c4999c6c2fe"/>
</dataarea>
</part>
</software>
<software name="outl023b" supported="no">
<description>Outlet (Issue 023b)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 023b).mdr" size="137923" crc="394e2629" sha1="b9447df6abe8280a0aaf48d33fbc533ec390107b"/>
</dataarea>
</part>
</software>
<software name="outl024a" supported="no">
<description>Outlet (Issue 024a)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 024a).mdr" size="137923" crc="7899613a" sha1="3a4ab59b99fe0e3ccd890cd171db98876624a82d"/>
</dataarea>
</part>
</software>
<software name="outl024b" supported="no">
<description>Outlet (Issue 024b)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 024b).mdr" size="137923" crc="38b59619" sha1="7f87b6ae4ff81c2d1a36eb0da7656769b848c279"/>
</dataarea>
</part>
</software>
<software name="outl025a" supported="no">
<description>Outlet (Issue 025a)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 025a).mdr" size="137923" crc="12b87473" sha1="084dc863c7366d4b964b5d22ca7b2ad0917af258"/>
</dataarea>
</part>
</software>
<software name="outl025b" supported="no">
<description>Outlet (Issue 025b)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 025b).mdr" size="137923" crc="f5aa4cdb" sha1="da06b7d8c2baed80eefb779eb987b71f794c08b7"/>
</dataarea>
</part>
</software>
<software name="outl026a" supported="no">
<description>Outlet (Issue 026a)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 026a).mdr" size="137923" crc="e41d4ce4" sha1="6b7eb4b3002932ea76c4d7e645f11618ef3ecf0d"/>
</dataarea>
</part>
</software>
<software name="outl026b" supported="no">
<description>Outlet (Issue 026b)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 026b).mdr" size="137923" crc="98aceddb" sha1="80b4b7bbc3e03b8fed9107fe14ad0705c0c2b9c1"/>
</dataarea>
</part>
</software>
<software name="outl027a" supported="no">
<description>Outlet (Issue 027a)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 027a).mdr" size="137923" crc="31ce0cd5" sha1="d8a49c2ad3d29d6bf664d27d5a30c71915b1933e"/>
</dataarea>
</part>
</software>
<software name="outl027b" supported="no">
<description>Outlet (Issue 027b)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 027b).mdr" size="137923" crc="fc3ea927" sha1="db1261cc0852d78c0eb28c64f287c326a0d24b9b"/>
</dataarea>
</part>
</software>
<software name="outl028a" supported="no">
<description>Outlet (Issue 028a)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 028a).mdr" size="137923" crc="9aef7d04" sha1="e65329aefb71d9cba2fbdc0760ff9b2cb08ce6fd"/>
</dataarea>
</part>
</software>
<software name="outl028b" supported="no">
<description>Outlet (Issue 028b)</description>
<year>1989</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 028b).mdr" size="137923" crc="38a6bc13" sha1="e9d3b253d0d0d1218fa065de53c73320648c32e4"/>
</dataarea>
</part>
</software>
<software name="outl029a" supported="no">
<description>Outlet (Issue 029a)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 029a).mdr" size="137923" crc="9666ac84" sha1="eaf6444419395a921fe3ac7499cf58998ec84826"/>
</dataarea>
</part>
</software>
<software name="outl029b" supported="no">
<description>Outlet (Issue 029b)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 029b).mdr" size="137923" crc="223404d6" sha1="6152aebfbc18da8a1d4b08477dd804f89d7f6d56"/>
</dataarea>
</part>
</software>
<software name="outl030a" supported="no">
<description>Outlet (Issue 030a)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 030a).mdr" size="137923" crc="c5e54d1d" sha1="a3e9c11e5d486597648b5bc70616026eb1aa6f7c"/>
</dataarea>
</part>
</software>
<software name="outl030b" supported="no">
<description>Outlet (Issue 030b)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 030b).mdr" size="137923" crc="b21985e1" sha1="437af3e2bb52c1fbe75b5bbe034342556af31647"/>
</dataarea>
</part>
</software>
<software name="outl031a" supported="no">
<description>Outlet (Issue 031a)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 031a).mdr" size="137923" crc="79eb5140" sha1="71a1ae5bd344f9426ce876ca0c7469b9568dc0b0"/>
</dataarea>
</part>
</software>
<software name="outl031b" supported="no">
<description>Outlet (Issue 031b)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 031b).mdr" size="137923" crc="36c7848f" sha1="b5642fe2a7d49b4df75e31373093976467e6fb6b"/>
</dataarea>
</part>
</software>
<software name="outl032a" supported="no">
<description>Outlet (Issue 032a)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 032a).mdr" size="137923" crc="52325161" sha1="38bdb25bb5098bc2aef8d8bd049cf7701a6f8d31"/>
</dataarea>
</part>
</software>
<software name="outl032b" supported="no">
<description>Outlet (Issue 032b)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 032b).mdr" size="137923" crc="caaae604" sha1="4f912bc7c8ab3af08dc6c19c2c8c21cccfe48c4c"/>
</dataarea>
</part>
</software>
<software name="outl033a" supported="no">
<description>Outlet (Issue 033a)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 033a).mdr" size="137923" crc="d04a0ff0" sha1="bc85e2e1a222dd7ddc12ace899f5f8c86f36c7c4"/>
</dataarea>
</part>
</software>
<software name="outl033b" supported="no">
<description>Outlet (Issue 033b)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 033b).mdr" size="137923" crc="b7d30aa1" sha1="b619ddf4e7ee2d28382e916a2c1d53333d71e833"/>
</dataarea>
</part>
</software>
<software name="outl034a" supported="no">
<description>Outlet (Issue 034a)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 034a).mdr" size="137923" crc="00f51e51" sha1="ca1066743639c547b5386073d7599e9eff137a50"/>
</dataarea>
</part>
</software>
<software name="outl034b" supported="no">
<description>Outlet (Issue 034b)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 034b).mdr" size="137923" crc="589b2366" sha1="bcfa0bd46214eb24e13b9766e956e2845f5212f2"/>
</dataarea>
</part>
</software>
<software name="outl035a" supported="no">
<description>Outlet (Issue 035a)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 035a).mdr" size="137923" crc="202a88b6" sha1="dd5664644fde9bef793a98d1444e41ce27132cd9"/>
</dataarea>
</part>
</software>
<software name="outl035b" supported="no">
<description>Outlet (Issue 035b)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 035b).mdr" size="137923" crc="fda82f9e" sha1="16ac0d2355531966f63f22100ad6e4bc9434dff7"/>
</dataarea>
</part>
</software>
<software name="outl036a" supported="no">
<description>Outlet (Issue 036a)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 036a).mdr" size="137923" crc="c0d45c9c" sha1="083a5176c4df08a7c96aaebf2d4101b8abaab123"/>
</dataarea>
</part>
</software>
<software name="outl036b" supported="no">
<description>Outlet (Issue 036b)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 036b).mdr" size="137923" crc="73988143" sha1="d90bb38e4be53b0c58bf52b5beccc1672e9303ea"/>
</dataarea>
</part>
</software>
<software name="outl037a" supported="no">
<description>Outlet (Issue 037a)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 037a).mdr" size="137923" crc="9d8eeb24" sha1="b2ce5ff001c686406900e6bb41a307fd1f3a88f5"/>
</dataarea>
</part>
</software>
<software name="outl037b" supported="no">
<description>Outlet (Issue 037b)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 037b).mdr" size="137923" crc="95616194" sha1="7a2329383b70dae10d919e2591a6499f76b31a11"/>
</dataarea>
</part>
</software>
<software name="outl038a" supported="no">
<description>Outlet (Issue 038a)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 038a).mdr" size="137923" crc="5b326911" sha1="7752e74e8b1ba2b7a88a4837899b3d758307d7dc"/>
</dataarea>
</part>
</software>
<software name="outl038b" supported="no">
<description>Outlet (Issue 038b)</description>
<year>1990</year>
<publisher>Outlet</publisher>
<part name="cass" interface="ql_cass">
<dataarea name="cass" size="137923">
<rom name="outlet (issue 038b).mdr" size="137923" crc="b4c772fa" sha1="1059d30ab0b091a806cbdee4446bcd998ba592b9"/>
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -0,0 +1,21 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<!--
Wafadrive 'cartridges'
These are infinite tape loop based devices that act like discs
-->
<softwarelist name="spectrum_wafadrive" description="Sinclair ZX Wafadrive tapes/cartridges">
<software name="spctrlwr" supported="no">
<description>Spectral Writer</description>
<year>1984</year>
<publisher>Softek International Ltd</publisher>
<part name="cass" interface="wafadrive_cart">
<dataarea name="wafa" size="77450">
<rom name="spectral writer.wdr" size="77450" crc="3faa506e" sha1="4da9ecaa055ce307ad830cdff4b293d6dca9ecca"/>
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -3483,6 +3483,8 @@ if (BUSES["SPECTRUM"]~=null) then
MAME_DIR .. "src/devices/bus/spectrum/usource.h",
MAME_DIR .. "src/devices/bus/spectrum/uspeech.cpp",
MAME_DIR .. "src/devices/bus/spectrum/uspeech.h",
MAME_DIR .. "src/devices/bus/spectrum/wafa.cpp",
MAME_DIR .. "src/devices/bus/spectrum/wafa.h",
}
end

View File

@ -61,6 +61,8 @@ files {
MAME_DIR .. "src/devices/imagedev/printer.h",
MAME_DIR .. "src/devices/imagedev/snapquik.cpp",
MAME_DIR .. "src/devices/imagedev/snapquik.h",
MAME_DIR .. "src/devices/imagedev/wafadrive.cpp",
MAME_DIR .. "src/devices/imagedev/wafadrive.h",
}

View File

@ -185,7 +185,7 @@ void spectrum_expansion_slot_device::mreq_w(offs_t offset, uint8_t data)
#include "uslot.h"
#include "usource.h"
#include "uspeech.h"
#include "wafa.h"
void spectrum_expansion_devices(device_slot_interface &device)
{
@ -207,6 +207,7 @@ void spectrum_expansion_devices(device_slot_interface &device)
device.option_add("uslot", SPECTRUM_USLOT);
device.option_add("usource", SPECTRUM_USOURCE);
device.option_add("uspeech", SPECTRUM_USPEECH);
device.option_add("wafadrive", SPECTRUM_WAFA);
}
void spec128_expansion_devices(device_slot_interface &device)
@ -223,6 +224,7 @@ void spec128_expansion_devices(device_slot_interface &device)
device.option_add("plus2test", SPECTRUM_PLUS2TEST);
device.option_add("protek", SPECTRUM_PROTEK);
device.option_add("specdrum", SPECTRUM_SPECDRUM);
device.option_add("wafadrive", SPECTRUM_WAFA);
}
void specpls3_expansion_devices(device_slot_interface &device)

View File

@ -53,6 +53,8 @@ void spectrum_intf1_device::device_add_mconfig(machine_config &config)
SPECTRUM_EXPANSION_SLOT(config, m_exp, spectrum_expansion_devices, nullptr);
m_exp->irq_handler().set(DEVICE_SELF_OWNER, FUNC(spectrum_expansion_slot_device::irq_w));
m_exp->nmi_handler().set(DEVICE_SELF_OWNER, FUNC(spectrum_expansion_slot_device::nmi_w));
SOFTWARE_LIST(config, "microdrive_list").set_original("spectrum_microdrive");
}
const tiny_rom_entry *spectrum_intf1_device::device_rom_region() const
@ -162,10 +164,45 @@ void spectrum_intf1_device::mreq_w(offs_t offset, uint8_t data)
uint8_t spectrum_intf1_device::iorq_r(offs_t offset)
{
return m_exp->iorq_r(offset);
uint8_t data = 0xff;
if ((offset & 0x18) != 0x18)
{
switch (offset & 0x18)
{
case 0x00:
logerror("%s: iorq_r (microdrive) %04x\n", machine().describe_context(), offset);
break;
case 0x08:
logerror("%s: iorq_r (control) %04x\n", machine().describe_context(), offset);
break;
case 0x10:
logerror("%s: iorq_r (network) %04x\n", machine().describe_context(), offset);
break;
}
}
data &= m_exp->iorq_r(offset);
return data;
}
void spectrum_intf1_device::iorq_w(offs_t offset, uint8_t data)
{
if ((offset & 0x18) != 0x18)
{
switch (offset & 0x18)
{
case 0x00:
logerror("%s: iorq_w (microdrive) %04x: %02x\n", machine().describe_context(), offset, data);
break;
case 0x08:
logerror("%s: iorq_w (control) %04x: %02x\n", machine().describe_context(), offset, data);
break;
case 0x10:
logerror("%s: iorq_w (network) %04x: %02x\n", machine().describe_context(), offset, data);
break;
}
}
m_exp->iorq_w(offset, data);
}

View File

@ -13,6 +13,7 @@
#include "exp.h"
#include "bus/rs232/rs232.h"
#include "imagedev/microdrv.h"
#include "softlist.h"
//**************************************************************************
// TYPE DEFINITIONS

View File

@ -0,0 +1,187 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
/**********************************************************************
Rotronics Wafadrive
Provides 2 built-in 'infinite loop' tape based drives that act like
discs (similar to Microdrive), a Centronics port, a RS232 port, and
the standard pass-thru connector.
Tapes could hold 128k, 64k or 16k (approximate sizes) with longer
seek times on the higher capacity media. Loading was significantly
slower than the Microdrive (but faster than cassette)
Media was highly unreliable and prone to snapping.
use
NEW *
to initialize
**********************************************************************/
#include "emu.h"
#include "wafa.h"
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
DEFINE_DEVICE_TYPE(SPECTRUM_WAFA, spectrum_wafa_device, "spectrum_wafa", "Rotronics Wafadrive")
//-------------------------------------------------
// MACHINE_DRIVER( wafa )
//-------------------------------------------------
ROM_START( wafadrive )
ROM_REGION( 0x2000, "rom", 0 )
ROM_LOAD("wafa108.rom", 0x0000, 0x2000, CRC(179d4600) SHA1(e979f9b1ada4a723ec69734c1848adbbf8d920c5) )
ROM_END
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
void spectrum_wafa_device::device_add_mconfig(machine_config &config)
{
WAFADRIVE_IMAGE(config, m_wafa1);
WAFADRIVE_IMAGE(config, m_wafa2);
/* passthru */
SPECTRUM_EXPANSION_SLOT(config, m_exp, spectrum_expansion_devices, nullptr);
m_exp->irq_handler().set(DEVICE_SELF_OWNER, FUNC(spectrum_expansion_slot_device::irq_w));
m_exp->nmi_handler().set(DEVICE_SELF_OWNER, FUNC(spectrum_expansion_slot_device::nmi_w));
SOFTWARE_LIST(config, "wafadrive_list").set_original("spectrum_wafadrive");
}
const tiny_rom_entry *spectrum_wafa_device::device_rom_region() const
{
return ROM_NAME( wafadrive );
}
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
// spectrum_wafa_device - constructor
//-------------------------------------------------
spectrum_wafa_device::spectrum_wafa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, SPECTRUM_WAFA, tag, owner, clock)
, device_spectrum_expansion_interface(mconfig, *this)
, m_exp(*this, "exp")
, m_rom(*this, "rom")
, m_wafa1(*this, "wafa1")
, m_wafa2(*this, "wafa2")
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void spectrum_wafa_device::device_start()
{
save_item(NAME(m_romcs));
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void spectrum_wafa_device::device_reset()
{
m_romcs = 0;
}
//**************************************************************************
// IMPLEMENTATION
//**************************************************************************
READ_LINE_MEMBER(spectrum_wafa_device::romcs)
{
return m_romcs | m_exp->romcs();
}
void spectrum_wafa_device::opcode_fetch(offs_t offset)
{
m_exp->opcode_fetch(offset);
if (!machine().side_effects_disabled())
{
switch (offset)
{
case 0x0008: case 0x1708:
{
//logerror("wafa enabled\n");
m_romcs = 1;
break;
}
}
}
}
void spectrum_wafa_device::opcode_fetch_post(offs_t offset)
{
m_exp->opcode_fetch_post(offset);
if (!machine().side_effects_disabled())
{
switch (offset)
{
// guess, manual wording indicates it gets disabled via an IN command in RAM tho, but no such thing is executed unless we disable it here first?
// it seems the port reads are instead are an alt way to reenable it
case 0x00a0:
{
//logerror("^wafa disable\n");
m_romcs = 0;
break;
}
}
}
}
uint8_t spectrum_wafa_device::mreq_r(offs_t offset)
{
uint8_t data = 0xff;
if (m_romcs)
data &= m_rom->base()[offset & 0x1fff];
if (m_exp->romcs())
data &= m_exp->mreq_r(offset);
return data;
}
void spectrum_wafa_device::mreq_w(offs_t offset, uint8_t data)
{
if (m_exp->romcs())
m_exp->mreq_w(offset, data);
}
uint8_t spectrum_wafa_device::iorq_r(offs_t offset)
{
uint8_t data = 0xff;
if (((offset & 0x00ff) != 0x00fe) && ((offset & 0x00ff) != 0x000c))
logerror("%s: iorq_r %04x\n", machine().describe_context(), offset);
if ((offset & 0x00ff) == 0x000c)
m_romcs = 1;
data &= m_exp->iorq_r(offset);
return data;
}
void spectrum_wafa_device::iorq_w(offs_t offset, uint8_t data)
{
if ((offset & 0x00fe) != 0x00fe)
logerror("%s: iorq_w %04x %02x\n", machine().describe_context(), offset, data);
m_exp->iorq_w(offset, data);
}

View File

@ -0,0 +1,64 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
/**********************************************************************
Rotronics Wafadrive
**********************************************************************/
#ifndef MAME_BUS_SPECTRUM_WAFA_H
#define MAME_BUS_SPECTRUM_WAFA_H
#include "exp.h"
#include "imagedev/wafadrive.h"
#include "softlist.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
class spectrum_wafa_device:
public device_t,
public device_spectrum_expansion_interface
{
public:
// construction/destruction
spectrum_wafa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static constexpr feature_type unemulated_features() { return feature::DISK | feature::LAN; }
protected:
virtual void device_start() override;
virtual void device_reset() override;
// optional information overrides
virtual void device_add_mconfig(machine_config &config) override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual void opcode_fetch(offs_t offset) override;
virtual void opcode_fetch_post(offs_t offset) override;
virtual uint8_t mreq_r(offs_t offset) override;
virtual void mreq_w(offs_t offset, uint8_t data) override;
virtual uint8_t iorq_r(offs_t offset) override;
virtual void iorq_w(offs_t offset, uint8_t data) override;
virtual DECLARE_READ_LINE_MEMBER(romcs) override;
private:
required_device<spectrum_expansion_slot_device> m_exp;
required_memory_region m_rom;
required_device<wafadrive_image_device> m_wafa1;
required_device<wafadrive_image_device> m_wafa2;
int m_romcs;
};
// device type definition
DECLARE_DEVICE_TYPE(SPECTRUM_WAFA, spectrum_wafa_device)
#endif /* MAME_BUS_SPECTRUM_WAFA_H */

View File

@ -2,9 +2,11 @@
// copyright-holders:Curt Coder
/*********************************************************************
microdrv.c
microdrv.cpp
MESS interface to the Sinclair Microdrive image abstraction code
MAME interface to the Sinclair Microdrive image abstraction code
(this seems to be QL format specific and hardcoded to a specific
size, Spectrum might need a different implementation?)
*********************************************************************/
@ -83,6 +85,7 @@ image_init_result microdrive_image_device::call_load()
if (length() != MDV_IMAGE_LENGTH)
return image_init_result::FAIL;
// huh
for (int i = 0; i < MDV_IMAGE_LENGTH / 2; i++)
{
fread(m_left.get(), 1);
@ -97,8 +100,11 @@ image_init_result microdrive_image_device::call_load()
void microdrive_image_device::call_unload()
{
memset(m_left.get(), 0, MDV_IMAGE_LENGTH / 2);
memset(m_right.get(), 0, MDV_IMAGE_LENGTH / 2);
if (m_left.get())
memset(m_left.get(), 0, MDV_IMAGE_LENGTH / 2);
if (m_right.get())
memset(m_right.get(), 0, MDV_IMAGE_LENGTH / 2);
}
void microdrive_image_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)

View File

@ -4,7 +4,7 @@
microdrv.h
MESS interface to the Sinclair Microdrive image abstraction code
MAME interface to the Sinclair Microdrive image abstraction code
*********************************************************************/
@ -53,7 +53,7 @@ public:
virtual bool must_be_loaded() const override { return 0; }
virtual bool is_reset_on_load() const override { return 0; }
virtual const char *image_interface() const override { return "ql_cass"; }
virtual const char *file_extensions() const override { return "mdv"; }
virtual const char *file_extensions() const override { return "mdv,mdr"; }
// specific implementation
DECLARE_WRITE_LINE_MEMBER( clk_w );

View File

@ -0,0 +1,52 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
/*********************************************************************
wafadrive.cpp
Emulation of an individual drive within the Wafadrive unit
(preliminary, no actual emulation yet)
*********************************************************************/
#include "emu.h"
#include "wafadrive.h"
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
// device type definition
DEFINE_DEVICE_TYPE(WAFADRIVE_IMAGE, wafadrive_image_device, "wafadrive_image", "Sinclair Wafadrive Image")
//-------------------------------------------------
// microdrive_image_device - constructor
//-------------------------------------------------
wafadrive_image_device::wafadrive_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, WAFADRIVE_IMAGE, tag, owner, clock),
device_image_interface(mconfig, *this)
{
}
//-------------------------------------------------
// microdrive_image_device - destructor
//-------------------------------------------------
wafadrive_image_device::~wafadrive_image_device()
{
}
void wafadrive_image_device::device_start()
{
}
image_init_result wafadrive_image_device::call_load()
{
return image_init_result::PASS;
}
void wafadrive_image_device::call_unload()
{
}

View File

@ -0,0 +1,58 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
/*********************************************************************
wafadrive.h
Emulation of an individual drive within the Wafadrive unit
(preliminary, no actual emulation yet)
*********************************************************************/
#ifndef MAME_DEVICES_IMAGEDEV_WAFADRIVE_H
#define MAME_DEVICES_IMAGEDEV_WAFADRIVE_H
#include "softlist_dev.h"
#pragma once
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
// ======================> microdrive_image_device
class wafadrive_image_device : public device_t,
public device_image_interface
{
public:
// construction/destruction
wafadrive_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
virtual ~wafadrive_image_device();
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override;
virtual const software_list_loader &get_software_list_loader() const override { return image_software_list_loader::instance(); }
virtual iodevice_t image_type() const override { return IO_MAGTAPE; } // what are these classed as? they're infinite loop tapes, in a cartridge shell that operate like discs
virtual bool is_readable() const override { return 1; }
virtual bool is_writeable() const override { return 1; }
virtual bool is_creatable() const override { return 0; } // should be (although would need a way to specify size)
virtual bool must_be_loaded() const override { return 0; }
virtual bool is_reset_on_load() const override { return 0; }
virtual const char *image_interface() const override { return "wafadrive_cart"; }
virtual const char *file_extensions() const override { return "wdr"; }
protected:
// device-level overrides
virtual void device_start() override;
private:
};
// device type definition
DECLARE_DEVICE_TYPE(WAFADRIVE_IMAGE, wafadrive_image_device)
#endif // MAME_DEVICES_IMAGEDEV_WAFADRIVE_H