summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2014-03-16 09:04:10 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2014-03-16 09:04:10 +0000
commit75317b8043b0ccffe3cf42ceb49483fd6b270b8b (patch)
treeed49e7406730c23fb552ec67e0c427d22de2f027
parente52971111c9d3adfa05110720c3e919ee0b8131f (diff)
some more cleanup (nw)
-rw-r--r--src/mess/drivers/esqasr.c13
-rw-r--r--src/mess/drivers/esqkt.c11
-rw-r--r--src/mess/drivers/esqmr.c10
-rw-r--r--src/mess/drivers/qx10.c4
-rw-r--r--src/mess/includes/partner.h9
-rw-r--r--src/mess/machine/partner.c44
6 files changed, 52 insertions, 39 deletions
diff --git a/src/mess/drivers/esqasr.c b/src/mess/drivers/esqasr.c
index d3001da909d..31526450470 100644
--- a/src/mess/drivers/esqasr.c
+++ b/src/mess/drivers/esqasr.c
@@ -59,8 +59,9 @@ public:
virtual void machine_reset();
-public:
- DECLARE_DRIVER_INIT(asr);
+ DECLARE_DRIVER_INIT(asr);
+ DECLARE_WRITE_LINE_MEMBER(esq5506_otto_irq);
+ DECLARE_READ16_MEMBER(esq5506_read_adc);
};
void esqasr_state::machine_reset()
@@ -78,11 +79,11 @@ static ADDRESS_MAP_START( asrx_map, AS_PROGRAM, 32, esqasr_state )
AM_RANGE(0x0be00000, 0x0befffff) AM_RAM
ADDRESS_MAP_END
-static void esq5506_otto_irq(device_t *device, int state)
+WRITE_LINE_MEMBER(esqasr_state::esq5506_otto_irq)
{
}
-static READ16_DEVICE_HANDLER(esq5506_read_adc)
+READ16_MEMBER(esqasr_state::esq5506_read_adc)
{
return 0;
}
@@ -94,8 +95,8 @@ static const es5506_interface es5506_config =
"waverom3", /* Bank 0 */
"waverom4", /* Bank 1 */
1, /* channels */
- DEVCB_LINE(esq5506_otto_irq), /* irq */
- DEVCB_DEVICE_HANDLER(DEVICE_SELF, esq5506_read_adc)
+ DEVCB_DRIVER_LINE_MEMBER(esqasr_state,esq5506_otto_irq), /* irq */
+ DEVCB_DRIVER_MEMBER16(esqasr_state, esq5506_read_adc)
};
static MACHINE_CONFIG_START( asr, esqasr_state )
diff --git a/src/mess/drivers/esqkt.c b/src/mess/drivers/esqkt.c
index 4b188b33332..442ed018a85 100644
--- a/src/mess/drivers/esqkt.c
+++ b/src/mess/drivers/esqkt.c
@@ -66,6 +66,7 @@ public:
DECLARE_DRIVER_INIT(kt);
DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
DECLARE_WRITE_LINE_MEMBER(esq5506_otto_irq);
+ DECLARE_READ16_MEMBER(esq5506_read_adc);
};
void esqkt_state::machine_reset()
@@ -138,11 +139,9 @@ WRITE_LINE_MEMBER(esqkt_state::esq5506_otto_irq)
#endif
}
-static READ16_DEVICE_HANDLER(esq5506_read_adc)
+READ16_MEMBER(esqkt_state::esq5506_read_adc)
{
- esqkt_state *state = device->machine().driver_data<esqkt_state>();
-
- switch ((state->m_duart_io & 7) ^ 7)
+ switch ((m_duart_io & 7) ^ 7)
{
case 0: // vRef to check battery
return 0x5b00;
@@ -154,7 +153,7 @@ static READ16_DEVICE_HANDLER(esq5506_read_adc)
return 0;
}
- if (state->m_duart_io & 1)
+ if (m_duart_io & 1)
{
return 0x5b00; // vRef
}
@@ -194,7 +193,7 @@ static const es5506_interface es5506_config =
"waverom4", /* Bank 1 */
1, /* channels */
DEVCB_DRIVER_LINE_MEMBER(esqkt_state,esq5506_otto_irq), /* irq */
- DEVCB_DEVICE_HANDLER(DEVICE_SELF, esq5506_read_adc)
+ DEVCB_DRIVER_MEMBER16(esqkt_state, esq5506_read_adc)
};
static const es5506_interface es5506_2_config =
diff --git a/src/mess/drivers/esqmr.c b/src/mess/drivers/esqmr.c
index 9fb6824b662..b81e628b7f8 100644
--- a/src/mess/drivers/esqmr.c
+++ b/src/mess/drivers/esqmr.c
@@ -37,6 +37,8 @@ public:
public:
DECLARE_DRIVER_INIT(mr);
+ DECLARE_WRITE_LINE_MEMBER(esq5506_otto_irq);
+ DECLARE_READ16_MEMBER(esq5506_read_adc);
};
void esqmr_state::machine_reset()
@@ -50,11 +52,11 @@ static ADDRESS_MAP_START( mr_map, AS_PROGRAM, 32, esqmr_state )
// AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram")
ADDRESS_MAP_END
-static void esq5506_otto_irq(device_t *device, int state)
+WRITE_LINE_MEMBER(esqmr_state::esq5506_otto_irq)
{
}
-static READ16_DEVICE_HANDLER(esq5506_read_adc)
+READ16_MEMBER(esqmr_state::esq5506_read_adc)
{
return 0;
}
@@ -66,8 +68,8 @@ static const es5506_interface es5506_config =
"waverom3", /* Bank 0 */
"waverom4", /* Bank 1 */
1, /* channels */
- DEVCB_LINE(esq5506_otto_irq), /* irq */
- DEVCB_DEVICE_HANDLER(DEVICE_SELF, esq5506_read_adc)
+ DEVCB_DRIVER_LINE_MEMBER(esqmr_state,esq5506_otto_irq), /* irq */
+ DEVCB_DRIVER_MEMBER16(esqmr_state, esq5506_read_adc)
};
static const es5506_interface es5506_2_config =
diff --git a/src/mess/drivers/qx10.c b/src/mess/drivers/qx10.c
index 23b81de6250..17fb2d93b99 100644
--- a/src/mess/drivers/qx10.c
+++ b/src/mess/drivers/qx10.c
@@ -408,8 +408,8 @@ static I8237_INTERFACE( qx10_dma8237_1_interface )
DEVCB_DRIVER_LINE_MEMBER(qx10_state, tc_w),
DEVCB_DRIVER_MEMBER(qx10_state, memory_read_byte),
DEVCB_DRIVER_MEMBER(qx10_state, memory_write_byte),
- { DEVCB_DRIVER_MEMBER(qx10_state, fdc_dma_r), DEVCB_DRIVER_MEMBER(qx10_state, gdc_dack_r),/*DEVCB_DEVICE_HANDLER("upd7220", upd7220_dack_r)*/ DEVCB_NULL, DEVCB_NULL },
- { DEVCB_DRIVER_MEMBER(qx10_state, fdc_dma_w), DEVCB_DRIVER_MEMBER(qx10_state, gdc_dack_w),/*DEVCB_DEVICE_HANDLER("upd7220", upd7220_dack_w)*/ DEVCB_NULL, DEVCB_NULL },
+ { DEVCB_DRIVER_MEMBER(qx10_state, fdc_dma_r), DEVCB_DRIVER_MEMBER(qx10_state, gdc_dack_r),/*DEVCB_DEVICE_MEMBER("upd7220", upd7220_device, dack_r)*/ DEVCB_NULL, DEVCB_NULL },
+ { DEVCB_DRIVER_MEMBER(qx10_state, fdc_dma_w), DEVCB_DRIVER_MEMBER(qx10_state, gdc_dack_w),/*DEVCB_DEVICE_MEMBER("upd7220", upd7220_device, dack_w)*/ DEVCB_NULL, DEVCB_NULL },
{ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }
};
diff --git a/src/mess/includes/partner.h b/src/mess/includes/partner.h
index a518f8bb013..2d28dbb3818 100644
--- a/src/mess/includes/partner.h
+++ b/src/mess/includes/partner.h
@@ -17,7 +17,8 @@ class partner_state : public radio86_state
public:
partner_state(const machine_config &mconfig, device_type type, const char *tag)
: radio86_state(mconfig, type, tag),
- m_ram(*this, RAM_TAG) { }
+ m_ram(*this, RAM_TAG),
+ m_fdc(*this, "wd1793") { }
UINT8 m_mem_page;
UINT8 m_win_mem_page;
@@ -30,11 +31,17 @@ public:
DECLARE_MACHINE_RESET(partner);
DECLARE_WRITE_LINE_MEMBER(partner_wd17xx_drq_w);
DECLARE_WRITE_LINE_MEMBER(hrq_w);
+
+ //to remove trampoline once it use new wd17xx core
+ DECLARE_READ8_MEMBER(partner_fdc_r);
+ DECLARE_WRITE8_MEMBER(partner_fdc_w);
+
void partner_window_1(UINT8 bank_num, UINT16 offset,UINT8 *rom);
void partner_window_2(UINT8 bank_num, UINT16 offset,UINT8 *rom);
void partner_iomap_bank(UINT8 *rom);
void partner_bank_switch();
required_device<ram_device> m_ram;
+ required_device<fd1793_device> m_fdc;
};
diff --git a/src/mess/machine/partner.c b/src/mess/machine/partner.c
index 302d55fe9db..476f2ca96e6 100644
--- a/src/mess/machine/partner.c
+++ b/src/mess/machine/partner.c
@@ -43,8 +43,7 @@ const wd17xx_interface partner_wd17xx_interface =
MACHINE_START_MEMBER(partner_state,partner)
{
- device_t *fdc = machine().device("wd1793");
- wd17xx_set_pause_time(fdc, 10);
+ wd17xx_set_pause_time(m_fdc, 10);
}
void partner_state::partner_window_1(UINT8 bank_num, UINT16 offset,UINT8 *rom)
@@ -78,16 +77,14 @@ void partner_state::partner_window_2(UINT8 bank_num, UINT16 offset,UINT8 *rom)
}
}
-READ8_MEMBER(partner_state::partner_floppy_r){
- device_t *fdc = machine().device("wd1793");
-
+READ8_MEMBER(partner_state::partner_floppy_r){
if (offset<0x100) {
switch(offset & 3) {
- case 0x00 : return wd17xx_status_r(fdc,space, 0);
- case 0x01 : return wd17xx_track_r(fdc,space, 0);
- case 0x02 : return wd17xx_sector_r(fdc,space, 0);
+ case 0x00 : return wd17xx_status_r(m_fdc,space, 0);
+ case 0x01 : return wd17xx_track_r(m_fdc,space, 0);
+ case 0x02 : return wd17xx_sector_r(m_fdc,space, 0);
default :
- return wd17xx_data_r(fdc,space, 0);
+ return wd17xx_data_r(m_fdc,space, 0);
}
} else {
return 0;
@@ -95,29 +92,27 @@ READ8_MEMBER(partner_state::partner_floppy_r){
}
WRITE8_MEMBER(partner_state::partner_floppy_w){
- device_t *fdc = machine().device("wd1793");
-
if (offset<0x100) {
switch(offset & 3) {
- case 0x00 : wd17xx_command_w(fdc,space, 0,data); break;
- case 0x01 : wd17xx_track_w(fdc,space, 0,data);break;
- case 0x02 : wd17xx_sector_w(fdc,space, 0,data);break;
- default : wd17xx_data_w(fdc,space, 0,data);break;
+ case 0x00 : wd17xx_command_w(m_fdc,space, 0,data); break;
+ case 0x01 : wd17xx_track_w(m_fdc,space, 0,data);break;
+ case 0x02 : wd17xx_sector_w(m_fdc,space, 0,data);break;
+ default : wd17xx_data_w(m_fdc,space, 0,data);break;
}
} else {
floppy_mon_w(floppy_get_device(machine(), 0), 1);
floppy_mon_w(floppy_get_device(machine(), 1), 1);
if (((data >> 6) & 1)==1) {
- wd17xx_set_drive(fdc,0);
+ wd17xx_set_drive(m_fdc,0);
floppy_mon_w(floppy_get_device(machine(), 0), 0);
floppy_drive_set_ready_state(floppy_get_device(machine(), 0), 1, 1);
}
if (((data >> 3) & 1)==1) {
- wd17xx_set_drive(fdc,1);
+ wd17xx_set_drive(m_fdc,1);
floppy_mon_w(floppy_get_device(machine(), 1), 0);
floppy_drive_set_ready_state(floppy_get_device(machine(), 1), 1, 1);
}
- wd17xx_set_side(fdc,data >> 7);
+ wd17xx_set_side(m_fdc,data >> 7);
}
}
@@ -363,6 +358,15 @@ WRITE_LINE_MEMBER(partner_state::hrq_w)
machine().device<i8257_device>("dma8257")->i8257_hlda_w(state);
}
+READ8_MEMBER(partner_state::partner_fdc_r)
+{
+ return wd17xx_data_r(m_fdc,space,offset);
+}
+WRITE8_MEMBER(partner_state::partner_fdc_w)
+{
+ wd17xx_data_w(m_fdc,space,offset,data);
+}
+
I8257_INTERFACE( partner_dma )
{
DEVCB_DRIVER_LINE_MEMBER(partner_state,hrq_w),
@@ -370,8 +374,8 @@ I8257_INTERFACE( partner_dma )
DEVCB_NULL,
DEVCB_DRIVER_MEMBER(radio86_state, memory_read_byte),
DEVCB_DRIVER_MEMBER(radio86_state, memory_write_byte),
- { DEVCB_DEVICE_HANDLER("wd1793", wd17xx_data_r), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
- { DEVCB_DEVICE_HANDLER("wd1793", wd17xx_data_w), DEVCB_NULL, DEVCB_DEVICE_MEMBER("i8275", i8275_device, dack_w), DEVCB_NULL }
+ { DEVCB_DRIVER_MEMBER(partner_state, partner_fdc_r), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL },
+ { DEVCB_DRIVER_MEMBER(partner_state, partner_fdc_w), DEVCB_NULL, DEVCB_DEVICE_MEMBER("i8275", i8275_device, dack_w), DEVCB_NULL }
};