summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2019-05-24 10:33:06 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2019-05-24 10:33:06 +1000
commit52c159d916961370181d414d149ef793052d12a4 (patch)
tree043f0b52e532f9353fb6a589587e9df50e8e0642
parentd110ecf603e4b96d3ee5bccdfd4fb9b6a1d9ffb7 (diff)
(nw) a5105 : added cassette read per schematic, but not working
-rw-r--r--src/mame/drivers/a5105.cpp41
-rw-r--r--src/mame/drivers/pro80.cpp2
2 files changed, 36 insertions, 7 deletions
diff --git a/src/mame/drivers/a5105.cpp b/src/mame/drivers/a5105.cpp
index 037daf3feab..880d15c55c3 100644
--- a/src/mame/drivers/a5105.cpp
+++ b/src/mame/drivers/a5105.cpp
@@ -2,18 +2,20 @@
// copyright-holders:Angelo Salese, Robbbert
/***************************************************************************
- A5105
+A5105
- 12/05/2009 Skeleton driver.
+2009-05-12 Skeleton driver.
- http://www.robotrontechnik.de/index.htm?/html/computer/a5105.htm
- http://www.sax.de/~zander/bic/bic_bw.html
+http://www.robotrontechnik.de/index.htm?/html/computer/a5105.htm
+http://www.sax.de/~zander/bic/bic_bw.html
- - this looks like "somehow" inspired by the MSX1 machine?
+- this looks like "somehow" inspired by the MSX1 machine?
+
+Cassette commands: CSAVE "name" ; CLOAD
ToDo:
-- Cassette Load (bit 7 of port 91)
+- Cassette (coded per schematic, but doesn't work)
****************************************************************************/
@@ -69,6 +71,7 @@ private:
DECLARE_READ8_MEMBER(a5105_memsel_r);
DECLARE_READ8_MEMBER(key_r);
DECLARE_READ8_MEMBER(key_mux_r);
+ DECLARE_READ8_MEMBER(pio_pb_r);
DECLARE_WRITE8_MEMBER(key_mux_w);
DECLARE_WRITE8_MEMBER(a5105_ab_w);
DECLARE_WRITE8_MEMBER(a5105_memsel_w);
@@ -164,6 +167,31 @@ void a5105_state::a5105_mem(address_map &map)
map(0xc000, 0xffff).bankrw("bank4");
}
+READ8_MEMBER( a5105_state::pio_pb_r )
+{
+ /*
+
+ PIO Channel B
+
+ 0 W PAR12
+ 1 ? SER1
+ 2 ? SER2
+ 3 ? SER3
+ 4 ? SER4
+ 5 W JOY2
+ 6 W /JOYEN
+ 7 R Cassette Data
+
+ */
+
+ uint8_t data = 0x7f;
+
+ // cassette data
+ data |= (m_cass->input() > 0) ? 0x80 : 0;
+
+ return data;
+}
+
WRITE8_MEMBER( a5105_state::pcg_addr_w )
{
m_pcg_addr = data << 3;
@@ -595,6 +623,7 @@ void a5105_state::a5105(machine_config &config)
ctc.zc_callback<2>().set("z80ctc", FUNC(z80ctc_device::trg3));
z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(15'000'000) / 4));
+ pio.in_pb_callback().set(FUNC(a5105_state::pio_pb_r));
pio.out_int_callback().set_inputline(m_maincpu, 0);
CASSETTE(config, m_cass);
diff --git a/src/mame/drivers/pro80.cpp b/src/mame/drivers/pro80.cpp
index 917174c4215..2f6944a419c 100644
--- a/src/mame/drivers/pro80.cpp
+++ b/src/mame/drivers/pro80.cpp
@@ -70,7 +70,7 @@ private:
TIMER_DEVICE_CALLBACK_MEMBER( pro80_state::kansas_r )
{
m_cass_data[1]++;
- uint8_t cass_ws = ((m_cass)->input() > +0.03) ? 1 : 0;
+ uint8_t cass_ws = (m_cass->input() > +0.03) ? 1 : 0;
if (cass_ws != m_cass_data[0])
{