mirror of
https://github.com/holub/mame
synced 2025-07-04 17:38:08 +03:00
(MESS) victor9k: Fixed regression. (nw)
This commit is contained in:
parent
0319c7ca06
commit
d3d3b7f9e6
@ -85,6 +85,36 @@ READ8_MEMBER( victor9k_state::floppy_p1_r )
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// floppy_p2_r -
|
||||
//-------------------------------------------------
|
||||
|
||||
READ8_MEMBER( victor9k_state::floppy_p2_r )
|
||||
{
|
||||
/*
|
||||
|
||||
bit description
|
||||
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6 RDY0
|
||||
7 RDY1
|
||||
|
||||
*/
|
||||
|
||||
UINT8 data = 0;
|
||||
|
||||
data |= m_rdy0 << 6;
|
||||
data |= m_rdy1 << 7;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// floppy_p2_w -
|
||||
//-------------------------------------------------
|
||||
@ -101,8 +131,8 @@ WRITE8_MEMBER( victor9k_state::floppy_p2_w )
|
||||
3 STOP1
|
||||
4 SEL1
|
||||
5 SEL0
|
||||
6 RDY0
|
||||
7 RDY1
|
||||
6
|
||||
7
|
||||
|
||||
*/
|
||||
|
||||
@ -130,12 +160,6 @@ WRITE8_MEMBER( victor9k_state::floppy_p2_w )
|
||||
}
|
||||
|
||||
m_sel1 = sel1;
|
||||
|
||||
m_rdy0 = BIT(data, 6);
|
||||
m_via5->write_ca2(m_rdy0);
|
||||
|
||||
m_rdy1 = BIT(data, 7);
|
||||
m_via5->write_cb2(m_rdy1);
|
||||
}
|
||||
|
||||
|
||||
@ -202,8 +226,8 @@ ADDRESS_MAP_END
|
||||
//-------------------------------------------------
|
||||
|
||||
static ADDRESS_MAP_START( floppy_io, AS_IO, 8, victor9k_state )
|
||||
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(floppy_p1_r)
|
||||
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(floppy_p2_w)
|
||||
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(floppy_p1_r) AM_WRITENOP
|
||||
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(floppy_p2_r, floppy_p2_w)
|
||||
AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(tach0_r)
|
||||
AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(tach1_r)
|
||||
AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(da_w)
|
||||
@ -784,6 +808,16 @@ WRITE8_MEMBER( victor9k_state::via4_pb_w )
|
||||
m_st[1] = data >> 4;
|
||||
}
|
||||
|
||||
READ_LINE_MEMBER( victor9k_state::ds0_r )
|
||||
{
|
||||
return m_ds0;
|
||||
}
|
||||
|
||||
READ_LINE_MEMBER( victor9k_state::ds1_r )
|
||||
{
|
||||
return m_ds1;
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( victor9k_state::mode_w )
|
||||
{
|
||||
}
|
||||
@ -799,8 +833,8 @@ static const via6522_interface via4_intf =
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL, // DS0
|
||||
DEVCB_NULL, // DS1
|
||||
DEVCB_DRIVER_LINE_MEMBER(victor9k_state, ds0_r),
|
||||
DEVCB_DRIVER_LINE_MEMBER(victor9k_state, ds1_r),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
|
||||
@ -993,8 +1027,10 @@ READ8_MEMBER( victor9k_state::via6_pb_r )
|
||||
data |= m_rdy1 << 1;
|
||||
|
||||
// door B sense
|
||||
data |= m_ds1 << 3;
|
||||
|
||||
// door A sense
|
||||
data |= m_ds0 << 4;
|
||||
|
||||
// single/double sided
|
||||
data |= (m_drive ? m_floppy1->twosid_r() : m_floppy0->twosid_r()) << 5;
|
||||
@ -1070,7 +1106,6 @@ static const via6522_interface via6_intf =
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// VICTOR9K_KEYBOARD_INTERFACE( kb_intf )
|
||||
//-------------------------------------------------
|
||||
@ -1082,16 +1117,57 @@ WRITE_LINE_MEMBER( victor9k_state::kbrdy_w )
|
||||
m_pic->ir6_w(state ? CLEAR_LINE : ASSERT_LINE);
|
||||
}
|
||||
|
||||
static VICTOR9K_KEYBOARD_INTERFACE( kb_intf )
|
||||
{
|
||||
DEVCB_DRIVER_LINE_MEMBER(victor9k_state, kbrdy_w)
|
||||
};
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// SLOT_INTERFACE( victor9k_floppies )
|
||||
//-------------------------------------------------
|
||||
|
||||
void victor9k_state::ready0_cb(floppy_image_device *device, int state)
|
||||
{
|
||||
m_rdy0 = state;
|
||||
|
||||
m_via5->write_ca2(m_rdy0);
|
||||
}
|
||||
|
||||
int victor9k_state::load0_cb(floppy_image_device *device)
|
||||
{
|
||||
m_ds0 = 0;
|
||||
|
||||
m_via4->write_ca1(m_ds0);
|
||||
|
||||
return IMAGE_INIT_PASS;
|
||||
}
|
||||
|
||||
void victor9k_state::unload0_cb(floppy_image_device *device)
|
||||
{
|
||||
m_ds0 = 1;
|
||||
|
||||
m_via4->write_ca1(m_ds0);
|
||||
}
|
||||
|
||||
void victor9k_state::ready1_cb(floppy_image_device *device, int state)
|
||||
{
|
||||
m_rdy1 = state;
|
||||
|
||||
m_via5->write_cb2(m_rdy1);
|
||||
}
|
||||
|
||||
int victor9k_state::load1_cb(floppy_image_device *device)
|
||||
{
|
||||
m_ds1 = 0;
|
||||
|
||||
m_via4->write_cb1(m_ds1);
|
||||
|
||||
return IMAGE_INIT_PASS;
|
||||
}
|
||||
|
||||
void victor9k_state::unload1_cb(floppy_image_device *device)
|
||||
{
|
||||
m_ds1 = 1;
|
||||
|
||||
m_via4->write_cb1(m_ds1);
|
||||
}
|
||||
|
||||
static SLOT_INTERFACE_START( victor9k_floppies )
|
||||
SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
|
||||
SLOT_INTERFACE_END
|
||||
@ -1139,12 +1215,21 @@ void victor9k_state::machine_start()
|
||||
// set interrupt callback
|
||||
m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(victor9k_state::victor9k_irq_callback),this));
|
||||
|
||||
// set floppy callbacks
|
||||
m_floppy0->setup_ready_cb(floppy_image_device::ready_cb(FUNC(victor9k_state::ready0_cb), this));
|
||||
m_floppy0->setup_load_cb(floppy_image_device::load_cb(FUNC(victor9k_state::load0_cb), this));
|
||||
m_floppy0->setup_unload_cb(floppy_image_device::unload_cb(FUNC(victor9k_state::unload0_cb), this));
|
||||
m_floppy1->setup_ready_cb(floppy_image_device::ready_cb(FUNC(victor9k_state::ready1_cb), this));
|
||||
m_floppy1->setup_load_cb(floppy_image_device::load_cb(FUNC(victor9k_state::load1_cb), this));
|
||||
m_floppy1->setup_unload_cb(floppy_image_device::unload_cb(FUNC(victor9k_state::unload1_cb), this));
|
||||
|
||||
// memory banking
|
||||
address_space &program = m_maincpu->space(AS_PROGRAM);
|
||||
program.install_ram(0x00000, m_ram->size() - 1, m_ram->pointer());
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// MACHINE CONFIGURATION
|
||||
//**************************************************************************
|
||||
@ -1197,7 +1282,7 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state )
|
||||
MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":1", victor9k_floppies, "525qd", floppy_image_device::default_floppy_formats)
|
||||
MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL)
|
||||
MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL)
|
||||
MCFG_VICTOR9K_KEYBOARD_ADD(kb_intf)
|
||||
MCFG_VICTOR9K_KEYBOARD_ADD(WRITELINE(victor9k_state, kbrdy_w))
|
||||
|
||||
// internal ram
|
||||
MCFG_RAM_ADD(RAM_TAG)
|
||||
|
@ -74,7 +74,22 @@ public:
|
||||
m_kb(*this, VICTOR9K_KEYBOARD_TAG),
|
||||
m_rs232a(*this, RS232_A_TAG),
|
||||
m_rs232b(*this, RS232_B_TAG),
|
||||
m_video_ram(*this, "video_ram")
|
||||
m_video_ram(*this, "video_ram"),
|
||||
m_da(0),
|
||||
m_da0(0),
|
||||
m_da1(0),
|
||||
m_sel0(0),
|
||||
m_sel1(0),
|
||||
m_tach0(0),
|
||||
m_tach1(0),
|
||||
m_rdy0(0),
|
||||
m_rdy1(0),
|
||||
m_ds0(1),
|
||||
m_ds1(1),
|
||||
m_lms(0),
|
||||
m_brdy(1),
|
||||
m_sync(1),
|
||||
m_gcrerr(0)
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
@ -125,6 +140,8 @@ public:
|
||||
|
||||
DECLARE_WRITE8_MEMBER( via4_pa_w );
|
||||
DECLARE_WRITE8_MEMBER( via4_pb_w );
|
||||
DECLARE_READ_LINE_MEMBER( ds0_r );
|
||||
DECLARE_READ_LINE_MEMBER( ds1_r );
|
||||
DECLARE_WRITE_LINE_MEMBER( mode_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( via4_irq_w );
|
||||
|
||||
@ -147,6 +164,13 @@ public:
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( ssda_irq_w );
|
||||
|
||||
void ready0_cb(floppy_image_device *, int device);
|
||||
int load0_cb(floppy_image_device *device);
|
||||
void unload0_cb(floppy_image_device *device);
|
||||
void ready1_cb(floppy_image_device *, int device);
|
||||
int load1_cb(floppy_image_device *device);
|
||||
void unload1_cb(floppy_image_device *device);
|
||||
|
||||
enum
|
||||
{
|
||||
LED_A = 0,
|
||||
@ -177,6 +201,8 @@ public:
|
||||
int m_tach1;
|
||||
int m_rdy0;
|
||||
int m_rdy1;
|
||||
int m_ds0;
|
||||
int m_ds1;
|
||||
UINT8 m_lms; /* motor speed */
|
||||
int m_st[2]; /* stepper phase */
|
||||
int m_stp[2]; /* stepper enable */
|
||||
|
@ -251,6 +251,7 @@ victor9k_keyboard_device::victor9k_keyboard_device(const machine_config &mconfig
|
||||
m_ya(*this, "YA"),
|
||||
m_yb(*this, "YB"),
|
||||
m_yc(*this, "YC"),
|
||||
m_write_kbrdy(*this),
|
||||
m_y(0),
|
||||
m_kbrdy(1),
|
||||
m_kbdata(1),
|
||||
@ -258,25 +259,6 @@ victor9k_keyboard_device::victor9k_keyboard_device(const machine_config &mconfig
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete - perform any
|
||||
// operations now that the configuration is
|
||||
// complete
|
||||
//-------------------------------------------------
|
||||
|
||||
void victor9k_keyboard_device::device_config_complete()
|
||||
{
|
||||
// inherit a copy of the static data
|
||||
const victor9k_keyboard_interface *intf = reinterpret_cast<const victor9k_keyboard_interface *>(static_config());
|
||||
if (intf != NULL)
|
||||
*static_cast<victor9k_keyboard_interface *>(this) = *intf;
|
||||
|
||||
// or initialize to defaults if none provided
|
||||
else
|
||||
{
|
||||
memset(&m_out_kbrdy_cb, 0, sizeof(m_out_kbrdy_cb));
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
@ -285,7 +267,7 @@ void victor9k_keyboard_device::device_config_complete()
|
||||
void victor9k_keyboard_device::device_start()
|
||||
{
|
||||
// resolve callbacks
|
||||
m_out_kbrdy_func.resolve(m_out_kbrdy_cb, *this);
|
||||
m_write_kbrdy.resolve_safe();
|
||||
|
||||
// state saving
|
||||
save_item(NAME(m_y));
|
||||
@ -400,7 +382,7 @@ WRITE8_MEMBER( victor9k_keyboard_device::kb_p2_w )
|
||||
if (m_kbrdy != kbrdy)
|
||||
{
|
||||
m_kbrdy = kbrdy;
|
||||
m_out_kbrdy_func(m_kbrdy);
|
||||
m_write_kbrdy(m_kbrdy);
|
||||
}
|
||||
|
||||
m_kbdata = BIT(data, 3);
|
||||
|
@ -30,13 +30,9 @@
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_VICTOR9K_KEYBOARD_ADD(_config) \
|
||||
#define MCFG_VICTOR9K_KEYBOARD_ADD(_kbrdy) \
|
||||
MCFG_DEVICE_ADD(VICTOR9K_KEYBOARD_TAG, VICTOR9K_KEYBOARD, 0) \
|
||||
MCFG_DEVICE_CONFIG(_config)
|
||||
|
||||
|
||||
#define VICTOR9K_KEYBOARD_INTERFACE(_name) \
|
||||
const victor9k_keyboard_interface (_name) =
|
||||
downcast<victor9k_keyboard_device *>(device)->set_kbrdy_callback(DEVCB2_##_kbrdy); \
|
||||
|
||||
|
||||
|
||||
@ -44,23 +40,16 @@
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> victor9k_keyboard_interface
|
||||
|
||||
struct victor9k_keyboard_interface
|
||||
{
|
||||
devcb_write_line m_out_kbrdy_cb;
|
||||
};
|
||||
|
||||
|
||||
// ======================> victor9k_keyboard_device
|
||||
|
||||
class victor9k_keyboard_device : public device_t,
|
||||
public victor9k_keyboard_interface
|
||||
class victor9k_keyboard_device : public device_t
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
victor9k_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
template<class _kbrdy> void set_kbrdy_callback(_kbrdy kbrdy) { m_write_kbrdy.set_callback(kbrdy); }
|
||||
|
||||
// optional information overrides
|
||||
virtual const rom_entry *device_rom_region() const;
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
@ -80,11 +69,8 @@ protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
virtual void device_config_complete();
|
||||
|
||||
private:
|
||||
devcb_resolved_write_line m_out_kbrdy_func;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_ioport m_y0;
|
||||
required_ioport m_y1;
|
||||
@ -100,6 +86,8 @@ private:
|
||||
required_ioport m_yb;
|
||||
required_ioport m_yc;
|
||||
|
||||
devcb2_write_line m_write_kbrdy;
|
||||
|
||||
UINT8 m_y;
|
||||
int m_kbrdy;
|
||||
int m_kbdata;
|
||||
|
Loading…
Reference in New Issue
Block a user