summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/guab.c
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2011-02-17 09:46:47 +0000
committer Aaron Giles <aaron@aarongiles.com>2011-02-17 09:46:47 +0000
commiteab7b082057af23207c98c2702695fb91e0d40b5 (patch)
treecc68ac08ee0372306eff734dc20c7ec00bfb9c65 /src/mame/drivers/guab.c
parent8e5664b17816a8dce9f6aa891418f5c31336cfc6 (diff)
Eliminate statics/globals in drivers jpm/kaneko/maygay/meadows/merit/
metro/midcoin/midw8080/midway/msx/namco. [Atari Ace] Hi mamedev, More driver_device conversions. I also handled some missed variables in earlier conversions (bfcobra/cinemat/segas32/taitowlf), and provided a fix (hopefully correct) for bug "03766: cartfury, roadburn, sf2049 + clones: Crash before OK" in audio/dcs.c so I could at least start drivers\vegas.c to check my changes. ~aa
Diffstat (limited to 'src/mame/drivers/guab.c')
-rw-r--r--src/mame/drivers/guab.c81
1 files changed, 53 insertions, 28 deletions
diff --git a/src/mame/drivers/guab.c b/src/mame/drivers/guab.c
index 6d926e3a6dd..999091f64c0 100644
--- a/src/mame/drivers/guab.c
+++ b/src/mame/drivers/guab.c
@@ -52,6 +52,38 @@ enum int_levels
};
+struct ef9369
+{
+ UINT32 addr;
+ UINT16 clut[16]; /* 13-bits - a marking bit and a 444 color */
+};
+
+
+struct wd1770
+{
+ UINT32 status;
+ UINT8 cmd;
+ UINT8 data;
+
+ UINT32 side;
+ INT32 track;
+ INT32 sector;
+ UINT32 sptr;
+};
+
+
+class guab_state : public driver_device
+{
+public:
+ guab_state(running_machine &machine, const driver_device_config_base &config)
+ : driver_device(machine, config) { }
+
+ struct ef9369 pal;
+ emu_timer *fdc_timer;
+ struct wd1770 fdc;
+};
+
+
/*************************************
*
* 6840 PTM
@@ -142,16 +174,11 @@ static READ16_HANDLER( guab_tms34061_r )
* (16 colors from 4096)
****************************/
-static struct ef9369
-{
- UINT32 addr;
- UINT16 clut[16]; /* 13-bits - a marking bit and a 444 color */
-} pal;
-
-
/* Non-multiplexed mode */
static WRITE16_HANDLER( ef9369_w )
{
+ guab_state *state = space->machine->driver_data<guab_state>();
+ struct ef9369 &pal = state->pal;
data &= 0x00ff;
/* Address register */
@@ -191,6 +218,8 @@ static WRITE16_HANDLER( ef9369_w )
static READ16_HANDLER( ef9369_r )
{
+ guab_state *state = space->machine->driver_data<guab_state>();
+ struct ef9369 &pal = state->pal;
if ((offset & 1) == 0)
{
UINT16 col = pal.clut[pal.addr >> 1];
@@ -254,20 +283,6 @@ static VIDEO_UPDATE( guab )
*
*************************************/
-static struct wd1770
-{
- UINT32 status;
- UINT8 cmd;
- UINT8 data;
-
- UINT32 side;
- INT32 track;
- INT32 sector;
- UINT32 sptr;
-} fdc;
-
-static emu_timer *fdc_timer;
-
#define USEC_DELAY 40
#define DISK_SIDES 2
#define DISK_TRACKS 80
@@ -295,6 +310,8 @@ enum wd1770_status
static TIMER_CALLBACK( fdc_data_callback )
{
+ guab_state *state = machine->driver_data<guab_state>();
+ struct wd1770 &fdc = state->fdc;
UINT8* disk = (UINT8*)machine->region("user1")->base();
int more_data = 0;
@@ -341,7 +358,7 @@ static TIMER_CALLBACK( fdc_data_callback )
if (more_data)
{
- fdc_timer->adjust(attotime::from_usec(USEC_DELAY));
+ state->fdc_timer->adjust(attotime::from_usec(USEC_DELAY));
}
else
{
@@ -357,6 +374,8 @@ static TIMER_CALLBACK( fdc_data_callback )
static WRITE16_HANDLER( wd1770_w )
{
+ guab_state *state = space->machine->driver_data<guab_state>();
+ struct wd1770 &fdc = state->fdc;
data &= 0xff;
switch (offset)
@@ -426,7 +445,7 @@ static WRITE16_HANDLER( wd1770_w )
fdc.sector));
/* Set the data read timer */
- fdc_timer->adjust(attotime::from_usec(USEC_DELAY));
+ state->fdc_timer->adjust(attotime::from_usec(USEC_DELAY));
break;
}
@@ -463,7 +482,7 @@ static WRITE16_HANDLER( wd1770_w )
case 13:
{
/* Stop any operation in progress */
- fdc_timer->reset();
+ state->fdc_timer->reset();
fdc.status &= ~BUSY;
FDC_LOG(("Force Interrupt\n"));
break;
@@ -494,7 +513,7 @@ static WRITE16_HANDLER( wd1770_w )
/* Queue an event to write the data if write command was specified */
if (fdc.cmd & 0x20)
- fdc_timer->adjust(attotime::from_usec(USEC_DELAY));
+ state->fdc_timer->adjust(attotime::from_usec(USEC_DELAY));
break;
}
@@ -503,6 +522,8 @@ static WRITE16_HANDLER( wd1770_w )
static READ16_HANDLER( wd1770_r )
{
+ guab_state *state = space->machine->driver_data<guab_state>();
+ struct wd1770 &fdc = state->fdc;
UINT16 retval = 0;
switch (offset)
@@ -589,6 +610,8 @@ static INPUT_CHANGED( coin_inserted )
static WRITE16_HANDLER( io_w )
{
+ guab_state *state = space->machine->driver_data<guab_state>();
+ struct wd1770 &fdc = state->fdc;
switch (offset)
{
case 0x10:
@@ -752,15 +775,17 @@ INPUT_PORTS_END
static MACHINE_START( guab )
{
- fdc_timer = machine->scheduler().timer_alloc(FUNC(fdc_data_callback));
+ guab_state *state = machine->driver_data<guab_state>();
+ state->fdc_timer = machine->scheduler().timer_alloc(FUNC(fdc_data_callback));
}
static MACHINE_RESET( guab )
{
- memset(&fdc, 0, sizeof(fdc));
+ guab_state *state = machine->driver_data<guab_state>();
+ memset(&state->fdc, 0, sizeof(state->fdc));
}
-static MACHINE_CONFIG_START( guab, driver_device )
+static MACHINE_CONFIG_START( guab, guab_state )
/* TODO: Verify clock */
MCFG_CPU_ADD("maincpu", M68000, 8000000)
MCFG_CPU_PROGRAM_MAP(guab_map)