mirror of
https://github.com/holub/mame
synced 2025-04-21 07:52:35 +03:00
casio/fp1100.cpp: hookup cassette SW list
New software list items marked not working ------------------------------------------ fp1100_cass: Alien No Gyakushu, Attack Sea Monster, Backgammon, Golf Game, Kalah Game, Moo Game, Renga Kuzushi, Vegetable Crush [archive.org]
This commit is contained in:
parent
82dda44b7a
commit
1a3ec953a0
150
hash/fp1100_cass.xml
Normal file
150
hash/fp1100_cass.xml
Normal file
@ -0,0 +1,150 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
<!--
|
||||
license:CC0-1.0
|
||||
|
||||
TODO:
|
||||
- verify type-in patterns, convert to usage node (took from instruction sheets)
|
||||
- None of the Compac releases have any copyright year on packages
|
||||
|
||||
-->
|
||||
<softwarelist name="fp1100_cass" description="Casio FP-1100 cassettes">
|
||||
<software name="aliengya" supported="no">
|
||||
<description>Alien No Gyakushu</description>
|
||||
<year>1983?</year>
|
||||
<publisher>Compac</publisher>
|
||||
<!-- TODO: Denoting wrong snippet -->
|
||||
<notes><![CDATA[
|
||||
LOAD"CAS0:(F)
|
||||
CLEAR,&HEF00
|
||||
LOADM"CAS0:(F)
|
||||
RUN
|
||||
]]></notes>
|
||||
<info name="alt_title" value="エイリアンの逆襲"/>
|
||||
<info name="serial" value="FP11-785"/>
|
||||
<part name="cass1" interface="fp1100_cass">
|
||||
<dataarea name="cass" size="5038983">
|
||||
<rom name="alien_no_gyakushu.flac" size="5038983" crc="d811a8bd" sha1="f0526965f2eca20cf4f00a75871965840e5e5d10"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="atkseam" supported="no">
|
||||
<description>Attack Sea Monster</description>
|
||||
<year>1983</year>
|
||||
<publisher>Hudson Soft</publisher>
|
||||
<notes><![CDATA[
|
||||
WIDTH 40
|
||||
LOADM "CAS0:",R
|
||||
]]></notes>
|
||||
<info name="alt_title" value="アタックシーモンスタ"/>
|
||||
<info name="serial" value="C-1001"/>
|
||||
<part name="cass1" interface="fp1100_cass">
|
||||
<dataarea name="cass" size="6191452">
|
||||
<rom name="attack_sea_monster.flac" size="6191452" crc="b141ff99" sha1="79fe0d17dd834becb812576e2d675dd545d826fe"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="backgamn" supported="no">
|
||||
<description>Backgammon</description>
|
||||
<year>1983?</year>
|
||||
<publisher>Compac</publisher>
|
||||
<notes><![CDATA[
|
||||
RUN "CAS0:(F)"
|
||||
]]></notes>
|
||||
<info name="alt_title" value="バックギャモン"/>
|
||||
<info name="serial" value="FP11-753"/>
|
||||
<part name="cass1" interface="fp1100_cass">
|
||||
<dataarea name="cass" size="10143410">
|
||||
<rom name="backgammon.flac" size="10143410" crc="c7a0198c" sha1="1951b7b2c3a859e1911148c1e11d022058dcf6a8"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="golf" supported="no">
|
||||
<description>Golf Game</description>
|
||||
<year>1983?</year>
|
||||
<publisher>Compac</publisher>
|
||||
<!-- TODO: Denoting wrong snippet -->
|
||||
<notes><![CDATA[
|
||||
LAD"CAS0:(F)"
|
||||
RAN
|
||||
]]></notes>
|
||||
<info name="alt_title" value="ゴルフゲーム"/>
|
||||
<info name="serial" value="FP11-789"/>
|
||||
<part name="cass1" interface="fp1100_cass">
|
||||
<dataarea name="cass" size="11912054">
|
||||
<rom name="golf_game.flac" size="11912054" crc="6b0873d5" sha1="422df8742ad60a69188e2b9c56b6f67f7c7515d9"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="kalah" supported="no">
|
||||
<description>Kalah Game</description>
|
||||
<year>1983?</year>
|
||||
<publisher>Compac</publisher>
|
||||
<notes><![CDATA[
|
||||
LOAD"CAS0:(F)"
|
||||
RUN
|
||||
]]></notes>
|
||||
<info name="alt_title" value="カラーゲーム"/>
|
||||
<info name="serial" value="FP11-787"/>
|
||||
<part name="cass1" interface="fp1100_cass">
|
||||
<dataarea name="cass" size="6293088">
|
||||
<rom name="kalah_game.flac" size="6293088" crc="ca9ecf9e" sha1="09510eb05330aa9d803e895f544720c1cf3195ef"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="moo" supported="no">
|
||||
<description>Moo Game</description>
|
||||
<year>1983?</year>
|
||||
<publisher>Compac</publisher>
|
||||
<notes><![CDATA[
|
||||
LOAD "CAS0:(F)"
|
||||
RUN
|
||||
]]></notes>
|
||||
<info name="alt_title" value="ムーゲーム"/>
|
||||
<info name="serial" value="FP11-786"/>
|
||||
<part name="cass1" interface="fp1100_cass">
|
||||
<dataarea name="cass" size="3209415">
|
||||
<rom name="moo_game.flac" size="3209415" crc="c2c4826e" sha1="3cf2953fb9f5caf8afef49cc2b801ffa529fa21f"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="renkuzu" supported="no">
|
||||
<description>Renga Kuzushi</description>
|
||||
<year>1983?</year>
|
||||
<publisher>Compac</publisher>
|
||||
<notes><![CDATA[
|
||||
LOADM "CAS0:(F)",R
|
||||
]]></notes>
|
||||
<info name="alt_title" value="レンガくずし"/>
|
||||
<info name="serial" value="FP11-752"/>
|
||||
<part name="cass1" interface="fp1100_cass">
|
||||
<dataarea name="cass" size="1971347">
|
||||
<rom name="renga_kuzushi.flac" size="1971347" crc="942819ed" sha1="4734622300f3b694ac739aea7be3d4a7229051a4"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="vegcrush" supported="no">
|
||||
<description>Vegetable Crush</description>
|
||||
<year>1983</year>
|
||||
<publisher>Hudson Soft</publisher>
|
||||
<notes><![CDATA[
|
||||
WIDTH 40
|
||||
LOADM"CAS0:(S)"
|
||||
]]></notes>
|
||||
<info name="alt_title" value="ベジタブルクラッシュ"/>
|
||||
<info name="serial" value="C-1002"/>
|
||||
<part name="cass1" interface="fp1100_cass">
|
||||
<dataarea name="cass" size="21642009">
|
||||
<rom name="vegetable_crush.flac" size="21642009" crc="5b1ab7b0" sha1="84c0f1b5c823fb8aa6ff46fbb3cc48bfacde3a26"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
</softwarelist>
|
@ -55,6 +55,8 @@ The keyboard is a separate unit. It contains a beeper.
|
||||
#include "screen.h"
|
||||
#include "speaker.h"
|
||||
|
||||
#include "softlist_dev.h"
|
||||
|
||||
#define VERBOSE 0
|
||||
#include "logmacro.h"
|
||||
|
||||
@ -78,7 +80,7 @@ public:
|
||||
, m_keyboard(*this, "KEY.%u", 0)
|
||||
, m_beep(*this, "beeper")
|
||||
, m_centronics(*this, "centronics")
|
||||
, m_cass(*this, "cassette")
|
||||
, m_cassette(*this, "cassette")
|
||||
{ }
|
||||
|
||||
void fp1100(machine_config &config);
|
||||
@ -98,7 +100,7 @@ private:
|
||||
required_ioport_array<16> m_keyboard;
|
||||
required_device<beep_device> m_beep;
|
||||
required_device<centronics_device> m_centronics;
|
||||
required_device<cassette_image_device> m_cass;
|
||||
required_device<cassette_image_device> m_cassette;
|
||||
|
||||
void main_map(address_map &map);
|
||||
void io_map(address_map &map);
|
||||
@ -125,11 +127,11 @@ private:
|
||||
u8 m_col_cursor = 0;
|
||||
u8 m_col_display = 0;
|
||||
u8 m_centronics_busy = 0;
|
||||
u8 m_cass_data[4]{};
|
||||
u8 m_cassette_data[4]{};
|
||||
bool m_bank_sel = false;
|
||||
bool m_sub_irq_status = false;
|
||||
bool m_cassbit = false;
|
||||
bool m_cassold = false;
|
||||
bool m_cassettebit = false;
|
||||
bool m_cassetteold = false;
|
||||
|
||||
// TODO: descramble
|
||||
struct {
|
||||
@ -410,7 +412,7 @@ void fp1100_state::portc_w(u8 data)
|
||||
m_upd7801.portc = data;
|
||||
|
||||
if (BIT(bits, 5))
|
||||
m_cass->change_state(BIT(data, 5) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
|
||||
m_cassette->change_state(BIT(data, 5) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
|
||||
if (BIT(bits, 6))
|
||||
m_centronics->write_strobe(BIT(data, 6));
|
||||
}
|
||||
@ -641,18 +643,18 @@ void fp1100_state::centronics_busy_w(int state)
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( fp1100_state::kansas_w )
|
||||
{
|
||||
m_cass_data[3]++;
|
||||
m_cassette_data[3]++;
|
||||
|
||||
if (m_cassbit != m_cassold)
|
||||
if (m_cassettebit != m_cassetteold)
|
||||
{
|
||||
m_cass_data[3] = 0;
|
||||
m_cassold = m_cassbit;
|
||||
m_cassette_data[3] = 0;
|
||||
m_cassetteold = m_cassettebit;
|
||||
}
|
||||
|
||||
if (m_cassbit)
|
||||
m_cass->output(BIT(m_cass_data[3], 0) ? -1.0 : +1.0); // 2400Hz
|
||||
if (m_cassettebit)
|
||||
m_cassette->output(BIT(m_cassette_data[3], 0) ? -1.0 : +1.0); // 2400Hz
|
||||
else
|
||||
m_cass->output(BIT(m_cass_data[3], 1) ? -1.0 : +1.0); // 1200Hz
|
||||
m_cassette->output(BIT(m_cassette_data[3], 1) ? -1.0 : +1.0); // 1200Hz
|
||||
}
|
||||
|
||||
void fp1100_state::machine_start()
|
||||
@ -695,7 +697,7 @@ void fp1100_state::fp1100(machine_config &config)
|
||||
m_subcpu->pb_out_cb().set("cent_data_out", FUNC(output_latch_device::write));
|
||||
m_subcpu->pc_in_cb().set(FUNC(fp1100_state::portc_r));
|
||||
m_subcpu->pc_out_cb().set(FUNC(fp1100_state::portc_w));
|
||||
m_subcpu->txd_func().set([this] (bool state) { m_cassbit = state; });
|
||||
m_subcpu->txd_func().set([this] (bool state) { m_cassettebit = state; });
|
||||
|
||||
GENERIC_LATCH_8(config, "main2sub");
|
||||
GENERIC_LATCH_8(config, "sub2main");
|
||||
@ -709,11 +711,15 @@ void fp1100_state::fp1100(machine_config &config)
|
||||
output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out"));
|
||||
m_centronics->set_output_latch(latch);
|
||||
|
||||
CASSETTE(config, m_cass);
|
||||
m_cass->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
|
||||
m_cass->add_route(ALL_OUTPUTS, "mono", 0.05);
|
||||
CASSETTE(config, m_cassette);
|
||||
m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
|
||||
m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05);
|
||||
m_cassette->set_interface("fp1100_cass");
|
||||
|
||||
TIMER(config, "kansas_w").configure_periodic(FUNC(fp1100_state::kansas_w), attotime::from_hz(4800));
|
||||
|
||||
SOFTWARE_LIST(config, "cass_list").set_original("fp1100_cass");
|
||||
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
// doesn't matter, will be reset by 6845 anyway
|
||||
screen.set_refresh_hz(60);
|
||||
|
Loading…
Reference in New Issue
Block a user