mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
Updated bfm fruit drivers to use the n68681 device. (nw)
This commit is contained in:
parent
7b202ee115
commit
2ec6645351
@ -137,7 +137,7 @@ void m68307_set_port_callbacks(m68307cpu_device *device, m68307_porta_read_callb
|
||||
device->m_m68307_portb_w = portb_w;
|
||||
}
|
||||
|
||||
void m68307_set_duart68681(m68307cpu_device* cpudev, device_t* duart68681)
|
||||
void m68307_set_duart68681(m68307cpu_device* cpudev, duartn68681_device *duart68681)
|
||||
{
|
||||
if (cpudev->m68307SERIAL)
|
||||
cpudev->m68307SERIAL->m68307ser_set_duart68681(duart68681);
|
||||
|
@ -88,7 +88,7 @@ protected:
|
||||
static const device_type M68307 = &device_creator<m68307cpu_device>;
|
||||
|
||||
extern void m68307_set_port_callbacks(m68307cpu_device *device, m68307_porta_read_callback porta_r, m68307_porta_write_callback porta_w, m68307_portb_read_callback portb_r, m68307_portb_write_callback portb_w);
|
||||
extern void m68307_set_duart68681(m68307cpu_device* cpudev, device_t* duart68681);
|
||||
extern void m68307_set_duart68681(m68307cpu_device* cpudev, duartn68681_device *duart68681);
|
||||
extern UINT16 m68307_get_cs(m68307cpu_device *device, offs_t address);
|
||||
extern void m68307_timer0_interrupt(m68307cpu_device *cpudev);
|
||||
extern void m68307_timer1_interrupt(m68307cpu_device *cpudev);
|
||||
|
@ -24,7 +24,7 @@ READ8_MEMBER( m68307cpu_device::m68307_internal_serial_r )
|
||||
// if we're piggybacking on the existing 68681 implementation...
|
||||
if (serial->m_duart68681)
|
||||
{
|
||||
if (offset&1) return duart68681_r(serial->m_duart68681, *m68k->program, offset>>1);
|
||||
if (offset&1) return serial->m_duart68681->read(*m68k->program, offset>>1);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -103,7 +103,7 @@ WRITE8_MEMBER( m68307cpu_device::m68307_internal_serial_w )
|
||||
// if we're piggybacking on the existing 68681 implementation...
|
||||
if (serial->m_duart68681)
|
||||
{
|
||||
if (offset&1) duart68681_w(serial->m_duart68681, *m68k->program, offset>>1, data);
|
||||
if (offset&1) serial->m_duart68681->write(*m68k->program, offset>>1, data);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "machine/68681.h"
|
||||
#include "machine/n68681.h"
|
||||
|
||||
#define m68307SER_UMR1_UMR2 (0x01)
|
||||
#define m68307SER_USR_UCSR (0x03)
|
||||
@ -24,10 +24,10 @@ class m68307_serial
|
||||
void reset(void);
|
||||
UINT8 m_uivr;
|
||||
|
||||
void m68307ser_set_duart68681(device_t* duart68681)
|
||||
void m68307ser_set_duart68681(duartn68681_device *duart68681)
|
||||
{
|
||||
m_duart68681 = duart68681;
|
||||
}
|
||||
|
||||
device_t* m_duart68681;
|
||||
duartn68681_device * m_duart68681;
|
||||
};
|
||||
|
@ -213,7 +213,7 @@ READ16_MEMBER(sc4_state::sc4_mem_r)
|
||||
if ((offset>=base) && (offset<end))
|
||||
{
|
||||
offset-=base;
|
||||
return duart68681_r(m_duart,space,offset);
|
||||
return m_duart->read(space,offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -364,7 +364,7 @@ WRITE16_MEMBER(sc4_state::sc4_mem_w)
|
||||
if ((offset>=base) && (offset<end))
|
||||
{
|
||||
offset-=base;
|
||||
duart68681_w(m_duart,space,offset,data&0x00ff);
|
||||
m_duart->write(space,offset,data&0x00ff);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -610,7 +610,7 @@ MACHINE_START_MEMBER(sc4_state,sc4)
|
||||
bfm_sc4_68307_porta_w,
|
||||
bfm_sc4_68307_portb_r,
|
||||
bfm_sc4_68307_portb_w );
|
||||
m68307_set_duart68681(m_maincpu,machine().device("m68307_68681"));
|
||||
m68307_set_duart68681(m_maincpu,machine().device<duartn68681_device>("m68307_68681"));
|
||||
|
||||
|
||||
|
||||
@ -631,58 +631,55 @@ WRITE_LINE_MEMBER(sc4_state::bfm_sc4_irqhandler)
|
||||
|
||||
|
||||
|
||||
void bfm_sc4_duart_irq_handler(device_t *device, int state, UINT8 vector)
|
||||
WRITE_LINE_MEMBER(sc4_state::bfm_sc4_duart_irq_handler)
|
||||
{
|
||||
sc4_state *drvstate = device->machine().driver_data<sc4_state>();
|
||||
// triggers after reel tests on luckb, at the start on dnd...
|
||||
// not sure this is right, causes some games to crash
|
||||
logerror("bfm_sc4_duart_irq_handler\n");
|
||||
if (state == ASSERT_LINE)
|
||||
{
|
||||
m68307_licr2_interrupt(drvstate->m_maincpu);
|
||||
m68307_licr2_interrupt(m_maincpu);
|
||||
}
|
||||
};
|
||||
|
||||
void bfm_sc4_duart_tx(device_t *device, int channel, UINT8 data)
|
||||
{
|
||||
logerror("bfm_sc4_duart_tx\n");
|
||||
};
|
||||
|
||||
|
||||
|
||||
UINT8 bfm_sc4_duart_input_r(device_t *device)
|
||||
{
|
||||
sc4_state *state = device->machine().driver_data<sc4_state>();
|
||||
// printf("bfm_sc4_duart_input_r\n");
|
||||
return state->m_optic_pattern;
|
||||
}
|
||||
|
||||
void bfm_sc4_duart_output_w(device_t *device, UINT8 data)
|
||||
WRITE_LINE_MEMBER(sc4_state::bfm_sc4_duart_txa)
|
||||
{
|
||||
logerror("bfm_sc4_duart_tx\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
READ8_MEMBER(sc4_state::bfm_sc4_duart_input_r)
|
||||
{
|
||||
// printf("bfm_sc4_duart_input_r\n");
|
||||
return m_optic_pattern;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(sc4_state::bfm_sc4_duart_output_w)
|
||||
{
|
||||
// logerror("bfm_sc4_duart_output_w\n");
|
||||
sc4_state *state = device->machine().driver_data<sc4_state>();
|
||||
m_reel56_latch = data;
|
||||
|
||||
state->m_reel56_latch = data;
|
||||
if ( stepper_update(4, data&0x0f ) ) m_reel_changed |= 0x10;
|
||||
if ( stepper_update(5, (data>>4)&0x0f) ) m_reel_changed |= 0x20;
|
||||
|
||||
if ( stepper_update(4, data&0x0f ) ) state->m_reel_changed |= 0x10;
|
||||
if ( stepper_update(5, (data>>4)&0x0f) ) state->m_reel_changed |= 0x20;
|
||||
|
||||
if ( stepper_optic_state(4) ) state->m_optic_pattern |= 0x10;
|
||||
else state->m_optic_pattern &= ~0x10;
|
||||
if ( stepper_optic_state(5) ) state->m_optic_pattern |= 0x20;
|
||||
else state->m_optic_pattern &= ~0x20;
|
||||
if ( stepper_optic_state(4) ) m_optic_pattern |= 0x10;
|
||||
else m_optic_pattern &= ~0x10;
|
||||
if ( stepper_optic_state(5) ) m_optic_pattern |= 0x20;
|
||||
else m_optic_pattern &= ~0x20;
|
||||
|
||||
awp_draw_reel(4);
|
||||
awp_draw_reel(5);
|
||||
}
|
||||
|
||||
|
||||
static const duart68681_config bfm_sc4_duart68681_config =
|
||||
static const duartn68681_config bfm_sc4_duart68681_config =
|
||||
{
|
||||
bfm_sc4_duart_irq_handler,
|
||||
bfm_sc4_duart_tx,
|
||||
bfm_sc4_duart_input_r,
|
||||
bfm_sc4_duart_output_w,
|
||||
DEVCB_DRIVER_LINE_MEMBER(sc4_state, bfm_sc4_duart_irq_handler),
|
||||
DEVCB_DRIVER_LINE_MEMBER(sc4_state, bfm_sc4_duart_txa),
|
||||
DEVCB_NULL,
|
||||
DEVCB_DRIVER_MEMBER(sc4_state, bfm_sc4_duart_input_r),
|
||||
DEVCB_DRIVER_MEMBER(sc4_state, bfm_sc4_duart_output_w),
|
||||
// TODO: What are the actual frequencies?
|
||||
XTAL_16MHz/2/8, /* IP2/RxCB clock */
|
||||
XTAL_16MHz/2/16, /* IP3/TxCA clock */
|
||||
@ -692,47 +689,45 @@ static const duart68681_config bfm_sc4_duart68681_config =
|
||||
|
||||
|
||||
|
||||
void m68307_duart_irq_handler(device_t *device, int state, UINT8 vector)
|
||||
WRITE_LINE_MEMBER(sc4_state::m68307_duart_irq_handler)
|
||||
{
|
||||
sc4_state *drvstate = device->machine().driver_data<sc4_state>();
|
||||
logerror("m68307_duart_irq_handler\n");
|
||||
if (state == ASSERT_LINE)
|
||||
{
|
||||
m68307_serial_interrupt(drvstate->m_maincpu, vector);
|
||||
m68307_serial_interrupt(m_maincpu, machine().device<duartn68681_device>("m68307_68681")->get_irq_vector());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
void m68307_duart_tx(device_t *device, int channel, UINT8 data)
|
||||
WRITE_LINE_MEMBER(sc4_state::m68307_duart_txa)
|
||||
{
|
||||
if (channel==0)
|
||||
{
|
||||
logerror("m68307_duart_tx %02x\n",data);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("(illegal channel 1) m68307_duart_tx %02x\n",data);
|
||||
}
|
||||
};
|
||||
logerror("m68307_duart_tx %02x\n", state);
|
||||
}
|
||||
|
||||
UINT8 m68307_duart_input_r(device_t *device)
|
||||
WRITE_LINE_MEMBER(sc4_state::m68307_duart_txb)
|
||||
{
|
||||
printf("(illegal channel 1) m68307_duart_tx %02x\n", state);
|
||||
}
|
||||
|
||||
READ8_MEMBER(sc4_state::m68307_duart_input_r)
|
||||
{
|
||||
logerror("m68307_duart_input_r\n");
|
||||
return 0x00;
|
||||
}
|
||||
|
||||
void m68307_duart_output_w(device_t *device, UINT8 data)
|
||||
WRITE8_MEMBER(sc4_state::m68307_duart_output_w)
|
||||
{
|
||||
logerror("m68307_duart_output_w %02x\n", data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static const duart68681_config m68307_duart68681_config =
|
||||
static const duartn68681_config m68307_duart68681_config =
|
||||
{
|
||||
m68307_duart_irq_handler,
|
||||
m68307_duart_tx,
|
||||
m68307_duart_input_r,
|
||||
m68307_duart_output_w
|
||||
DEVCB_DRIVER_LINE_MEMBER(sc4_state, m68307_duart_irq_handler),
|
||||
DEVCB_DRIVER_LINE_MEMBER(sc4_state, m68307_duart_txa),
|
||||
DEVCB_DRIVER_LINE_MEMBER(sc4_state, m68307_duart_txb),
|
||||
DEVCB_DRIVER_MEMBER(sc4_state, m68307_duart_input_r),
|
||||
DEVCB_DRIVER_MEMBER(sc4_state, m68307_duart_output_w)
|
||||
};
|
||||
|
||||
/* default dmd */
|
||||
@ -753,7 +748,7 @@ MACHINE_CONFIG_START( sc4, sc4_state )
|
||||
MCFG_CPU_PROGRAM_MAP(sc4_map)
|
||||
|
||||
// internal duart of the 68307... paired in machine start
|
||||
MCFG_DUART68681_ADD("m68307_68681", 16000000/4, m68307_duart68681_config) // ?? Mhz
|
||||
MCFG_DUARTN68681_ADD("m68307_68681", 16000000/4, m68307_duart68681_config) // ?? Mhz
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(sc4_state, sc4 )
|
||||
MCFG_MACHINE_RESET_OVERRIDE(sc4_state, sc4 )
|
||||
@ -763,7 +758,7 @@ MACHINE_CONFIG_START( sc4, sc4_state )
|
||||
|
||||
MCFG_NVRAM_ADD_1FILL("nvram")
|
||||
|
||||
MCFG_DUART68681_ADD("duart68681", 16000000/4, bfm_sc4_duart68681_config) // ?? Mhz
|
||||
MCFG_DUARTN68681_ADD("duart68681", 16000000/4, bfm_sc4_duart68681_config) // ?? Mhz
|
||||
|
||||
MCFG_BFMBDA_ADD("vfd0",0)
|
||||
|
||||
|
@ -27,7 +27,7 @@ WRITE16_MEMBER( bfm_sc5_state::sc5_duart_w )
|
||||
|
||||
if (mem_mask &0xff00)
|
||||
{
|
||||
duart68681_w(m_duart,space,offset,(data>>8)&0x00ff);
|
||||
m_duart->write(space,offset,(data>>8)&0x00ff);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -193,37 +193,35 @@ WRITE_LINE_MEMBER(bfm_sc5_state::bfm_sc5_ym_irqhandler)
|
||||
|
||||
|
||||
|
||||
void bfm_sc5_duart_irq_handler(device_t *device, int state, UINT8 vector)
|
||||
WRITE_LINE_MEMBER(bfm_sc5_state::bfm_sc5_duart_irq_handler)
|
||||
{
|
||||
printf("bfm_sc5_duart_irq_handler\n");
|
||||
};
|
||||
}
|
||||
|
||||
void bfm_sc5_duart_tx(device_t *device, int channel, UINT8 data)
|
||||
WRITE_LINE_MEMBER(bfm_sc5_state::bfm_sc5_duart_txa)
|
||||
{
|
||||
logerror("bfm_sc5_duart_tx\n");
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
UINT8 bfm_sc5_duart_input_r(device_t *device)
|
||||
READ8_MEMBER(bfm_sc5_state::bfm_sc5_duart_input_r)
|
||||
{
|
||||
//bfm_sc5_state *state = device->machine().driver_data<bfm_sc5_state>();
|
||||
printf("bfm_sc5_duart_input_r\n");
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
void bfm_sc5_duart_output_w(device_t *device, UINT8 data)
|
||||
WRITE8_MEMBER(bfm_sc5_state::bfm_sc5_duart_output_w)
|
||||
{
|
||||
logerror("bfm_sc5_duart_output_w\n");
|
||||
}
|
||||
|
||||
|
||||
static const duart68681_config bfm_sc5_duart68681_config =
|
||||
static const duartn68681_config bfm_sc5_duart68681_config =
|
||||
{
|
||||
bfm_sc5_duart_irq_handler,
|
||||
bfm_sc5_duart_tx,
|
||||
bfm_sc5_duart_input_r,
|
||||
bfm_sc5_duart_output_w,
|
||||
DEVCB_DRIVER_LINE_MEMBER(bfm_sc5_state, bfm_sc5_duart_irq_handler),
|
||||
DEVCB_DRIVER_LINE_MEMBER(bfm_sc5_state, bfm_sc5_duart_txa),
|
||||
DEVCB_NULL,
|
||||
DEVCB_DRIVER_MEMBER(bfm_sc5_state, bfm_sc5_duart_input_r),
|
||||
DEVCB_DRIVER_MEMBER(bfm_sc5_state, bfm_sc5_duart_output_w),
|
||||
// TODO: What are the actual frequencies?
|
||||
16000000/2/8, /* IP2/RxCB clock */
|
||||
16000000/2/16, /* IP3/TxCA clock */
|
||||
@ -240,7 +238,7 @@ MACHINE_CONFIG_START( bfm_sc5, bfm_sc5_state )
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_DUART68681_ADD("duart68681", 16000000/4, bfm_sc5_duart68681_config) // ?? Mhz
|
||||
MCFG_DUARTN68681_ADD("duart68681", 16000000/4, bfm_sc5_duart68681_config) // ?? Mhz
|
||||
|
||||
|
||||
MCFG_BFMBDA_ADD("vfd0",0)
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include "machine/bfm_bda.h"
|
||||
|
||||
#include "sound/ymz280b.h"
|
||||
#include "machine/68681.h"
|
||||
#include "machine/n68681.h"
|
||||
#include "machine/nvram.h"
|
||||
#include "machine/68307.h"
|
||||
#include "machine/68340.h"
|
||||
@ -28,7 +28,7 @@ public:
|
||||
|
||||
public:
|
||||
|
||||
required_device<duart68681_device> m_duart;
|
||||
required_device<duartn68681_device> m_duart;
|
||||
optional_device<bfm_bda_t> m_vfd0;
|
||||
optional_device<bfmdm01_device> m_dm01;
|
||||
required_device<ymz280b_device> m_ymz;
|
||||
@ -103,6 +103,17 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(sc4_mem_w);
|
||||
|
||||
DECLARE_READ16_MEMBER(sc4_cs1_r);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(bfm_sc4_duart_irq_handler);
|
||||
DECLARE_WRITE_LINE_MEMBER(bfm_sc4_duart_txa);
|
||||
DECLARE_READ8_MEMBER(bfm_sc4_duart_input_r);
|
||||
DECLARE_WRITE8_MEMBER(bfm_sc4_duart_output_w);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(m68307_duart_irq_handler);
|
||||
DECLARE_WRITE_LINE_MEMBER(m68307_duart_txa);
|
||||
DECLARE_WRITE_LINE_MEMBER(m68307_duart_txb);
|
||||
DECLARE_READ8_MEMBER(m68307_duart_input_r);
|
||||
DECLARE_WRITE8_MEMBER(m68307_duart_output_w);
|
||||
|
||||
DECLARE_DRIVER_INIT(sc4);
|
||||
DECLARE_DRIVER_INIT(sc4mbus);
|
||||
|
@ -24,6 +24,9 @@ public:
|
||||
DECLARE_READ8_MEMBER( sc5_mux1_r );
|
||||
DECLARE_WRITE8_MEMBER( sc5_mux1_w );
|
||||
DECLARE_WRITE8_MEMBER( sc5_mux2_w );
|
||||
|
||||
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(bfm_sc5_duart_irq_handler);
|
||||
DECLARE_WRITE_LINE_MEMBER(bfm_sc5_duart_txa);
|
||||
DECLARE_READ8_MEMBER(bfm_sc5_duart_input_r);
|
||||
DECLARE_WRITE8_MEMBER(bfm_sc5_duart_output_w);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user