summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2014-01-08 18:11:54 +0000
committer Ivan Vangelista <mesgnet@yahoo.it>2014-01-08 18:11:54 +0000
commit233a37f1b211bd71eaa2c938c17654caabc1cca1 (patch)
tree060f04774fc75ca1e8b2f288129ca9282ee19231 /src
parent4548b75d5b12eb5814004d290beb00c16221f1dc (diff)
Modernized beta disk device. Still needs updating to modern fdc.(nw)
Diffstat (limited to 'src')
-rw-r--r--src/mess/drivers/atm.c24
-rw-r--r--src/mess/drivers/pentagon.c24
-rw-r--r--src/mess/drivers/scorpion.c22
-rw-r--r--src/mess/machine/beta.c217
-rw-r--r--src/mess/machine/beta.h45
5 files changed, 139 insertions, 193 deletions
diff --git a/src/mess/drivers/atm.c b/src/mess/drivers/atm.c
index 1c34714e68c..c352f764bf2 100644
--- a/src/mess/drivers/atm.c
+++ b/src/mess/drivers/atm.c
@@ -42,7 +42,7 @@ protected:
required_memory_bank m_bank2;
required_memory_bank m_bank3;
required_memory_bank m_bank4;
- required_device<device_t> m_beta;
+ required_device<beta_disk_device> m_beta;
private:
UINT8 *m_p_ram;
@@ -54,12 +54,12 @@ DIRECT_UPDATE_MEMBER(atm_state::atm_direct)
{
UINT16 pc = m_maincpu->state_int(STATE_GENPCBASE);
- if (m_beta->started() && betadisk_is_active(m_beta))
+ if (m_beta->started() && m_beta->is_active())
{
if (pc >= 0x4000)
{
m_ROMSelection = BIT(m_port_7ffd_data, 4);
- betadisk_disable(m_beta);
+ m_beta->disable();
m_bank1->set_base(&m_p_ram[0x10000 + (m_ROMSelection<<14)]);
}
}
@@ -67,7 +67,7 @@ DIRECT_UPDATE_MEMBER(atm_state::atm_direct)
{
m_ROMSelection = 3;
if (m_beta->started())
- betadisk_enable(m_beta);
+ m_beta->enable();
}
if(address<=0x3fff)
@@ -95,7 +95,7 @@ void atm_state::atm_update_memory()
m_bank4->set_base(messram + ((m_port_7ffd_data & 0x07) * 0x4000));
- if (m_beta->started() && betadisk_is_active(m_beta) && !( m_port_7ffd_data & 0x10 ) )
+ if (m_beta->started() && m_beta->is_active() && !( m_port_7ffd_data & 0x10 ) )
m_ROMSelection = 3;
else
/* ROM switching */
@@ -120,12 +120,12 @@ WRITE8_MEMBER(atm_state::atm_port_7ffd_w)
static ADDRESS_MAP_START (atm_io, AS_IO, 8, atm_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x001f, 0x001f) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_status_r,betadisk_command_w) AM_MIRROR(0xff00)
- AM_RANGE(0x003f, 0x003f) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_track_r,betadisk_track_w) AM_MIRROR(0xff00)
- AM_RANGE(0x005f, 0x005f) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_sector_r,betadisk_sector_w) AM_MIRROR(0xff00)
- AM_RANGE(0x007f, 0x007f) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_data_r,betadisk_data_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x001f, 0x001f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, status_r, command_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x003f, 0x003f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, track_r, track_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x005f, 0x005f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, sector_r, sector_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x007f, 0x007f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, data_r, data_w) AM_MIRROR(0xff00)
AM_RANGE(0x00fe, 0x00fe) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_MIRROR(0xff00) AM_MASK(0xffff)
- AM_RANGE(0x00ff, 0x00ff) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_state_r, betadisk_param_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x00ff, 0x00ff) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, state_r, param_w) AM_MIRROR(0xff00)
AM_RANGE(0x4000, 0x4000) AM_WRITE(atm_port_7ffd_w) AM_MIRROR(0x3ffd)
AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay8912", ay8910_device, data_w) AM_MIRROR(0x3ffd)
AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3ffd)
@@ -142,8 +142,8 @@ MACHINE_RESET_MEMBER(atm_state,atm)
if (m_beta->started())
{
- betadisk_enable(m_beta);
- betadisk_clear_status(m_beta);
+ m_beta->enable();
+ m_beta->clear_status();
}
space.set_direct_update_handler(direct_update_delegate(FUNC(atm_state::atm_direct), this));
diff --git a/src/mess/drivers/pentagon.c b/src/mess/drivers/pentagon.c
index e95abd824bf..76cfb998b5b 100644
--- a/src/mess/drivers/pentagon.c
+++ b/src/mess/drivers/pentagon.c
@@ -30,7 +30,7 @@ protected:
required_memory_bank m_bank2;
required_memory_bank m_bank3;
required_memory_bank m_bank4;
- required_device<device_t> m_beta;
+ required_device<beta_disk_device> m_beta;
private:
UINT8 *m_p_ram;
void pentagon_update_memory();
@@ -40,10 +40,10 @@ DIRECT_UPDATE_MEMBER(pentagon_state::pentagon_direct)
{
UINT16 pc = m_maincpu->pcbase();
- if (m_beta->started() && betadisk_is_active(m_beta) && (pc >= 0x4000))
+ if (m_beta->started() && m_beta->is_active() && (pc >= 0x4000))
{
m_ROMSelection = BIT(m_port_7ffd_data, 4);
- betadisk_disable(m_beta);
+ m_beta->disable();
m_bank1->set_base(&m_p_ram[0x10000 + (m_ROMSelection<<14)]);
}
else
@@ -51,7 +51,7 @@ DIRECT_UPDATE_MEMBER(pentagon_state::pentagon_direct)
{
m_ROMSelection = 3;
if (m_beta->started())
- betadisk_enable(m_beta);
+ m_beta->enable();
}
if (address<=0x3fff)
@@ -83,7 +83,7 @@ void pentagon_state::pentagon_update_memory()
m_bank4->set_base(messram + ((m_port_7ffd_data & 0x07) * 0x4000));
- if (m_beta->started() && betadisk_is_active(m_beta) && !( m_port_7ffd_data & 0x10 ) )
+ if (m_beta->started() && m_beta->is_active() && !( m_port_7ffd_data & 0x10 ) )
{
/* GLUK */
if (strcmp(machine().system().name, "pent1024")==0)
@@ -114,12 +114,12 @@ WRITE8_MEMBER(pentagon_state::pentagon_port_7ffd_w)
static ADDRESS_MAP_START (pentagon_io, AS_IO, 8, pentagon_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x001f, 0x001f) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_status_r,betadisk_command_w) AM_MIRROR(0xff00)
- AM_RANGE(0x003f, 0x003f) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_track_r,betadisk_track_w) AM_MIRROR(0xff00)
- AM_RANGE(0x005f, 0x005f) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_sector_r,betadisk_sector_w) AM_MIRROR(0xff00)
- AM_RANGE(0x007f, 0x007f) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_data_r,betadisk_data_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x001f, 0x001f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, status_r, command_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x003f, 0x003f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, track_r, track_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x005f, 0x005f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, sector_r, sector_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x007f, 0x007f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, data_r, data_w) AM_MIRROR(0xff00)
AM_RANGE(0x00fe, 0x00fe) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_MIRROR(0xff00) AM_MASK(0xffff)
- AM_RANGE(0x00ff, 0x00ff) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_state_r, betadisk_param_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x00ff, 0x00ff) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, state_r, param_w) AM_MIRROR(0xff00)
AM_RANGE(0x4000, 0x4000) AM_WRITE(pentagon_port_7ffd_w) AM_MIRROR(0x3ffd)
AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay8912", ay8910_device, data_w) AM_MIRROR(0x3ffd)
AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3ffd)
@@ -136,8 +136,8 @@ MACHINE_RESET_MEMBER(pentagon_state,pentagon)
if (m_beta->started())
{
- betadisk_enable(m_beta);
- betadisk_clear_status(m_beta);
+ m_beta->enable();
+ m_beta->clear_status();
}
space.set_direct_update_handler(direct_update_delegate(FUNC(pentagon_state::pentagon_direct), this));
diff --git a/src/mess/drivers/scorpion.c b/src/mess/drivers/scorpion.c
index e75088fd82e..1405246c2dc 100644
--- a/src/mess/drivers/scorpion.c
+++ b/src/mess/drivers/scorpion.c
@@ -179,7 +179,7 @@ protected:
required_memory_bank m_bank2;
required_memory_bank m_bank3;
required_memory_bank m_bank4;
- required_device<device_t> m_beta;
+ required_device<beta_disk_device> m_beta;
private:
UINT8 *m_p_ram;
void scorpion_update_memory();
@@ -257,10 +257,10 @@ DIRECT_UPDATE_MEMBER(scorpion_state::scorpion_direct)
UINT16 pc = m_maincpu->device_t::safe_pcbase(); // works, but...
m_ram_disabled_by_beta = 0;
- if (betadisk_is_active(m_beta) && (pc >= 0x4000))
+ if (m_beta->is_active() && (pc >= 0x4000))
{
m_ROMSelection = BIT(m_port_7ffd_data, 4);
- betadisk_disable(m_beta);
+ m_beta->disable();
m_ram_disabled_by_beta = 1;
m_bank1->set_base(&m_p_ram[0x10000 + (m_ROMSelection<<14)]);
}
@@ -268,7 +268,7 @@ DIRECT_UPDATE_MEMBER(scorpion_state::scorpion_direct)
if (((pc & 0xff00) == 0x3d00) && (m_ROMSelection==1))
{
m_ROMSelection = 3;
- betadisk_enable(m_beta);
+ m_beta->enable();
}
if(address<=0x3fff)
@@ -313,12 +313,12 @@ WRITE8_MEMBER(scorpion_state::scorpion_port_1ffd_w)
static ADDRESS_MAP_START (scorpion_io, AS_IO, 8, scorpion_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x001f, 0x001f) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_status_r,betadisk_command_w) AM_MIRROR(0xff00)
- AM_RANGE(0x003f, 0x003f) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_track_r,betadisk_track_w) AM_MIRROR(0xff00)
- AM_RANGE(0x005f, 0x005f) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_sector_r,betadisk_sector_w) AM_MIRROR(0xff00)
- AM_RANGE(0x007f, 0x007f) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_data_r,betadisk_data_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x001f, 0x001f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, status_r, command_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x003f, 0x003f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, track_r, track_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x005f, 0x005f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, sector_r, sector_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x007f, 0x007f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, data_r, data_w) AM_MIRROR(0xff00)
AM_RANGE(0x00fe, 0x00fe) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_MIRROR(0xff00) AM_MASK(0xffff)
- AM_RANGE(0x00ff, 0x00ff) AM_DEVREADWRITE_LEGACY(BETA_DISK_TAG, betadisk_state_r, betadisk_param_w) AM_MIRROR(0xff00)
+ AM_RANGE(0x00ff, 0x00ff) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, state_r, param_w) AM_MIRROR(0xff00)
AM_RANGE(0x4000, 0x4000) AM_WRITE(scorpion_port_7ffd_w) AM_MIRROR(0x3ffd)
AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay8912", ay8910_device, data_w) AM_MIRROR(0x3ffd)
AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3ffd)
@@ -336,8 +336,8 @@ MACHINE_RESET_MEMBER(scorpion_state,scorpion)
space.install_read_bank(0x0000, 0x3fff, "bank1");
space.install_write_handler(0x0000, 0x3fff, write8_delegate(FUNC(scorpion_state::scorpion_0000_w),this));
- betadisk_disable(m_beta);
- betadisk_clear_status(m_beta);
+ m_beta->disable();
+ m_beta->clear_status();
space.set_direct_update_handler(direct_update_delegate(FUNC(scorpion_state::scorpion_direct), this));
memset(messram,0,256*1024);
diff --git a/src/mess/machine/beta.c b/src/mess/machine/beta.c
index 0ae7b0ff1a5..bc7488ab2be 100644
--- a/src/mess/machine/beta.c
+++ b/src/mess/machine/beta.c
@@ -12,193 +12,178 @@
#include "formats/trd_dsk.h"
#include "machine/wd17xx.h"
#include "machine/beta.h"
-#include "devlegcy.h"
+
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
-struct beta_disk_state
-{
- UINT8 betadisk_status;
- UINT8 betadisk_active;
-
- device_t *wd179x;
-};
+const device_type BETA_DISK = &device_creator<beta_disk_device>;
-/*****************************************************************************
- INLINE FUNCTIONS
-*****************************************************************************/
-INLINE beta_disk_state *get_safe_token(device_t *device)
+beta_disk_device::beta_disk_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, BETA_DISK, "Beta Disk Interface", tag, owner, clock, "betadisk", __FILE__),
+ m_betadisk_status(0),
+ m_betadisk_active(0)
{
- assert(device != NULL);
- assert(device->type() == BETA_DISK);
-
- return (beta_disk_state *)downcast<beta_disk_device *>(device)->token();
}
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
-int betadisk_is_active(device_t *device)
+void beta_disk_device::device_start()
{
- beta_disk_state *beta = get_safe_token(device);
+ astring tempstring;
+
+ /* validate arguments */
+ assert(tag() != NULL);
- return beta->betadisk_active;
+ /* find our WD179x */
+ tempstring.printf("%s:%s", tag(), "wd179x");
+ m_wd179x = machine().device(tempstring);
}
-void betadisk_enable(device_t *device)
-{
- beta_disk_state *beta = get_safe_token(device);
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
- beta->betadisk_active = 1;
+void beta_disk_device::device_reset()
+{
}
-void betadisk_disable(device_t *device)
+int beta_disk_device::is_active()
{
- beta_disk_state *beta = get_safe_token(device);
-
- beta->betadisk_active = 0;
+ return m_betadisk_active;
}
-void betadisk_clear_status(device_t *device)
+void beta_disk_device::enable()
{
- beta_disk_state *beta = get_safe_token(device);
+ m_betadisk_active = 1;
+}
- beta->betadisk_status = 0;
+void beta_disk_device::disable()
+{
+ m_betadisk_active = 0;
}
-static WRITE_LINE_DEVICE_HANDLER( betadisk_wd179x_intrq_w )
+void beta_disk_device::clear_status()
{
- beta_disk_state *beta = get_safe_token(device->owner());
+ m_betadisk_status = 0;
+}
+static WRITE_LINE_DEVICE_HANDLER(wd179x_intrq_w)
+{
+ beta_disk_device *beta = dynamic_cast<beta_disk_device *>(device->owner());
+
if (state)
- beta->betadisk_status |= (1<<7);
+ beta->m_betadisk_status |= (1<<7);
else
- beta->betadisk_status &=~(1<<7);
+ beta->m_betadisk_status &=~(1<<7);
}
-static WRITE_LINE_DEVICE_HANDLER( betadisk_wd179x_drq_w )
+static WRITE_LINE_DEVICE_HANDLER(wd179x_drq_w)
{
- beta_disk_state *beta = get_safe_token(device->owner());
-
+ beta_disk_device *beta = dynamic_cast<beta_disk_device *>(device->owner());
+
if (state)
- beta->betadisk_status |= (1<<6);
+ beta->m_betadisk_status |= (1<<6);
else
- beta->betadisk_status &=~(1<<6);
+ beta->m_betadisk_status &=~(1<<6);
}
static const wd17xx_interface beta_wd17xx_interface =
{
DEVCB_NULL,
- DEVCB_LINE(betadisk_wd179x_intrq_w),
- DEVCB_LINE(betadisk_wd179x_drq_w),
+ DEVCB_LINE(wd179x_intrq_w),
+ DEVCB_LINE(wd179x_drq_w),
{FLOPPY_0, FLOPPY_1, FLOPPY_2, FLOPPY_3}
};
-READ8_DEVICE_HANDLER(betadisk_status_r)
+READ8_MEMBER(beta_disk_device::status_r)
{
- beta_disk_state *beta = get_safe_token(device);
-
- if (beta->betadisk_active==1) {
- return wd17xx_status_r(beta->wd179x, space, offset);
+ if (m_betadisk_active==1) {
+ return wd17xx_status_r(m_wd179x, space, offset);
} else {
return 0xff;
}
}
-READ8_DEVICE_HANDLER(betadisk_track_r)
+READ8_MEMBER(beta_disk_device::track_r)
{
- beta_disk_state *beta = get_safe_token(device);
-
- if (beta->betadisk_active==1) {
- return wd17xx_track_r(beta->wd179x, space, offset);
+ if (m_betadisk_active==1) {
+ return wd17xx_track_r(m_wd179x, space, offset);
} else {
return 0xff;
}
}
-READ8_DEVICE_HANDLER(betadisk_sector_r)
+READ8_MEMBER(beta_disk_device::sector_r)
{
- beta_disk_state *beta = get_safe_token(device);
-
- if (beta->betadisk_active==1) {
- return wd17xx_sector_r(beta->wd179x, space, offset);
+ if (m_betadisk_active==1) {
+ return wd17xx_sector_r(m_wd179x, space, offset);
} else {
return 0xff;
}
}
-READ8_DEVICE_HANDLER(betadisk_data_r)
+READ8_MEMBER(beta_disk_device::data_r)
{
- beta_disk_state *beta = get_safe_token(device);
-
- if (beta->betadisk_active==1) {
- return wd17xx_data_r(beta->wd179x, space, offset);
+ if (m_betadisk_active==1) {
+ return wd17xx_data_r(m_wd179x, space, offset);
} else {
return 0xff;
}
}
-READ8_DEVICE_HANDLER(betadisk_state_r)
+READ8_MEMBER(beta_disk_device::state_r)
{
- beta_disk_state *beta = get_safe_token(device);
-
- if (beta->betadisk_active==1) {
- return beta->betadisk_status;
+ if (m_betadisk_active==1) {
+ return m_betadisk_status;
} else {
return 0xff;
}
}
-WRITE8_DEVICE_HANDLER(betadisk_param_w)
+WRITE8_MEMBER(beta_disk_device::param_w)
{
- beta_disk_state *beta = get_safe_token(device);
-
- if (beta->betadisk_active==1) {
- wd17xx_set_drive(beta->wd179x, data & 3);
- wd17xx_set_side (beta->wd179x,(data & 0x10) ? 0 : 1 );
- wd17xx_dden_w(beta->wd179x, !BIT(data, 5));
+ if (m_betadisk_active==1) {
+ wd17xx_set_drive(m_wd179x, data & 3);
+ wd17xx_set_side (m_wd179x,(data & 0x10) ? 0 : 1 );
+ wd17xx_dden_w(m_wd179x, !BIT(data, 5));
if ((data & 0x04) == 0) // reset
{
- wd17xx_reset(beta->wd179x);
+ wd17xx_reset(m_wd179x);
}
- beta->betadisk_status = (data & 0x3f) | beta->betadisk_status;
+ m_betadisk_status = (data & 0x3f) | m_betadisk_status;
}
}
-WRITE8_DEVICE_HANDLER(betadisk_command_w)
+WRITE8_MEMBER(beta_disk_device::command_w)
{
- beta_disk_state *beta = get_safe_token(device);
-
- if (beta->betadisk_active==1) {
- wd17xx_command_w(beta->wd179x, space, offset, data);
+ if (m_betadisk_active==1) {
+ wd17xx_command_w(m_wd179x, space, offset, data);
}
}
-WRITE8_DEVICE_HANDLER(betadisk_track_w)
+WRITE8_MEMBER(beta_disk_device::track_w)
{
- beta_disk_state *beta = get_safe_token(device);
-
- if (beta->betadisk_active==1) {
- wd17xx_track_w(beta->wd179x, space, offset, data);
+ if (m_betadisk_active==1) {
+ wd17xx_track_w(m_wd179x, space, offset, data);
}
}
-WRITE8_DEVICE_HANDLER(betadisk_sector_w)
+WRITE8_MEMBER(beta_disk_device::sector_w)
{
- beta_disk_state *beta = get_safe_token(device);
-
- if (beta->betadisk_active==1) {
- wd17xx_sector_w(beta->wd179x, space, offset, data);
+ if (m_betadisk_active==1) {
+ wd17xx_sector_w(m_wd179x, space, offset, data);
}
}
-WRITE8_DEVICE_HANDLER(betadisk_data_w)
+WRITE8_MEMBER(beta_disk_device::data_w)
{
- beta_disk_state *beta = get_safe_token(device);
-
- if (beta->betadisk_active==1) {
- wd17xx_data_w(beta->wd179x, space, offset, data);
+ if (m_betadisk_active==1) {
+ wd17xx_data_w(m_wd179x, space, offset, data);
}
}
@@ -302,48 +287,6 @@ ROM_START( beta_disk )
ROM_END
-/*-------------------------------------------------
- DEVICE_START( beta_disk )
--------------------------------------------------*/
-
-static DEVICE_START( beta_disk )
-{
- beta_disk_state *beta = get_safe_token(device);
- astring tempstring;
-
- /* validate arguments */
- assert(device->tag() != NULL);
-
- /* find our WD179x */
- tempstring.printf("%s:%s", device->tag(), "wd179x");
- beta->wd179x = device->machine().device(tempstring);
-}
-
-const device_type BETA_DISK = &device_creator<beta_disk_device>;
-
-beta_disk_device::beta_disk_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, BETA_DISK, "Beta Disk Interface", tag, owner, clock, "betadisk", __FILE__)
-{
- m_token = global_alloc_clear(beta_disk_state);
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void beta_disk_device::device_start()
-{
- DEVICE_START_NAME( beta_disk )(this);
-}
-
-//-------------------------------------------------
-// device_reset - device-specific reset
-//-------------------------------------------------
-
-void beta_disk_device::device_reset()
-{
-}
-
//-------------------------------------------------
// device_mconfig_additions - return a pointer to
// the device's machine fragment
diff --git a/src/mess/machine/beta.h b/src/mess/machine/beta.h
index 6583dd39754..2acc2c708ef 100644
--- a/src/mess/machine/beta.h
+++ b/src/mess/machine/beta.h
@@ -11,30 +11,44 @@
#define __BETA_H__
-int betadisk_is_active(device_t *device);
-void betadisk_enable(device_t *device);
-void betadisk_disable(device_t *device);
-void betadisk_clear_status(device_t *device);
-
#define BETA_DISK_TAG "beta"
class beta_disk_device : public device_t
{
public:
beta_disk_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- ~beta_disk_device() { global_free(m_token); }
-
- // access to legacy token
- void *token() const { assert(m_token != NULL); return m_token; }
+ ~beta_disk_device() {}
+
+ DECLARE_READ8_MEMBER(status_r);
+ DECLARE_READ8_MEMBER(track_r);
+ DECLARE_READ8_MEMBER(sector_r);
+ DECLARE_READ8_MEMBER(data_r);
+ DECLARE_READ8_MEMBER(state_r);
+
+ DECLARE_WRITE8_MEMBER(param_w);
+ DECLARE_WRITE8_MEMBER(command_w);
+ DECLARE_WRITE8_MEMBER(track_w);
+ DECLARE_WRITE8_MEMBER(sector_w);
+ DECLARE_WRITE8_MEMBER(data_w);
+
+ int is_active();
+ void enable();
+ void disable();
+ void clear_status();
+
+ UINT8 m_betadisk_status;
+ UINT8 m_betadisk_active;
+
protected:
// device-level overrides
virtual void device_start();
virtual void device_reset();
virtual const rom_entry *device_rom_region() const;
virtual machine_config_constructor device_mconfig_additions() const;
+
private:
// internal state
- void *m_token;
+ device_t *m_wd179x;
};
extern const device_type BETA_DISK;
@@ -46,15 +60,4 @@ extern const device_type BETA_DISK;
#define MCFG_BETA_DISK_REMOVE(_tag) \
MCFG_DEVICE_REMOVE(_tag)
-DECLARE_READ8_DEVICE_HANDLER(betadisk_status_r);
-DECLARE_READ8_DEVICE_HANDLER(betadisk_track_r);
-DECLARE_READ8_DEVICE_HANDLER(betadisk_sector_r);
-DECLARE_READ8_DEVICE_HANDLER(betadisk_data_r);
-DECLARE_READ8_DEVICE_HANDLER(betadisk_state_r);
-
-DECLARE_WRITE8_DEVICE_HANDLER(betadisk_param_w);
-DECLARE_WRITE8_DEVICE_HANDLER(betadisk_command_w);
-DECLARE_WRITE8_DEVICE_HANDLER(betadisk_track_w);
-DECLARE_WRITE8_DEVICE_HANDLER(betadisk_sector_w);
-DECLARE_WRITE8_DEVICE_HANDLER(betadisk_data_w);
#endif /* __BETA_H__ */