smc1102: add lcd and interrupt handling

Systems promoted to working
---------------------------
K28: Talking Learning Computer (model 7-232) [hap, Sean Riddle]
This commit is contained in:
hap 2023-04-14 21:57:13 +02:00
parent 5fb68c0459
commit 0b93402dcf
21 changed files with 456 additions and 246 deletions

View File

@ -31,7 +31,7 @@ CM62215 was confirmed to be the same as CM62087.
<info name="serial" value="CM62086"/>
<part name="cart" interface="k28m2">
<dataarea name="rom" size="0x4000">
<rom name="cm62086.vsm" size="0x4000" crc="0349798b" sha1="afdad242f9c7dec0c5fd83670e3d8f1637140e76" />
<rom name="cm62086" size="0x4000" crc="0349798b" sha1="afdad242f9c7dec0c5fd83670e3d8f1637140e76" />
</dataarea>
</part>
</software>
@ -43,7 +43,7 @@ CM62215 was confirmed to be the same as CM62087.
<info name="serial" value="CM62216"/>
<part name="cart" interface="k28m2">
<dataarea name="rom" size="0x4000">
<rom name="cm62216.vsm" size="0x4000" crc="1c99306f" sha1="7bfadeec79bdc231c4e3447149e2f6542cfe077d" />
<rom name="cm62216" size="0x4000" crc="1c99306f" sha1="7bfadeec79bdc231c4e3447149e2f6542cfe077d" />
</dataarea>
</part>
</software>
@ -55,7 +55,7 @@ CM62215 was confirmed to be the same as CM62087.
<info name="serial" value="CM62215"/>
<part name="cart" interface="k28m2">
<dataarea name="rom" size="0x4000">
<rom name="cm62215.vsm" size="0x4000" crc="f2deb9a2" sha1="9fb264b869d1298ebd76811931bed83ac122fe4b" />
<rom name="cm62215" size="0x4000" crc="f2deb9a2" sha1="9fb264b869d1298ebd76811931bed83ac122fe4b" />
</dataarea>
</part>
</software>
@ -67,7 +67,7 @@ CM62215 was confirmed to be the same as CM62087.
<info name="serial" value="CM62217"/>
<part name="cart" interface="k28m2">
<dataarea name="rom" size="0x4000">
<rom name="cm62217.vsm" size="0x4000" crc="995936b2" sha1="8bd0fea4ade9972d1d6cb521f9367c971c7eead6" />
<rom name="cm62217" size="0x4000" crc="995936b2" sha1="8bd0fea4ade9972d1d6cb521f9367c971c7eead6" />
</dataarea>
</part>
</software>
@ -80,7 +80,7 @@ CM62215 was confirmed to be the same as CM62087.
<info name="serial" value="CM62218"/>
<part name="cart" interface="k28m2">
<dataarea name="rom" size="0x4000">
<rom name="cm62218.vsm" size="0x4000" crc="" sha1="" status="nodump" />
<rom name="cm62218" size="0x4000" crc="" sha1="" status="nodump" />
</dataarea>
</part>
</software>
@ -93,7 +93,7 @@ CM62215 was confirmed to be the same as CM62087.
<info name="serial" value="CM62219"/>
<part name="cart" interface="k28m2">
<dataarea name="rom" size="0x4000">
<rom name="cm62219.vsm" size="0x4000" crc="177b5cb5" sha1="2ed44fea8f931fc8aa46dafdda1c6c30b8c9dc01" />
<rom name="cm62219" size="0x4000" crc="177b5cb5" sha1="2ed44fea8f931fc8aa46dafdda1c6c30b8c9dc01" />
</dataarea>
</part>
</software>

View File

@ -12,7 +12,7 @@ license:CC0-1.0
<publisher>Texas Instruments</publisher>
<part name="cart" interface="lanteach">
<dataarea name="rom" size="0x4000">
<rom name="cd3509.vsm" offset="0x0000" size="0x4000" crc="a2877cbb" sha1="500dd1319bea28b41b6cfdaaeaecdef66c066854" />
<rom name="cd3509" offset="0x0000" size="0x4000" crc="a2877cbb" sha1="500dd1319bea28b41b6cfdaaeaecdef66c066854" />
</dataarea>
</part>
</software>

View File

@ -13,10 +13,10 @@ license:CC0-1.0
<publisher>Texas Instruments</publisher>
<part name="cart" interface="lantrans">
<dataarea name="rom" size="0x10000">
<rom name="cd2311.vsm" offset="0x0000" size="0x4000" crc="7bab7f7c" sha1="e89cfa7ae9d5ce09ff19b9474ecd70fb5982ccb9" />
<rom name="cd2312.vsm" offset="0x4000" size="0x4000" crc="6acb9c72" sha1="09817f1e0b1683d90edada38ac70ce738af6417f" />
<rom name="cd2313.vsm" offset="0x8000" size="0x4000" crc="ed979cc9" sha1="414457c6359e64c48cd1b80f47098dc2438f0b93" />
<rom name="cd2314.vsm" offset="0xc000" size="0x4000" crc="0454d5fb" sha1="347d0d5f39e2e31f93773bad9e62d121f1d40d3c" />
<rom name="cd2311" offset="0x0000" size="0x4000" crc="7bab7f7c" sha1="e89cfa7ae9d5ce09ff19b9474ecd70fb5982ccb9" />
<rom name="cd2312" offset="0x4000" size="0x4000" crc="6acb9c72" sha1="09817f1e0b1683d90edada38ac70ce738af6417f" />
<rom name="cd2313" offset="0x8000" size="0x4000" crc="ed979cc9" sha1="414457c6359e64c48cd1b80f47098dc2438f0b93" />
<rom name="cd2314" offset="0xc000" size="0x4000" crc="0454d5fb" sha1="347d0d5f39e2e31f93773bad9e62d121f1d40d3c" />
</dataarea>
</part>
</software>
@ -28,10 +28,10 @@ license:CC0-1.0
<publisher>Texas Instruments</publisher>
<part name="cart" interface="lantrans">
<dataarea name="rom" size="0x10000">
<rom name="cd2315.vsm" offset="0x0000" size="0x4000" crc="cd44490f" sha1="7b62e9fb0cc30fa81c23ef3361bb579c8794f178" />
<rom name="cd2316.vsm" offset="0x4000" size="0x4000" crc="c5464edf" sha1="0f028cb5e8445216dd45fa641e5751b08a637f5c" />
<rom name="cd2317.vsm" offset="0x8000" size="0x4000" crc="53231c0b" sha1="472117c3d0e28437fa8faa054f98088e06efc2a1" />
<rom name="cd2318.vsm" offset="0xc000" size="0x4000" crc="6c0727bc" sha1="132e39755b122f2cbec6f3e767f5d256a9c1e7ae" />
<rom name="cd2315" offset="0x0000" size="0x4000" crc="cd44490f" sha1="7b62e9fb0cc30fa81c23ef3361bb579c8794f178" />
<rom name="cd2316" offset="0x4000" size="0x4000" crc="c5464edf" sha1="0f028cb5e8445216dd45fa641e5751b08a637f5c" />
<rom name="cd2317" offset="0x8000" size="0x4000" crc="53231c0b" sha1="472117c3d0e28437fa8faa054f98088e06efc2a1" />
<rom name="cd2318" offset="0xc000" size="0x4000" crc="6c0727bc" sha1="132e39755b122f2cbec6f3e767f5d256a9c1e7ae" />
</dataarea>
</part>
</software>
@ -43,10 +43,10 @@ license:CC0-1.0
<publisher>Texas Instruments</publisher>
<part name="cart" interface="lantrans">
<dataarea name="rom" size="0x10000">
<rom name="cd2327.vsm" offset="0x0000" size="0x4000" crc="207aa27d" sha1="e5012c48b20f9b49a00f6fe8ee5719df1cbf04b4" />
<rom name="cd2328.vsm" offset="0x4000" size="0x4000" crc="768980d0" sha1="085ba873c83d25790b090a9a8797183c6664d03c" />
<rom name="cd2329.vsm" offset="0x8000" size="0x4000" crc="c8583a4b" sha1="3a4f2e42b4ab63e5bfdbd98eb40706f940491015" />
<rom name="cd2330.vsm" offset="0xc000" size="0x4000" crc="52ac969f" sha1="3a9e3db62f2ef3aedd5f4cd4bd21dccecfecf02f" />
<rom name="cd2327" offset="0x0000" size="0x4000" crc="207aa27d" sha1="e5012c48b20f9b49a00f6fe8ee5719df1cbf04b4" />
<rom name="cd2328" offset="0x4000" size="0x4000" crc="768980d0" sha1="085ba873c83d25790b090a9a8797183c6664d03c" />
<rom name="cd2329" offset="0x8000" size="0x4000" crc="c8583a4b" sha1="3a4f2e42b4ab63e5bfdbd98eb40706f940491015" />
<rom name="cd2330" offset="0xc000" size="0x4000" crc="52ac969f" sha1="3a9e3db62f2ef3aedd5f4cd4bd21dccecfecf02f" />
</dataarea>
</part>
</software>
@ -58,10 +58,10 @@ license:CC0-1.0
<publisher>Texas Instruments</publisher>
<part name="cart" interface="lantrans">
<dataarea name="rom" size="0x10000">
<rom name="cd2331.vsm" offset="0x0000" size="0x4000" crc="a1e9290b" sha1="1163f7695e0727c6058684ea7f7c52d432f3fb7c" />
<rom name="cd2332.vsm" offset="0x4000" size="0x4000" crc="b8ef4eed" sha1="0eccd98c81498caa166f7164c9563ef95412ffd7" />
<rom name="cd2333.vsm" offset="0x8000" size="0x4000" crc="c989eaf2" sha1="26e644523b318cefb0fe46c7886cd0746afa438c" />
<rom name="cd2334.vsm" offset="0xc000" size="0x4000" crc="54bbb9c8" sha1="32fb22397b2cd30490cecf3d978a24b4def389db" />
<rom name="cd2331" offset="0x0000" size="0x4000" crc="a1e9290b" sha1="1163f7695e0727c6058684ea7f7c52d432f3fb7c" />
<rom name="cd2332" offset="0x4000" size="0x4000" crc="b8ef4eed" sha1="0eccd98c81498caa166f7164c9563ef95412ffd7" />
<rom name="cd2333" offset="0x8000" size="0x4000" crc="c989eaf2" sha1="26e644523b318cefb0fe46c7886cd0746afa438c" />
<rom name="cd2334" offset="0xc000" size="0x4000" crc="54bbb9c8" sha1="32fb22397b2cd30490cecf3d978a24b4def389db" />
</dataarea>
</part>
</software>
@ -73,10 +73,10 @@ license:CC0-1.0
<publisher>Texas Instruments</publisher>
<part name="cart" interface="lantrans">
<dataarea name="rom" size="0x10000">
<rom name="cd3526.vsm" offset="0x0000" size="0x4000" crc="58fae847" sha1="ee9c0f4dbd7101a1f8f276e60e77403d01a9b36f" />
<rom name="cd3527.vsm" offset="0x4000" size="0x4000" crc="aa9f5334" sha1="a363aaf4fb9194995431a9dc1d78446ef510e7be" />
<rom name="cd3528.vsm" offset="0x8000" size="0x4000" crc="e21919ea" sha1="b0edd35d5de29ac2f61a1dc7dc0a7fab20914fbe" />
<rom name="cd3529.vsm" offset="0xc000" size="0x4000" crc="dc06f09d" sha1="946868b4748d93c918bbe33c9b1a40a723dbf410" />
<rom name="cd3526" offset="0x0000" size="0x4000" crc="58fae847" sha1="ee9c0f4dbd7101a1f8f276e60e77403d01a9b36f" />
<rom name="cd3527" offset="0x4000" size="0x4000" crc="aa9f5334" sha1="a363aaf4fb9194995431a9dc1d78446ef510e7be" />
<rom name="cd3528" offset="0x8000" size="0x4000" crc="e21919ea" sha1="b0edd35d5de29ac2f61a1dc7dc0a7fab20914fbe" />
<rom name="cd3529" offset="0xc000" size="0x4000" crc="dc06f09d" sha1="946868b4748d93c918bbe33c9b1a40a723dbf410" />
</dataarea>
</part>
</software>

View File

@ -13,7 +13,7 @@ license:CC0-1.0
<info name="serial" value="CD3534"/>
<part name="cart" interface="snread">
<dataarea name="rom" size="0x4000">
<rom name="cd3534a.vsm" size="0x4000" crc="78410e74" sha1="29bf24f7d3a49c097542befc51874bd238989a7a" />
<rom name="cd3534a" size="0x4000" crc="78410e74" sha1="29bf24f7d3a49c097542befc51874bd238989a7a" />
</dataarea>
</part>
</software>
@ -25,7 +25,7 @@ license:CC0-1.0
<info name="serial" value="CD3536"/>
<part name="cart" interface="snread">
<dataarea name="rom" size="0x4000">
<rom name="cd3536.vsm" size="0x4000" crc="9a26e0c8" sha1="a7c5bba2174ad3f53ee4f492d47205fe3d8f267d" />
<rom name="cd3536" size="0x4000" crc="9a26e0c8" sha1="a7c5bba2174ad3f53ee4f492d47205fe3d8f267d" />
</dataarea>
</part>
</software>
@ -37,7 +37,7 @@ license:CC0-1.0
<info name="serial" value="CD3538"/>
<part name="cart" interface="snread">
<dataarea name="rom" size="0x4000">
<rom name="cd3538.vsm" size="0x4000" crc="873eeca6" sha1="6673ef02635d8c418cc647840d110488c9fc76fd" />
<rom name="cd3538" size="0x4000" crc="873eeca6" sha1="6673ef02635d8c418cc647840d110488c9fc76fd" />
</dataarea>
</part>
</software>
@ -49,7 +49,7 @@ license:CC0-1.0
<info name="serial" value="CD2396"/>
<part name="cart" interface="snread">
<dataarea name="rom" size="0x4000">
<rom name="cd2396a.vsm" size="0x4000" crc="b005d92a" sha1="f1f9d83e18e77d89590e794cb157c8fe18e5aa05" />
<rom name="cd2396a" size="0x4000" crc="b005d92a" sha1="f1f9d83e18e77d89590e794cb157c8fe18e5aa05" />
</dataarea>
</part>
</software>
@ -61,7 +61,7 @@ license:CC0-1.0
<info name="serial" value="CD3540"/>
<part name="cart" interface="snread">
<dataarea name="rom" size="0x4000">
<rom name="cd3540.vsm" size="0x4000" crc="80c4da54" sha1="5663c8548484499a55052bc712440e794c8ba543" />
<rom name="cd3540" size="0x4000" crc="80c4da54" sha1="5663c8548484499a55052bc712440e794c8ba543" />
</dataarea>
</part>
</software>
@ -73,7 +73,7 @@ license:CC0-1.0
<info name="serial" value="CD3535"/>
<part name="cart" interface="snread">
<dataarea name="rom" size="0x4000">
<rom name="cd3535.vsm" size="0x4000" crc="0694525d" sha1="d7ce974ad70e05be50f8cba5aab0a0adbfb54f8b" />
<rom name="cd3535" size="0x4000" crc="0694525d" sha1="d7ce974ad70e05be50f8cba5aab0a0adbfb54f8b" />
</dataarea>
</part>
</software>
@ -85,7 +85,7 @@ license:CC0-1.0
<info name="serial" value="CD3539"/>
<part name="cart" interface="snread">
<dataarea name="rom" size="0x4000">
<rom name="cd3539.vsm" size="0x4000" crc="496ce890" sha1="d005447a74afc612809cc5de72d7cb6f711693ce" />
<rom name="cd3539" size="0x4000" crc="496ce890" sha1="d005447a74afc612809cc5de72d7cb6f711693ce" />
</dataarea>
</part>
</software>
@ -97,7 +97,7 @@ license:CC0-1.0
<info name="serial" value="CD2397"/>
<part name="cart" interface="snread">
<dataarea name="rom" size="0x4000">
<rom name="cd2397.vsm" size="0x4000" crc="e0f1e76d" sha1="1cb73cf1e754536e7c09ac23ee45db60c70acd58" />
<rom name="cd2397" size="0x4000" crc="e0f1e76d" sha1="1cb73cf1e754536e7c09ac23ee45db60c70acd58" />
</dataarea>
</part>
</software>

View File

@ -15,7 +15,7 @@ license:CC0-1.0
<info name="serial" value="CD2308"/>
<part name="cart" interface="snspell">
<dataarea name="rom" size="0x4000">
<rom name="cd2308.vsm" size="0x4000" crc="7784f917" sha1="c985d0f9b7d85f4a702e7281f3ba29c078ea38a7" />
<rom name="cd2308" size="0x4000" crc="7784f917" sha1="c985d0f9b7d85f4a702e7281f3ba29c078ea38a7" />
</dataarea>
</part>
</software>
@ -27,7 +27,7 @@ license:CC0-1.0
<info name="serial" value="CD2360"/>
<part name="cart" interface="snspell">
<dataarea name="rom" size="0x4000">
<rom name="cd2360nl.vsm" size="0x4000" crc="a8446791" sha1="cfdfdea221395717d5d5e6ee8ef559f4b63f5a71" />
<rom name="cd2360nl" size="0x4000" crc="a8446791" sha1="cfdfdea221395717d5d5e6ee8ef559f4b63f5a71" />
</dataarea>
</part>
</software>
@ -39,7 +39,7 @@ license:CC0-1.0
<info name="serial" value="CD2310"/>
<part name="cart" interface="snspell">
<dataarea name="rom" size="0x4000">
<rom name="cd2310.vsm" size="0x4000" crc="91745409" sha1="71195611efa3ae24005584fac86fecf181f02c4c" />
<rom name="cd2310" size="0x4000" crc="91745409" sha1="71195611efa3ae24005584fac86fecf181f02c4c" />
</dataarea>
</part>
</software>
@ -51,7 +51,7 @@ license:CC0-1.0
<info name="serial" value="CD2349"/>
<part name="cart" interface="snspell">
<dataarea name="rom" size="0x4000">
<rom name="cd2349a.vsm" size="0x4000" crc="4664a82e" sha1="59c2b6b245b01d767527a69e8471ef18a712e168" />
<rom name="cd2349a" size="0x4000" crc="4664a82e" sha1="59c2b6b245b01d767527a69e8471ef18a712e168" />
</dataarea>
</part>
</software>
@ -63,7 +63,7 @@ license:CC0-1.0
<info name="serial" value="CD2309"/>
<part name="cart" interface="snspell">
<dataarea name="rom" size="0x4000">
<rom name="cd2309b.vsm" size="0x4000" crc="53e3323f" sha1="4d5c67bb7a2250898c37a83a5b7a4b671eac0280" />
<rom name="cd2309b" size="0x4000" crc="53e3323f" sha1="4d5c67bb7a2250898c37a83a5b7a4b671eac0280" />
</dataarea>
</part>
</software>
@ -75,7 +75,7 @@ license:CC0-1.0
<info name="serial" value="CD2348"/>
<part name="cart" interface="snspell">
<dataarea name="rom" size="0x4000">
<rom name="cd2348.vsm" size="0x4000" crc="5ce12b32" sha1="61a590a27b66c7cd2409f39e776a9bcf0bfe4b02" />
<rom name="cd2348" size="0x4000" crc="5ce12b32" sha1="61a590a27b66c7cd2409f39e776a9bcf0bfe4b02" />
</dataarea>
</part>
</software>
@ -87,7 +87,7 @@ license:CC0-1.0
<info name="serial" value="CD2305"/>
<part name="cart" interface="snspell">
<dataarea name="rom" size="0x4000">
<rom name="cd2305n.vsm" size="0x4000" crc="98b1f65a" sha1="a418f6e328196163d311cffba1f23d0306dc3ef7" />
<rom name="cd2305n" size="0x4000" crc="98b1f65a" sha1="a418f6e328196163d311cffba1f23d0306dc3ef7" />
</dataarea>
</part>
</software>
@ -100,7 +100,7 @@ license:CC0-1.0
<info name="serial" value="CD2307"/>
<part name="cart" interface="snspell">
<dataarea name="rom" size="0x4000">
<rom name="cd2307a.vsm" size="0x4000" crc="c0467604" sha1="a75f3731f0a3285ecafa91c1ec6aa456c03946e0" />
<rom name="cd2307a" size="0x4000" crc="c0467604" sha1="a75f3731f0a3285ecafa91c1ec6aa456c03946e0" />
</dataarea>
</part>
</software>
@ -112,7 +112,7 @@ license:CC0-1.0
<info name="serial" value="CD2302"/>
<part name="cart" interface="snspell">
<dataarea name="rom" size="0x4000">
<rom name="cd2302.vsm" size="0x4000" crc="c9b82e72" sha1="f4ef0f72993c14eca62a2e3e013aeb2683fb82fc" />
<rom name="cd2302" size="0x4000" crc="c9b82e72" sha1="f4ef0f72993c14eca62a2e3e013aeb2683fb82fc" />
</dataarea>
</part>
</software>
@ -124,7 +124,7 @@ license:CC0-1.0
<info name="serial" value="CD2347"/>
<part name="cart" interface="snspell">
<dataarea name="rom" size="0x4000">
<rom name="cd2347c.vsm" size="0x4000" crc="2f2e5376" sha1="b014dde6f3fa1f9edca0b0d157ec7b760baebdef" />
<rom name="cd2347c" size="0x4000" crc="2f2e5376" sha1="b014dde6f3fa1f9edca0b0d157ec7b760baebdef" />
</dataarea>
</part>
</software>
@ -140,7 +140,7 @@ license:CC0-1.0
<info name="serial" value="CD2353"/>
<part name="cart" interface="snspell">
<dataarea name="rom" size="0x4000">
<rom name="cd2353.vsm" size="0x4000" crc="d29bd1fe" sha1="3bebf4370be3e6e5fff86d2ee27ff56f17368ba6" />
<rom name="cd2353" size="0x4000" crc="d29bd1fe" sha1="3bebf4370be3e6e5fff86d2ee27ff56f17368ba6" />
</dataarea>
</part>
</software>
@ -153,7 +153,7 @@ license:CC0-1.0
<info name="serial" value="CD62177"/>
<part name="cart" interface="snspell">
<dataarea name="rom" size="0x4000">
<rom name="cd62177a.vsm" size="0x4000" crc="2848c133" sha1="1d611f4a15d05f55f0da1773bddbfd64f2d63a49" />
<rom name="cd62177a" size="0x4000" crc="2848c133" sha1="1d611f4a15d05f55f0da1773bddbfd64f2d63a49" />
</dataarea>
</part>
</software>
@ -165,7 +165,7 @@ license:CC0-1.0
<info name="serial" value="CD62048"/>
<part name="cart" interface="snspell">
<dataarea name="rom" size="0x4000">
<rom name="cd62048.vsm" size="0x4000" crc="543ab068" sha1="479eaecaadb31bdd99e9bb0f424191ec554202bd" />
<rom name="cd62048" size="0x4000" crc="543ab068" sha1="479eaecaadb31bdd99e9bb0f424191ec554202bd" />
</dataarea>
</part>
</software>

View File

@ -13,7 +13,7 @@ license:CC0-1.0
<info name="serial" value="CD2611"/>
<part name="cart" interface="tntell">
<dataarea name="rom" size="0x1000">
<rom name="cd2611.vsm" size="0x1000" crc="80fba6f5" sha1="44145579824b9a88bdd2f57434dcce7fbe2fc1e2"/>
<rom name="cd2611" size="0x1000" crc="80fba6f5" sha1="44145579824b9a88bdd2f57434dcce7fbe2fc1e2"/>
</dataarea>
</part>
</software>
@ -25,7 +25,7 @@ license:CC0-1.0
<info name="serial" value="CD2355"/>
<part name="cart" interface="tntell">
<dataarea name="rom" size="0x4000">
<rom name="cd2355.vsm" size="0x4000" crc="1e99016a" sha1="7dfd78ec2508767fb91321642a30fd66e4faa3f5"/>
<rom name="cd2355" size="0x4000" crc="1e99016a" sha1="7dfd78ec2508767fb91321642a30fd66e4faa3f5"/>
</dataarea>
</part>
</software>
@ -37,7 +37,7 @@ license:CC0-1.0
<info name="serial" value="CD2612"/>
<part name="cart" interface="tntell">
<dataarea name="rom" size="0x1000">
<rom name="cd2612a.vsm" size="0x1000" crc="3de47ecd" sha1="6a0308ddc167d521de8f454a1a11b1361f6f06a0"/>
<rom name="cd2612a" size="0x1000" crc="3de47ecd" sha1="6a0308ddc167d521de8f454a1a11b1361f6f06a0"/>
</dataarea>
</part>
</software>
@ -49,7 +49,7 @@ license:CC0-1.0
<info name="serial" value="CD2613"/>
<part name="cart" interface="tntell">
<dataarea name="rom" size="0x1000">
<rom name="cd2613.vsm" size="0x1000" crc="4f124bbe" sha1="3be4598379ebc94b04232af47066dbfbdea42263"/>
<rom name="cd2613" size="0x1000" crc="4f124bbe" sha1="3be4598379ebc94b04232af47066dbfbdea42263"/>
</dataarea>
</part>
</software>
@ -61,7 +61,7 @@ license:CC0-1.0
<info name="serial" value="CD2361"/>
<part name="cart" interface="tntell">
<dataarea name="rom" size="0x4000">
<rom name="cd2361.vsm" size="0x4000" crc="d88fdc52" sha1="6387aeea689567df0ce6060981e64210ac5113f1"/>
<rom name="cd2361" size="0x4000" crc="d88fdc52" sha1="6387aeea689567df0ce6060981e64210ac5113f1"/>
</dataarea>
</part>
</software>
@ -73,7 +73,7 @@ license:CC0-1.0
<info name="serial" value="CD2362"/>
<part name="cart" interface="tntell">
<dataarea name="rom" size="0x4000">
<rom name="cd2362.vsm" size="0x4000" crc="326622dd" sha1="afc848fb6cd4bf82ffe6c152e75aad134dc811b6"/>
<rom name="cd2362" size="0x4000" crc="326622dd" sha1="afc848fb6cd4bf82ffe6c152e75aad134dc811b6"/>
</dataarea>
</part>
</software>
@ -85,7 +85,7 @@ license:CC0-1.0
<info name="serial" value="CD2363"/>
<part name="cart" interface="tntell">
<dataarea name="rom" size="0x4000">
<rom name="cd2363.vsm" size="0x4000" crc="f8363d2a" sha1="0450b185b121a51307637c42c0719af90c22206f"/>
<rom name="cd2363" size="0x4000" crc="f8363d2a" sha1="0450b185b121a51307637c42c0719af90c22206f"/>
</dataarea>
</part>
</software>

View File

@ -41,7 +41,7 @@ const tiny_rom_entry *msx_cart_easispeech_device::device_rom_region() const
void msx_cart_easispeech_device::device_add_mconfig(machine_config &config)
{
SP0256(config, m_speech, 3120000); // frequency unknown (R/C osc)
SP0256(config, m_speech, DERIVED_CLOCK(1, 1)); // appears to be connected to slot CLOCK pin
if (parent_slot())
m_speech->add_route(ALL_OUTPUTS, soundin(), 1.0);
}

View File

@ -18,10 +18,10 @@ SMC1112 die notes (SMC1102 is assumed to be the same):
- no output PLA
TODO:
- row(pc) order is unknown
- each opcode is 4 cycles instead of 6
- does it have CL (call latch)
- everything else
- LCD refresh timing is unknown
- add timer
- add halt opcode
*/
@ -36,7 +36,8 @@ DEFINE_DEVICE_TYPE(SMC1112, smc1112_cpu_device, "smc1112", "Suwa Seikosha SMC111
smc1102_cpu_device::smc1102_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, u8 stack_levels, int rom_width, address_map_constructor rom_map, int ram_width, address_map_constructor ram_map) :
tms1100_cpu_device(mconfig, type, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, stack_levels, rom_width, rom_map, ram_width, ram_map)
tms1100_cpu_device(mconfig, type, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, stack_levels, rom_width, rom_map, ram_width, ram_map),
m_write_segs(*this)
{ }
smc1102_cpu_device::smc1102_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
@ -59,6 +60,58 @@ std::unique_ptr<util::disasm_interface> smc1102_cpu_device::create_disassembler(
void smc1102_cpu_device::device_start()
{
tms1100_cpu_device::device_start();
m_write_segs.resolve_safe();
// zerofill
memset(m_lcd_ram, 0, sizeof(m_lcd_ram));
m_lcd_sr = 0;
m_inten = false;
m_selin = 0;
m_k_line = false;
memset(m_stack, 0, sizeof(m_stack));
m_sp = 0;
m_pb_stack = 0;
m_cb_stack = 0;
m_x_stack = 0;
m_y_stack = 0;
m_s_stack = 0;
// register for savestates
save_item(NAME(m_lcd_ram));
save_item(NAME(m_lcd_sr));
save_item(NAME(m_inten));
save_item(NAME(m_selin));
save_item(NAME(m_k_line));
save_item(NAME(m_stack));
save_item(NAME(m_sp));
save_item(NAME(m_pb_stack));
save_item(NAME(m_cb_stack));
save_item(NAME(m_x_stack));
save_item(NAME(m_y_stack));
save_item(NAME(m_s_stack));
}
void smc1102_cpu_device::device_reset()
{
tms1100_cpu_device::device_reset();
m_inten = false;
m_selin = 0;
// changed/added fixed instructions (mostly handled in op_extra)
m_fixed_decode[0x0a] = F_EXTRA;
m_fixed_decode[0x71] = F_EXTRA;
m_fixed_decode[0x74] = F_EXTRA;
m_fixed_decode[0x75] = F_EXTRA;
m_fixed_decode[0x76] = F_RETN;
m_fixed_decode[0x78] = F_EXTRA;
m_fixed_decode[0x7b] = F_EXTRA;
m_fixed_decode[0x72] = m_fixed_decode[0x73] = F_EXTRA;
m_fixed_decode[0x7c] = m_fixed_decode[0x7d] = F_EXTRA;
}
u32 smc1102_cpu_device::decode_micro(offs_t offset)
@ -100,48 +153,127 @@ u32 smc1102_cpu_device::decode_micro(offs_t offset)
return decode;
}
void smc1102_cpu_device::device_reset()
// interrupt/timer
void smc1102_cpu_device::execute_set_input(int line, int state)
{
tms1100_cpu_device::device_reset();
switch (line)
{
case SMC1102_INPUT_LINE_K:
m_k_line = bool(state);
break;
// changed/added fixed instructions (mostly handled in op_extra)
m_fixed_decode[0x0a] = F_EXTRA;
m_fixed_decode[0x71] = F_EXTRA;
m_fixed_decode[0x74] = F_EXTRA;
m_fixed_decode[0x75] = F_EXTRA;
m_fixed_decode[0x76] = F_RETN;
m_fixed_decode[0x78] = F_EXTRA;
m_fixed_decode[0x7b] = F_EXTRA;
default:
break;
}
}
m_fixed_decode[0x72] = m_fixed_decode[0x73] = F_EXTRA;
m_fixed_decode[0x7c] = m_fixed_decode[0x7d] = F_EXTRA;
void smc1102_cpu_device::read_opcode()
{
// return from interrupt
if (m_opcode == 0x76)
{
// restore registers
m_pb = m_pb_stack;
m_cb = m_cb_stack;
m_x = m_x_stack;
m_y = m_y_stack;
m_status = m_s_stack;
}
// check interrupts (blocked after INTEN)
if (m_inten && m_opcode != 0x74)
{
bool taken = (m_selin & 2) ? false : m_k_line;
if (taken)
{
interrupt();
return;
}
}
tms1100_cpu_device::read_opcode();
}
void smc1102_cpu_device::interrupt()
{
standard_irq_callback(0, m_rom_address);
// save registers
m_pb_stack = m_pb;
m_cb_stack = m_cb;
m_x_stack = m_x;
m_y_stack = m_y;
m_s_stack = m_status;
// insert CALL to 0 on page 14
m_opcode = 0xc0;
m_c4 = 0;
m_fixed = m_fixed_decode[m_opcode];
m_micro = m_micro_decode[m_opcode];
m_pb = 0xe;
m_cb = 0;
m_status = 1;
m_inten = false;
}
// opcode deviations
void smc1102_cpu_device::op_call()
{
// CALL: call subroutine
if (!m_status)
return;
m_stack[m_sp] = m_ca << 10 | m_pa << 6 | m_pc;
m_sp = (m_sp + 1) % m_stack_levels;
m_pc = m_opcode & m_pc_mask;
m_pa = m_pb;
m_ca = m_cb;
}
void smc1102_cpu_device::op_retn()
{
// RETN: return from subroutine
m_sp = (m_stack_levels + m_sp - 1) % m_stack_levels;
m_pc = m_stack[m_sp] & m_pc_mask;
m_pa = m_pb = m_stack[m_sp] >> 6 & 0xf;
m_ca = m_stack[m_sp] >> 10 & 1; // not CB
}
void smc1102_cpu_device::op_tasr()
{
// TASR: transfer A to LCD S/R
m_lcd_sr = m_lcd_sr << 4 | m_a;
}
void smc1102_cpu_device::op_tsg()
{
// TSG: transfer LCD S/R to RAM
m_lcd_ram[m_opcode & 3] = m_lcd_sr;
m_write_segs(m_opcode & 3, m_lcd_sr);
}
void smc1102_cpu_device::op_intdis()
{
// INTDIS: disable interrupt
m_inten = false;
}
void smc1102_cpu_device::op_inten()
{
// INTEN: enable interrupt after next instruction
m_inten = true;
}
void smc1102_cpu_device::op_selin()
{
// SELIN: select interrupt
m_selin = m_a & 3;
}
void smc1102_cpu_device::op_tmset()

View File

@ -13,6 +13,11 @@
#include "tms1100.h"
enum
{
SMC1102_INPUT_LINE_K = 0
};
// pinout reference (brief)
@ -40,26 +45,36 @@ class smc1102_cpu_device : public tms1100_cpu_device
public:
smc1102_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// LCD segment outputs: COM pins in offset, D pins in data
auto write_segs() { return m_write_segs.bind(); }
protected:
smc1102_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 o_pins, u8 r_pins, u8 pc_bits, u8 byte_bits, u8 x_bits, u8 stack_levels, int rom_width, address_map_constructor rom_map, int ram_width, address_map_constructor ram_map);
// overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override { }
virtual u32 execute_input_lines() const noexcept override { return 1; }
virtual void execute_set_input(int line, int state) override;
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
virtual u32 decode_micro(offs_t offset) override;
virtual void read_opcode() override;
void interrupt();
virtual void write_o_reg(u8 index) override { } // no O pins
virtual void op_extra() override;
virtual void op_retn() override;
virtual void op_call() override;
virtual void op_setr() override { tms1k_base_device::op_setr(); } // no anomaly with MSB of X register
virtual void op_rstr() override { tms1k_base_device::op_rstr(); } // "
virtual void op_extra() override;
private:
// extra opcodes
void op_halt();
void op_intdis();
void op_inten();
@ -67,6 +82,24 @@ private:
void op_tasr();
void op_tmset();
void op_tsg();
devcb_write32 m_write_segs;
// internal state
u32 m_lcd_ram[4];
u32 m_lcd_sr;
bool m_inten;
u8 m_selin;
bool m_k_line;
// stack
u16 m_stack[4];
u8 m_sp;
u8 m_pb_stack;
u8 m_cb_stack;
u8 m_x_stack;
u8 m_y_stack;
u8 m_s_stack;
};
class smc1112_cpu_device : public smc1102_cpu_device

View File

@ -80,6 +80,39 @@ std::unique_ptr<util::disasm_interface> tms0980_cpu_device::create_disassembler(
// device_reset
void tms0980_cpu_device::device_reset()
{
// common reset
tms1k_base_device::device_reset();
// pre-decode instructionset
m_fixed_decode.resize(0x200);
memset(&m_fixed_decode[0], 0, 0x200*sizeof(u64));
m_micro_decode.resize(0x200);
memset(&m_micro_decode[0], 0, 0x200*sizeof(u32));
for (u16 op = 0; op < 0x200; op++)
{
// upper half of the opcodes is always branch/call
if (op & 0x100)
m_fixed_decode[op] = (op & 0x80) ? F_CALL: F_BR;
// 6 output bits select a microinstruction index
m_micro_decode[op] = m_decode_micro.isnull() ? decode_micro(m_ipla->read(op) & 0x3f) : m_decode_micro(op);
// the other ipla terms each select a fixed instruction
m_fixed_decode[op] |= decode_fixed(op);
}
// like on TMS0970, one of the terms directly select a microinstruction index (via R4-R8),
// but it can't be pre-determined when it's active
m_micro_direct.resize(0x40);
memset(&m_micro_decode[0], 0, 0x40*sizeof(u32));
for (int op = 0; op < 0x40; op++)
m_micro_direct[op] = m_decode_micro.isnull() ? decode_micro(op) : m_decode_micro(op + 0x200);
}
u32 tms0980_cpu_device::decode_fixed(offs_t offset)
{
u32 decode = 0;
@ -114,39 +147,6 @@ u32 tms0980_cpu_device::decode_micro(offs_t offset)
return decode;
}
void tms0980_cpu_device::device_reset()
{
// common reset
tms1k_base_device::device_reset();
// pre-decode instructionset
m_fixed_decode.resize(0x200);
memset(&m_fixed_decode[0], 0, 0x200*sizeof(u64));
m_micro_decode.resize(0x200);
memset(&m_micro_decode[0], 0, 0x200*sizeof(u32));
for (u16 op = 0; op < 0x200; op++)
{
// upper half of the opcodes is always branch/call
if (op & 0x100)
m_fixed_decode[op] = (op & 0x80) ? F_CALL: F_BR;
// 6 output bits select a microinstruction index
m_micro_decode[op] = m_decode_micro.isnull() ? decode_micro(m_ipla->read(op) & 0x3f) : m_decode_micro(op);
// the other ipla terms each select a fixed instruction
m_fixed_decode[op] |= decode_fixed(op);
}
// like on TMS0970, one of the terms directly select a microinstruction index (via R4-R8),
// but it can't be pre-determined when it's active
m_micro_direct.resize(0x40);
memset(&m_micro_decode[0], 0, 0x40*sizeof(u32));
for (int op = 0; op < 0x40; op++)
m_micro_direct[op] = m_decode_micro.isnull() ? decode_micro(op) : m_decode_micro(op + 0x200);
}
// program counter/opcode decode
u32 tms0980_cpu_device::read_micro()

View File

@ -110,21 +110,6 @@ std::unique_ptr<util::disasm_interface> tms1000_cpu_device::create_disassembler(
// device_reset
u32 tms1000_cpu_device::decode_micro(offs_t offset)
{
// _____ _____ ______ _____ ______ _____ _____ _____ _____
const u32 md[16] = { M_STSL, M_AUTY, M_AUTA, M_CIN, M_C8, M_NE, M_CKN, M_15TN, M_MTN, M_NATN, M_ATN, M_MTP, M_YTP, M_CKP, M_CKM, M_STO };
u16 mask = m_mpla->read(offset);
mask ^= 0x3fc8; // invert active-negative
u32 decode = 0;
for (int bit = 0; bit < 16; bit++)
if (mask & (1 << bit))
decode |= md[bit];
return decode;
}
void tms1000_cpu_device::device_reset()
{
// common reset
@ -156,3 +141,18 @@ void tms1000_cpu_device::device_reset()
for (int i = 0x80; i < 0xc0; i++) m_fixed_decode[i] = F_BR;
for (int i = 0xc0; i < 0x100; i++) m_fixed_decode[i] = F_CALL;
}
u32 tms1000_cpu_device::decode_micro(offs_t offset)
{
// _____ _____ ______ _____ ______ _____ _____ _____ _____
const u32 md[16] = { M_STSL, M_AUTY, M_AUTA, M_CIN, M_C8, M_NE, M_CKN, M_15TN, M_MTN, M_NATN, M_ATN, M_MTP, M_YTP, M_CKP, M_CKM, M_STO };
u16 mask = m_mpla->read(offset);
mask ^= 0x3fc8; // invert active-negative
u32 decode = 0;
for (int bit = 0; bit < 16; bit++)
if (mask & (1 << bit))
decode |= md[bit];
return decode;
}

View File

@ -100,15 +100,15 @@ void tms2100_cpu_device::device_start()
m_int_pin = 0;
m_ec1_pin = 0;
m_pb_save = 0;
m_cb_save = 0;
m_a_save = 0;
m_ac2_save = 0;
m_x_save = 0;
m_y_save = 0;
m_s_save = 0;
m_sl_save = 0;
m_o_save = 0;
m_pb_stack = 0;
m_cb_stack = 0;
m_a_stack = 0;
m_ac2_stack = 0;
m_x_stack = 0;
m_y_stack = 0;
m_s_stack = 0;
m_sl_stack = 0;
m_o_stack = 0;
// register for savestates
save_item(NAME(m_ac2));
@ -120,15 +120,15 @@ void tms2100_cpu_device::device_start()
save_item(NAME(m_int_pin));
save_item(NAME(m_ec1_pin));
save_item(NAME(m_pb_save));
save_item(NAME(m_cb_save));
save_item(NAME(m_a_save));
save_item(NAME(m_ac2_save));
save_item(NAME(m_x_save));
save_item(NAME(m_y_save));
save_item(NAME(m_s_save));
save_item(NAME(m_sl_save));
save_item(NAME(m_o_save));
save_item(NAME(m_pb_stack));
save_item(NAME(m_cb_stack));
save_item(NAME(m_a_stack));
save_item(NAME(m_ac2_stack));
save_item(NAME(m_x_stack));
save_item(NAME(m_y_stack));
save_item(NAME(m_s_stack));
save_item(NAME(m_sl_stack));
save_item(NAME(m_o_stack));
state_add(++m_state_count, "AC2", m_ac2).formatstr("%01X"); // 9
}
@ -215,15 +215,15 @@ void tms2100_cpu_device::read_opcode()
m_il = 0;
// restore registers
m_pb = m_pb_save;
m_cb = m_cb_save;
m_a = m_a_save;
m_ac2 = m_ac2_save;
m_x = m_x_save;
m_y = m_y_save;
m_status = m_s_save;
m_status_latch = m_sl_save;
write_o_reg(m_o_save);
m_pb = m_pb_stack;
m_cb = m_cb_stack;
m_a = m_a_stack;
m_ac2 = m_ac2_stack;
m_x = m_x_stack;
m_y = m_y_stack;
m_status = m_s_stack;
m_status_latch = m_sl_stack;
write_o_reg(m_o_stack);
}
// interrupt pending (blocked during jump opcodes)
@ -247,17 +247,17 @@ void tms2100_cpu_device::interrupt()
standard_irq_callback(0, m_rom_address);
// save registers
m_pb_save = m_pb;
m_cb_save = m_cb;
m_a_save = m_a;
m_ac2_save = m_ac2;
m_x_save = m_x;
m_y_save = m_y;
m_s_save = m_status;
m_sl_save = m_status_latch;
m_o_save = m_o_index;
m_pb_stack = m_pb;
m_cb_stack = m_cb;
m_a_stack = m_a;
m_ac2_stack = m_ac2;
m_x_stack = m_x;
m_y_stack = m_y;
m_s_stack = m_status;
m_sl_stack = m_status_latch;
m_o_stack = m_o_index;
// insert CALL to 0
// insert CALL to 0 on page 0
m_opcode = 0xc0;
m_c4 = 0;
m_fixed = m_fixed_decode[m_opcode];

View File

@ -117,15 +117,15 @@ protected:
int m_ec1_pin; // EC1 pin state
// interrupt stack
u8 m_pb_save;
u8 m_cb_save;
u8 m_a_save;
u8 m_ac2_save;
u8 m_x_save;
u8 m_y_save;
u8 m_s_save;
u8 m_sl_save;
u8 m_o_save;
u8 m_pb_stack;
u8 m_cb_stack;
u8 m_a_stack;
u8 m_ac2_stack;
u8 m_x_stack;
u8 m_y_stack;
u8 m_s_stack;
u8 m_sl_stack;
u8 m_o_stack;
};
class tms2170_cpu_device : public tms2100_cpu_device

View File

@ -58,24 +58,6 @@ std::unique_ptr<util::disasm_interface> tp0320_cpu_device::create_disassembler()
// device_reset
u32 tp0320_cpu_device::decode_micro(offs_t offset)
{
u32 decode = 0;
offset = bitswap<6>(offset,0,1,2,3,4,5); // lines are reversed
u32 mask = m_mpla->read(offset);
mask ^= 0x0bff0; // invert active-negative
// _____ _______ ______ _____ _____ ______ _____ _____ ______ _____ _____
const u32 md[22] = { M_AUTA, M_AUTY, M_SSS, M_STO, M_YTP, M_NDMTP, M_DMTP, M_MTP, M_CKP, M_15TN, M_CKN, M_MTN, M_NATN, M_ATN, M_CME, M_CIN, M_SSE, M_CKM, M_NE, M_C8, M_SETR, M_RSTR };
for (int bit = 0; bit < 22 && bit < m_mpla->outputs(); bit++)
if (mask & (1 << bit))
decode |= md[bit];
return decode;
}
void tp0320_cpu_device::device_reset()
{
// common reset
@ -97,3 +79,21 @@ void tp0320_cpu_device::device_reset()
for (int i = 0xa0; i < 0xa4; i++) m_fixed_decode[i] = F_SBIT;
for (int i = 0xa4; i < 0xa8; i++) m_fixed_decode[i] = F_RBIT;
}
u32 tp0320_cpu_device::decode_micro(offs_t offset)
{
u32 decode = 0;
offset = bitswap<6>(offset,0,1,2,3,4,5); // lines are reversed
u32 mask = m_mpla->read(offset);
mask ^= 0x0bff0; // invert active-negative
// _____ _______ ______ _____ _____ ______ _____ _____ ______ _____ _____
const u32 md[22] = { M_AUTA, M_AUTY, M_SSS, M_STO, M_YTP, M_NDMTP, M_DMTP, M_MTP, M_CKP, M_15TN, M_CKN, M_MTN, M_NATN, M_ATN, M_CME, M_CIN, M_SSE, M_CKM, M_NE, M_C8, M_SETR, M_RSTR };
for (int bit = 0; bit < 22 && bit < m_mpla->outputs(); bit++)
if (mask & (1 << bit))
decode |= md[bit];
return decode;
}

View File

@ -4,16 +4,16 @@ license:CC0-1.0
-->
<mamelayout version="2">
<!-- define elements -->
<!-- define elements -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
<led14seg><color red="0.2" green="0.16" blue="0.16" /></led14seg>
</element>
<!-- build screen -->
<!-- build screen -->
<view name="Internal Layout">
<bounds left="0" right="80" top="0" bottom="15" />

View File

@ -215,7 +215,7 @@ ROM_START( eva24 )
ROM_LOAD( "4232345", 0x0000, 0x0400, CRC(0326c2fe) SHA1(c4c73badee68f682871b42ba4f5ca115cd68fb8a) )
ROM_REGION( 0x4000, "tms6100", 0 )
ROM_LOAD( "cm63002.vsm", 0x0000, 0x4000, CRC(cb63c807) SHA1(df7323eebcd2a8a5401c2e0addbbabb700182302) )
ROM_LOAD( "cm63002", 0x0000, 0x4000, CRC(cb63c807) SHA1(df7323eebcd2a8a5401c2e0addbbabb700182302) )
ROM_END
ROM_START( eva11 )
@ -228,7 +228,7 @@ ROM_START( eva11 )
ROM_LOAD( "tms1000_eva11_output.pla", 0, 365, CRC(f0f36970) SHA1(a6ad1f5e804ac98e5e1a1d07466b3db3a8d6c256) )
ROM_REGION( 0x1000, "tms6100", 0 )
ROM_LOAD( "cm73002.vsm", 0x0000, 0x1000, CRC(d5340bf8) SHA1(81195e8f870275d39a1abe1c8e2a6afdfdb15725) )
ROM_LOAD( "cm73002", 0x0000, 0x1000, CRC(d5340bf8) SHA1(81195e8f870275d39a1abe1c8e2a6afdfdb15725) )
ROM_END
} // anonymous namespace

View File

@ -894,8 +894,8 @@ ROM_START( snspell )
ROM_LOAD( "tms0270_tmc271h_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "tmc0351n2l.vsm", 0x0000, 0x4000, CRC(2d03b292) SHA1(a3e9a365307ae936c7472f720a7a8240741531d6) )
ROM_LOAD( "tmc0352n2l.vsm", 0x4000, 0x4000, CRC(a6d56883) SHA1(eebf9c07f2f9001679dec06c2367d4a50596d04b) )
ROM_LOAD( "tmc0351n2l", 0x0000, 0x4000, CRC(2d03b292) SHA1(a3e9a365307ae936c7472f720a7a8240741531d6) )
ROM_LOAD( "tmc0352n2l", 0x4000, 0x4000, CRC(a6d56883) SHA1(eebf9c07f2f9001679dec06c2367d4a50596d04b) )
ROM_END
ROM_START( snspellp )
@ -910,8 +910,8 @@ ROM_START( snspellp )
ROM_LOAD( "tms0270_tmc271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) // using the one from 1st version
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "tmc0351nl.vsm", 0x0000, 0x4000, CRC(beea3373) SHA1(8b0f7586d2f12c3d4a885fdb528cf23feffa1a3b) ) // using the one from 1st version
ROM_LOAD( "tmc0352nl.vsm", 0x4000, 0x4000, CRC(d51f0587) SHA1(ddaa484be1bba5fef46b481cafae517e4acaa8ed) ) // "
ROM_LOAD( "tmc0351nl", 0x0000, 0x4000, CRC(beea3373) SHA1(8b0f7586d2f12c3d4a885fdb528cf23feffa1a3b) ) // using the one from 1st version
ROM_LOAD( "tmc0352nl", 0x4000, 0x4000, CRC(d51f0587) SHA1(ddaa484be1bba5fef46b481cafae517e4acaa8ed) ) // "
ROM_END
ROM_START( snspellua )
@ -926,8 +926,8 @@ ROM_START( snspellua )
ROM_LOAD( "tms0270_tmc271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "tmc0351nl.vsm", 0x0000, 0x4000, CRC(beea3373) SHA1(8b0f7586d2f12c3d4a885fdb528cf23feffa1a3b) )
ROM_LOAD( "tmc0352nl.vsm", 0x4000, 0x4000, CRC(d51f0587) SHA1(ddaa484be1bba5fef46b481cafae517e4acaa8ed) )
ROM_LOAD( "tmc0351nl", 0x0000, 0x4000, CRC(beea3373) SHA1(8b0f7586d2f12c3d4a885fdb528cf23feffa1a3b) )
ROM_LOAD( "tmc0352nl", 0x4000, 0x4000, CRC(d51f0587) SHA1(ddaa484be1bba5fef46b481cafae517e4acaa8ed) )
ROM_END
ROM_START( snspellub )
@ -942,7 +942,7 @@ ROM_START( snspellub )
ROM_LOAD( "tms0270_tmc271h_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2350a.vsm", 0x0000, 0x4000, CRC(2adda742) SHA1(3f868ed8284b723c815a30343057e03467c043b5) )
ROM_LOAD( "cd2350a", 0x0000, 0x4000, CRC(2adda742) SHA1(3f868ed8284b723c815a30343057e03467c043b5) )
ROM_END
ROM_START( snspelluk )
@ -957,8 +957,8 @@ ROM_START( snspelluk )
ROM_LOAD( "tms0270_tmc271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2303.vsm", 0x0000, 0x4000, CRC(0fae755c) SHA1(b68c3120a63a61db474feb5d71a6e5dd67910d80) )
ROM_LOAD( "cd2304.vsm", 0x4000, 0x4000, CRC(e2a270eb) SHA1(c13c95ad15f1923a4841f66504e0f22646e71d99) )
ROM_LOAD( "cd2303", 0x0000, 0x4000, CRC(0fae755c) SHA1(b68c3120a63a61db474feb5d71a6e5dd67910d80) )
ROM_LOAD( "cd2304", 0x4000, 0x4000, CRC(e2a270eb) SHA1(c13c95ad15f1923a4841f66504e0f22646e71d99) )
ROM_END
ROM_START( snspelluka )
@ -973,7 +973,7 @@ ROM_START( snspelluka )
ROM_LOAD( "tms0270_tmc271h_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd62175.vsm", 0x0000, 0x4000, CRC(6e1063d4) SHA1(b5c66c51148c5921ecb8ffccd7a460ae639cdb68) )
ROM_LOAD( "cd62175", 0x0000, 0x4000, CRC(6e1063d4) SHA1(b5c66c51148c5921ecb8ffccd7a460ae639cdb68) )
ROM_END
ROM_START( snspelljp )
@ -988,8 +988,8 @@ ROM_START( snspelljp )
ROM_LOAD( "tms0270_tmc271h_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2321.vsm", 0x0000, 0x4000, CRC(ac010cce) SHA1(c0200d857b62be696248ac2d684a390c66ab0c31) )
ROM_LOAD( "cd2322.vsm", 0x4000, 0x4000, CRC(b6f4bba4) SHA1(65d686a9385b5ef3f080a5f47c6b2418bb9455b0) )
ROM_LOAD( "cd2321", 0x0000, 0x4000, CRC(ac010cce) SHA1(c0200d857b62be696248ac2d684a390c66ab0c31) )
ROM_LOAD( "cd2322", 0x4000, 0x4000, CRC(b6f4bba4) SHA1(65d686a9385b5ef3f080a5f47c6b2418bb9455b0) )
ROM_END
ROM_START( snspellsp )
@ -1004,8 +1004,8 @@ ROM_START( snspellsp )
ROM_LOAD( "tms0270_cd2701_output.pla", 0, 1246, CRC(f26980bd) SHA1(8d0c98fe5240541cb53c1e1d14c2a4560e7a7f32) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2319.vsm", 0x0000, 0x4000, CRC(f293ac2f) SHA1(6f941743efcc2f05e514ce07167c094c554dca5d) )
ROM_LOAD( "cd2320.vsm", 0x4000, 0x4000, CRC(16b68766) SHA1(a9ea335b4487cc333268bfd2e71428258968461d) )
ROM_LOAD( "cd2319", 0x0000, 0x4000, CRC(f293ac2f) SHA1(6f941743efcc2f05e514ce07167c094c554dca5d) )
ROM_LOAD( "cd2320", 0x4000, 0x4000, CRC(16b68766) SHA1(a9ea335b4487cc333268bfd2e71428258968461d) )
ROM_END
ROM_START( snspellfr )
@ -1020,7 +1020,7 @@ ROM_START( snspellfr )
ROM_LOAD( "tms0270_cd2702_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2352.vsm", 0x0000, 0x4000, CRC(181a239e) SHA1(e16043766c385e152b7005c1c010be4c5fccdd9b) )
ROM_LOAD( "cd2352", 0x0000, 0x4000, CRC(181a239e) SHA1(e16043766c385e152b7005c1c010be4c5fccdd9b) )
ROM_END
ROM_START( snspellit )
@ -1035,7 +1035,7 @@ ROM_START( snspellit )
ROM_LOAD( "tms0270_cd2702_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd62190.vsm", 0x0000, 0x4000, CRC(63832002) SHA1(ea8124b2bf0f5908c5f1a56d60063f2468a10143) )
ROM_LOAD( "cd62190", 0x0000, 0x4000, CRC(63832002) SHA1(ea8124b2bf0f5908c5f1a56d60063f2468a10143) )
ROM_END
@ -1051,8 +1051,8 @@ ROM_START( snmath )
ROM_LOAD( "tms0270_cd2704_output.pla", 0, 1246, CRC(5a2eb949) SHA1(8bb161d4884f229af65f8d155e59b9d8966fe3d1) )
ROM_REGION( 0x8000, "tms6100", ROMREGION_ERASEFF )
ROM_LOAD( "cd2392.vsm", 0x0000, 0x4000, CRC(4ed2e920) SHA1(8896f29e25126c1e4d9a47c9a325b35dddecc61f) )
ROM_LOAD( "cd2393.vsm", 0x4000, 0x4000, CRC(571d5b5a) SHA1(83284755d9b77267d320b5b87fdc39f352433715) )
ROM_LOAD( "cd2392", 0x0000, 0x4000, CRC(4ed2e920) SHA1(8896f29e25126c1e4d9a47c9a325b35dddecc61f) )
ROM_LOAD( "cd2393", 0x4000, 0x4000, CRC(571d5b5a) SHA1(83284755d9b77267d320b5b87fdc39f352433715) )
ROM_END
ROM_START( snmatha )
@ -1067,8 +1067,8 @@ ROM_START( snmatha )
ROM_LOAD( "tms0270_cd2708_output.pla", 0, 1246, CRC(1abad753) SHA1(53d20b519ed73ce248368047a056836afbe3cd46) )
ROM_REGION( 0x8000, "tms6100", ROMREGION_ERASEFF )
ROM_LOAD( "cd2381.vsm", 0x0000, 0x4000, CRC(f048dc81) SHA1(e97667d1002de40ab3d702c63b82311480032e0f) )
ROM_LOAD( "cd2614.vsm", 0x4000, 0x1000, CRC(11989074) SHA1(0e9cf906de9bcdf4acb425535dc442846fc48fa2) )
ROM_LOAD( "cd2381", 0x0000, 0x4000, CRC(f048dc81) SHA1(e97667d1002de40ab3d702c63b82311480032e0f) )
ROM_LOAD( "cd2614", 0x4000, 0x1000, CRC(11989074) SHA1(0e9cf906de9bcdf4acb425535dc442846fc48fa2) )
ROM_RELOAD( 0x5000, 0x1000 )
ROM_RELOAD( 0x6000, 0x1000 )
ROM_RELOAD( 0x7000, 0x1000 )
@ -1088,8 +1088,8 @@ ROM_START( snmathp )
ROM_LOAD( "tms0270_cd2704_output.pla", 0, 1246, CRC(5a2eb949) SHA1(8bb161d4884f229af65f8d155e59b9d8966fe3d1) ) // using the one from 1st version
ROM_REGION( 0x8000, "tms6100", ROMREGION_ERASEFF )
ROM_LOAD( "cd2392.vsm", 0x0000, 0x4000, CRC(4ed2e920) SHA1(8896f29e25126c1e4d9a47c9a325b35dddecc61f) ) // using the one from 1st version
ROM_LOAD( "cd2393.vsm", 0x4000, 0x4000, CRC(571d5b5a) SHA1(83284755d9b77267d320b5b87fdc39f352433715) ) // "
ROM_LOAD( "cd2392", 0x0000, 0x4000, CRC(4ed2e920) SHA1(8896f29e25126c1e4d9a47c9a325b35dddecc61f) ) // using the one from 1st version
ROM_LOAD( "cd2393", 0x4000, 0x4000, CRC(571d5b5a) SHA1(83284755d9b77267d320b5b87fdc39f352433715) ) // "
ROM_END
@ -1105,8 +1105,8 @@ ROM_START( snread )
ROM_LOAD( "tms0270_cd2705_output.pla", 0, 1246, CRC(bf859848) SHA1(66b297fbf534968fa6db7413b99ef0e81cc35ddc) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2394a.vsm", 0x0000, 0x4000, CRC(cbb0e2b1) SHA1(5e322c683baf806523de171310258ae371671327) )
ROM_LOAD( "cd2395a.vsm", 0x4000, 0x4000, CRC(3d519504) SHA1(76b19ba5a9a3486005e09c98e8a6abc8b88288dd) )
ROM_LOAD( "cd2394a", 0x0000, 0x4000, CRC(cbb0e2b1) SHA1(5e322c683baf806523de171310258ae371671327) )
ROM_LOAD( "cd2395a", 0x4000, 0x4000, CRC(3d519504) SHA1(76b19ba5a9a3486005e09c98e8a6abc8b88288dd) )
ROM_END

View File

@ -755,7 +755,7 @@ ROM_START( snspellc )
ROM_LOAD( "tms1100_cd8011_output.pla", 0, 365, CRC(b400dd75) SHA1(5a4b5d4532a8932cf4b469ddb71ad6b3b9911672) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2354a.vsm", 0x0000, 0x4000, CRC(548a940c) SHA1(c37e620c4c70a05cbaaff9a166c6da2e2420196f) )
ROM_LOAD( "cd2354a", 0x0000, 0x4000, CRC(548a940c) SHA1(c37e620c4c70a05cbaaff9a166c6da2e2420196f) )
ROM_END
ROM_START( snspellca )
@ -768,7 +768,7 @@ ROM_START( snspellca )
ROM_LOAD( "tms1100_cd8011_output.pla", 0, 365, CRC(b400dd75) SHA1(5a4b5d4532a8932cf4b469ddb71ad6b3b9911672) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2354.vsm", 0x0000, 0x4000, CRC(3af3232e) SHA1(f89d90dca209ee612634d664d5d4562f1d1786cf) )
ROM_LOAD( "cd2354", 0x0000, 0x4000, CRC(3af3232e) SHA1(f89d90dca209ee612634d664d5d4562f1d1786cf) )
ROM_END
ROM_START( snwrite )
@ -781,7 +781,7 @@ ROM_START( snwrite )
ROM_LOAD( "tms1100_cd8011_output.pla", 0, 365, CRC(b400dd75) SHA1(5a4b5d4532a8932cf4b469ddb71ad6b3b9911672) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd62174a.vsm", 0x0000, 0x4000, CRC(b7bbaaf3) SHA1(9eb949fcf522982f9c3c4649f207703b746b90ef) )
ROM_LOAD( "cd62174a", 0x0000, 0x4000, CRC(b7bbaaf3) SHA1(9eb949fcf522982f9c3c4649f207703b746b90ef) )
ROM_END
@ -795,7 +795,7 @@ ROM_START( mathsmag )
ROM_LOAD( "tms1100_mathsmag_output.pla", 0, 365, CRC(d21f19a2) SHA1(9781da173d473c255fa5cc5fcc8ae09c097c682d) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge?
ROM_LOAD( "cd62173a.vsm", 0x0000, 0x4000, CRC(a7230863) SHA1(8a6d1742fb94555f3b3fe37554a7c46fe4213116) )
ROM_LOAD( "cd62173a", 0x0000, 0x4000, CRC(a7230863) SHA1(8a6d1742fb94555f3b3fe37554a7c46fe4213116) )
ROM_END
@ -809,7 +809,7 @@ ROM_START( tntell )
ROM_LOAD( "tms1100_cd8012_output.pla", 0, 365, CRC(5ada9306) SHA1(a4140118dd535af45a691832530d55cd86a23510) )
ROM_REGION( 0x8000, "tms6100", ROMREGION_ERASEFF ) // 4000-7fff = space reserved for cartridge
ROM_LOAD( "cd2610.vsm", 0x0000, 0x1000, CRC(6db34e5a) SHA1(10fa5db20fdcba68034058e7194f35c90b9844e6) )
ROM_LOAD( "cd2610", 0x0000, 0x1000, CRC(6db34e5a) SHA1(10fa5db20fdcba68034058e7194f35c90b9844e6) )
ROM_END
ROM_START( tntelluk )
@ -822,7 +822,7 @@ ROM_START( tntelluk )
ROM_LOAD( "tms1100_cd8012_output.pla", 0, 365, CRC(5ada9306) SHA1(a4140118dd535af45a691832530d55cd86a23510) )
ROM_REGION( 0x8000, "tms6100", ROMREGION_ERASEFF ) // 4000-7fff = space reserved for cartridge
ROM_LOAD( "cd62170.vsm", 0x0000, 0x4000, CRC(6dc9d072) SHA1(9d2c9ff57c4f8fe69768666ffa41fcac649279ef) )
ROM_LOAD( "cd62170", 0x0000, 0x4000, CRC(6dc9d072) SHA1(9d2c9ff57c4f8fe69768666ffa41fcac649279ef) )
ROM_END
ROM_START( tntellfr )
@ -835,7 +835,7 @@ ROM_START( tntellfr )
ROM_LOAD( "tms1100_cd8012_output.pla", 0, 365, CRC(5ada9306) SHA1(a4140118dd535af45a691832530d55cd86a23510) )
ROM_REGION( 0x8000, "tms6100", ROMREGION_ERASEFF ) // 4000-7fff = space reserved for cartridge
ROM_LOAD( "cd62171.vsm", 0x0000, 0x4000, CRC(cc26f7d1) SHA1(2b03e37b3bf3cbeca36980acfc45246dac706b83) )
ROM_LOAD( "cd62171", 0x0000, 0x4000, CRC(cc26f7d1) SHA1(2b03e37b3bf3cbeca36980acfc45246dac706b83) )
ROM_END
ROM_START( tntellp )
@ -848,7 +848,7 @@ ROM_START( tntellp )
ROM_LOAD( "tms1100_us4403965_output.pla", 0, 365, CRC(66cfb3c3) SHA1(80a05e5d729518e1f35d8f26438f56e80ffbd003) )
ROM_REGION( 0x8000, "tms6100", ROMREGION_ERASEFF ) // 4000-7fff = space reserved for cartridge
ROM_LOAD( "cd2610.vsm", 0x0000, 0x1000, CRC(6db34e5a) SHA1(10fa5db20fdcba68034058e7194f35c90b9844e6) )
ROM_LOAD( "cd2610", 0x0000, 0x1000, CRC(6db34e5a) SHA1(10fa5db20fdcba68034058e7194f35c90b9844e6) )
ROM_END
@ -862,7 +862,7 @@ ROM_START( vocaid )
ROM_LOAD( "tms1100_cd8012_output.pla", 0, 365, CRC(5ada9306) SHA1(a4140118dd535af45a691832530d55cd86a23510) )
ROM_REGION( 0x8000, "tms6100", ROMREGION_ERASEFF ) // same hw as tntell, but no external slot
ROM_LOAD( "cd2357.vsm", 0x0000, 0x4000, CRC(19c251fa) SHA1(8f8163069f32413379e7e1681ce6a4d0819d4ebc) )
ROM_LOAD( "cd2357", 0x0000, 0x4000, CRC(19c251fa) SHA1(8f8163069f32413379e7e1681ce6a4d0819d4ebc) )
ROM_END
} // anonymous namespace

View File

@ -492,7 +492,7 @@ ROM_START( spellb )
ROM_LOAD( "tms0270_spellb_output.pla", 0, 1246, CRC(b95e35e6) SHA1(430917486856c9e6c28af10ff3758242048096c4) )
ROM_REGION( 0x1000, "tms6100", 0 )
ROM_LOAD( "cd2602.vsm", 0x0000, 0x1000, CRC(dd1fff8c) SHA1(f1760b29aa50fc96a1538db814cc73289654ac25) )
ROM_LOAD( "cd2602", 0x0000, 0x1000, CRC(dd1fff8c) SHA1(f1760b29aa50fc96a1538db814cc73289654ac25) )
ROM_END
ROM_START( spellabc )
@ -507,7 +507,7 @@ ROM_START( spellabc )
ROM_LOAD( "tms0270_spellb_output.pla", 0, 1246, CRC(b95e35e6) SHA1(430917486856c9e6c28af10ff3758242048096c4) )
ROM_REGION( 0x1000, "tms6100", 0 )
ROM_LOAD( "cd2607.vsm", 0x0000, 0x1000, CRC(875090c0) SHA1(73b87fff64054f6ab3b7e69d89585582145dbaa7) )
ROM_LOAD( "cd2607", 0x0000, 0x1000, CRC(875090c0) SHA1(73b87fff64054f6ab3b7e69d89585582145dbaa7) )
ROM_END
ROM_START( spellba )
@ -545,7 +545,7 @@ ROM_START( mrchalgr )
ROM_LOAD( "tms0270_mrchalgr_output.pla", 0, 1246, CRC(4785289c) SHA1(60567af0ea120872a4ccf3128e1365fe84722aa8) )
ROM_REGION( 0x1000, "tms6100", 0 )
ROM_LOAD( "cd2601.vsm", 0x0000, 0x1000, CRC(a9fbe7e9) SHA1(9d480cb30313b8cbce2d048140c1e5e6c5b92452) )
ROM_LOAD( "cd2601", 0x0000, 0x1000, CRC(a9fbe7e9) SHA1(9d480cb30313b8cbce2d048140c1e5e6c5b92452) )
ROM_END
ROM_START( letterlf )
@ -560,7 +560,7 @@ ROM_START( letterlf )
ROM_LOAD( "tms0270_mrchalgr_output.pla", 0, 1246, CRC(4785289c) SHA1(60567af0ea120872a4ccf3128e1365fe84722aa8) )
ROM_REGION( 0x1000, "tms6100", 0 )
ROM_LOAD( "cd2603.vsm", 0x0000, 0x1000, CRC(70ac954b) SHA1(5593a5844063acdf399600e3e842f0fbe712ba69) )
ROM_LOAD( "cd2603", 0x0000, 0x1000, CRC(70ac954b) SHA1(5593a5844063acdf399600e3e842f0fbe712ba69) )
ROM_END
ROM_START( letterlg )
@ -575,7 +575,7 @@ ROM_START( letterlg )
ROM_LOAD( "tms0270_mrchalgr_output.pla", 0, 1246, CRC(4785289c) SHA1(60567af0ea120872a4ccf3128e1365fe84722aa8) )
ROM_REGION( 0x1000, "tms6100", 0 )
ROM_LOAD( "cd2604.vsm", 0x0000, 0x1000, CRC(cdb6f039) SHA1(56f512720c5e80cd74b65e31d5a19bf1260017fb) )
ROM_LOAD( "cd2604", 0x0000, 0x1000, CRC(cdb6f039) SHA1(56f512720c5e80cd74b65e31d5a19bf1260017fb) )
ROM_END
} // anonymous namespace

View File

@ -263,7 +263,7 @@ static INPUT_PORTS_START( k28 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('W')
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5")
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".")
PORT_START("IN.5")
@ -330,8 +330,8 @@ ROM_START( k28 )
ROM_LOAD( "p8021", 0x0000, 0x0400, CRC(15536d20) SHA1(fac98ce652340ffb2d00952697c3a9ce75393fa4) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff? = space reserved for cartridge
ROM_LOAD( "cm62050.vsm", 0x0000, 0x4000, CRC(6afb8645) SHA1(e22435568ed11c6516a3b4008131f99cd4e47aa9) )
ROM_LOAD( "cm62051.vsm", 0x4000, 0x4000, CRC(0fa61baa) SHA1(831be669423ba60c7f85a896b4b09a1295478bd9) )
ROM_LOAD( "cm62050", 0x0000, 0x4000, CRC(6afb8645) SHA1(e22435568ed11c6516a3b4008131f99cd4e47aa9) )
ROM_LOAD( "cm62051", 0x4000, 0x4000, CRC(0fa61baa) SHA1(831be669423ba60c7f85a896b4b09a1295478bd9) )
ROM_END
} // anonymous namespace

View File

@ -4,21 +4,21 @@
/*******************************************************************************
Tiger Electronics K28 (model 7-232) Sold in Hong Kong, distributed in US as:
- Coleco: Talking Teacher
- Coleco: Talking Teacher (model 8100)
- Sears: Talkatron: Learning Computer
1981 K28 models 7-230 and 7-231 are on different hardware, showing a different
keyboard, VFD, and use the SC-01 speech chip. --> driver k28.cpp
Hardware notes:
- PCB label: 201223A (main), REV0 ET828D (LCD)
- MCU: TMS1400 MP7324 (die label: TMS1400, MP7324, 28L 01D D000 R100)
- TMS51xx: TMS5110A
- TMS51xx: TMS5110ANL
- VSM: 16KB CM62084
- LCD: SMC1112 MCU under epoxy (die label: SMC1112 D2N0), 8*14-seg display
- module slot (not compatible with the 1981 version(s))
TODO:
- emulate LCD
- dump/add module #5
*******************************************************************************/
@ -51,7 +51,8 @@ public:
m_tms5100(*this, "tms5100"),
m_tms6100(*this, "tms6100"),
m_cart(*this, "cartslot"),
m_inputs(*this, "IN.%u", 0)
m_inputs(*this, "IN.%u", 0),
m_digits(*this, "digit%u", 0U)
{ }
void k28m2(machine_config &config);
@ -70,25 +71,33 @@ private:
required_device<tms6100_device> m_tms6100;
optional_device<generic_slot_device> m_cart;
required_ioport_array<9> m_inputs;
output_finder<8> m_digits;
void power_off();
u8 read_k();
void write_o(u16 data);
void write_r(u32 data);
u8 sub_read_k();
void write_segs(offs_t offset, u32 data);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
bool m_power_on = false;
u16 m_inp_mux = 0;
u32 m_r = 0;
u32 m_digit_data[4] = { };
};
void k28m2_state::machine_start()
{
m_digits.resolve();
// register for savestates
save_item(NAME(m_power_on));
save_item(NAME(m_inp_mux));
save_item(NAME(m_r));
save_item(NAME(m_digit_data));
}
@ -101,6 +110,7 @@ void k28m2_state::machine_reset()
{
m_power_on = true;
m_maincpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
m_subcpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
}
INPUT_CHANGED_MEMBER(k28m2_state::power_on)
@ -113,6 +123,11 @@ void k28m2_state::power_off()
{
m_power_on = false;
m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
m_subcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
// clear display
for (int i = 0; i < 8; i++)
m_digits[i] = 0;
}
@ -128,7 +143,7 @@ DEVICE_IMAGE_LOAD_MEMBER(k28m2_state::cart_load)
if (size > 0x4000)
return std::make_pair(image_error::INVALIDLENGTH, "Invalid image file size (must be no more than 16K)");
u8 *const base = memregion("tms6100")->base() + 0x8000;
u8 *const base = memregion("tms6100")->base() + 0x4000;
m_cart->common_load_rom(base, size, "rom");
return std::make_pair(std::error_condition(), std::string());
@ -140,6 +155,8 @@ DEVICE_IMAGE_LOAD_MEMBER(k28m2_state::cart_load)
I/O
*******************************************************************************/
// maincpu side
void k28m2_state::write_r(u32 data)
{
// R1234: TMS5100 CTL8421
@ -152,8 +169,8 @@ void k28m2_state::write_r(u32 data)
// R5: input mux high bit
m_inp_mux = (m_inp_mux & 0xff) | (data << 3 & 0x100);
// R7-R10: LCD data
//TODO..
// R7-R10: subcpu K interrupt
m_subcpu->set_input_line(SMC1102_INPUT_LINE_K, (data & 0x780) ? ASSERT_LINE : CLEAR_LINE);
// R6: power-off request, on falling edge
if (~data & m_r & 0x40)
@ -182,6 +199,30 @@ u8 k28m2_state::read_k()
}
// subcpu side
void k28m2_state::write_segs(offs_t offset, u32 data)
{
m_digit_data[offset & 3] = data;
for (int d = 0; d < 8; d++)
{
// 4 segments per common
u16 segs = 0;
for (int i = 0; i < 4; i++)
segs = segs << 4 | (m_digit_data[i] >> (d * 4) & 0xf);
m_digits[d] = bitswap<14>(segs,6,10,13,1,5,9,11,8,12,4,2,7,15,14);
}
}
u8 k28m2_state::sub_read_k()
{
// K: maincpu R7-R10
return m_r >> 7 & 0xf;
}
/*******************************************************************************
Input Ports
@ -260,6 +301,10 @@ void k28m2_state::k28m2(machine_config &config)
m_maincpu->write_r().set(FUNC(k28m2_state::write_r));
SMC1112(config, m_subcpu, 32.768_kHz_XTAL);
m_subcpu->read_k().set(FUNC(k28m2_state::sub_read_k));
m_subcpu->write_segs().set(FUNC(k28m2_state::write_segs));
config.set_perfect_quantum(m_subcpu);
config.set_default_layout(layout_k28m2);
@ -290,7 +335,7 @@ void k28m2_state::k28m2(machine_config &config)
ROM_START( k28m2 )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "mp7324", 0x0000, 0x1000, CRC(08d15ab6) SHA1(5b0f6c53e6732a362c4bb25d966d4072fdd33db8) )
ROM_LOAD( "mp7324", 0x0000, 0x1000, CRC(8d304cf2) SHA1(d649b6477ea8634b3a3ba34dde7e5e913855801f) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
@ -298,10 +343,10 @@ ROM_START( k28m2 )
ROM_LOAD( "tms1400_k28m2_output.pla", 0, 557, CRC(3a5c7005) SHA1(3fe5819c138a90e7fc12817415f2622ca81b40b2) )
ROM_REGION( 0x0800, "subcpu", 0 )
ROM_LOAD( "smc1112_d2n0", 0x0000, 0x0800, NO_DUMP )
ROM_LOAD( "smc1112_d2n0", 0x0000, 0x0800, CRC(e985fd67) SHA1(a0b0280920bf0ac02a1aaf02d534dddbae829433) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff? = space reserved for cartridge
ROM_LOAD( "cm62084.vsm", 0x0000, 0x4000, CRC(cd1376f7) SHA1(96fa484c392c451599bc083b8376cad9c998df7d) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 4000-7fff = space reserved for cartridge
ROM_LOAD( "cm62084", 0x0000, 0x4000, CRC(cd1376f7) SHA1(96fa484c392c451599bc083b8376cad9c998df7d) )
ROM_END
} // anonymous namespace
@ -313,4 +358,4 @@ ROM_END
*******************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
COMP( 1985, k28m2, 0, 0, k28m2, k28m2, k28m2_state, empty_init, "Tiger Electronics", "K28: Talking Learning Computer (model 7-232)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
COMP( 1985, k28m2, 0, 0, k28m2, k28m2, k28m2_state, empty_init, "Tiger Electronics", "K28: Talking Learning Computer (model 7-232)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )