mirror of
https://github.com/holub/mame
synced 2025-10-04 16:34:53 +03:00
(nw) bob85: fixed cassette load (ignore EEEE error - it loads correctly)
This commit is contained in:
parent
484aff20bc
commit
d735f19cde
@ -2,11 +2,12 @@
|
||||
// copyright-holders:Miodrag Milanovic
|
||||
/***************************************************************************
|
||||
|
||||
BOB85 driver by Miodrag Milanovic
|
||||
BOB85 driver by Miodrag Milanovic
|
||||
|
||||
2008-05-24 Preliminary driver.
|
||||
2009-05-12 Skeleton driver.
|
||||
2013-06-02 Working driver.
|
||||
2008-05-24 Preliminary driver.
|
||||
2009-05-12 Skeleton driver.
|
||||
2013-06-02 Working driver.
|
||||
2019-07-14 Fixed cassette load - it loads correctly then says EEEE
|
||||
|
||||
Pasting:
|
||||
0-F : as is
|
||||
@ -23,6 +24,7 @@ Test Paste:
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/i8085/i8085.h"
|
||||
#include "machine/timer.h"
|
||||
#include "imagedev/cassette.h"
|
||||
#include "speaker.h"
|
||||
#include "bob85.lh"
|
||||
@ -42,16 +44,19 @@ public:
|
||||
{ }
|
||||
|
||||
void bob85(machine_config &config);
|
||||
|
||||
private:
|
||||
void bob85_io(address_map &map);
|
||||
void bob85_mem(address_map &map);
|
||||
DECLARE_READ8_MEMBER(bob85_keyboard_r);
|
||||
DECLARE_WRITE8_MEMBER(bob85_7seg_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(sod_w);
|
||||
DECLARE_READ_LINE_MEMBER(sid_r);
|
||||
|
||||
private:
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(kansas_r);
|
||||
uint8_t m_prev_key;
|
||||
uint8_t m_count_key;
|
||||
u16 m_casscnt;
|
||||
bool m_cassold, m_cassbit;
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
required_device<i8085a_cpu_device> m_maincpu;
|
||||
@ -190,6 +195,26 @@ void bob85_state::machine_reset()
|
||||
{
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( bob85_state::kansas_r )
|
||||
{
|
||||
/* cassette - turn pulses into a bit */
|
||||
bool cass_ws = (m_cass->input() > +0.04) ? 1 : 0;
|
||||
m_casscnt++;
|
||||
|
||||
if (cass_ws != m_cassold)
|
||||
{
|
||||
m_cassold = cass_ws;
|
||||
m_cassbit = (m_casscnt < 12) ? 1 : 0;
|
||||
m_casscnt = 0;
|
||||
}
|
||||
else
|
||||
if (m_casscnt > 32)
|
||||
{
|
||||
m_casscnt = 32;
|
||||
m_cassbit = 0;
|
||||
}
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( bob85_state::sod_w )
|
||||
{
|
||||
m_cass->output(state ? +1.0 : -1.0);
|
||||
@ -197,7 +222,7 @@ WRITE_LINE_MEMBER( bob85_state::sod_w )
|
||||
|
||||
READ_LINE_MEMBER( bob85_state::sid_r )
|
||||
{
|
||||
return (m_cass->input() > 0.04) ? 1 : 0;
|
||||
return m_cassbit;
|
||||
}
|
||||
|
||||
void bob85_state::bob85(machine_config &config)
|
||||
@ -217,6 +242,7 @@ void bob85_state::bob85(machine_config &config)
|
||||
// devices
|
||||
CASSETTE(config, m_cass).set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
|
||||
m_cass->add_route(ALL_OUTPUTS, "mono", 0.05);
|
||||
TIMER(config, "kansas_r").configure_periodic(FUNC(bob85_state::kansas_r), attotime::from_hz(40000));
|
||||
}
|
||||
|
||||
/* ROM definition */
|
||||
|
Loading…
Reference in New Issue
Block a user