summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/dmv.cpp
diff options
context:
space:
mode:
author andreasnaive <andreasnaive@gmail.com>2019-03-25 23:13:40 +0100
committer andreasnaive <andreasnaive@gmail.com>2019-03-25 23:13:40 +0100
commitb380514764cf857469bae61c11143a19f79a74c5 (patch)
tree63c8012e262618f08a332da31dd714281aa2c5ed /src/mame/drivers/dmv.cpp
parentc24473ddff715ecec2e258a6eb38960cf8c8e98e (diff)
Revert "conflict resolution (nw)"
This reverts commit c24473ddff715ecec2e258a6eb38960cf8c8e98e, reversing changes made to 009cba4fb8102102168ef32870892438327f3705.
Diffstat (limited to 'src/mame/drivers/dmv.cpp')
-rw-r--r--src/mame/drivers/dmv.cpp185
1 files changed, 94 insertions, 91 deletions
diff --git a/src/mame/drivers/dmv.cpp b/src/mame/drivers/dmv.cpp
index 4c98414e380..23af1f0590d 100644
--- a/src/mame/drivers/dmv.cpp
+++ b/src/mame/drivers/dmv.cpp
@@ -127,21 +127,21 @@ private:
DECLARE_FLOPPY_FORMATS( floppy_formats );
DECLARE_QUICKLOAD_LOAD_MEMBER(dmv);
- uint8_t program_read(int cas, offs_t offset);
- void program_write(int cas, offs_t offset, uint8_t data);
-
- void ifsel_r(int ifsel, offs_t offset, uint8_t &data);
- void ifsel_w(int ifsel, offs_t offset, uint8_t data);
- DECLARE_READ8_MEMBER(ifsel0_r) { uint8_t data = 0xff; ifsel_r(0, offset, data); return data; }
- DECLARE_READ8_MEMBER(ifsel1_r) { uint8_t data = 0xff; ifsel_r(1, offset, data); return data; }
- DECLARE_READ8_MEMBER(ifsel2_r) { uint8_t data = 0xff; ifsel_r(2, offset, data); return data; }
- DECLARE_READ8_MEMBER(ifsel3_r) { uint8_t data = 0xff; ifsel_r(3, offset, data); return data; }
- DECLARE_READ8_MEMBER(ifsel4_r) { uint8_t data = 0xff; ifsel_r(4, offset, data); return data; }
- DECLARE_WRITE8_MEMBER(ifsel0_w) { ifsel_w(0, offset, data); }
- DECLARE_WRITE8_MEMBER(ifsel1_w) { ifsel_w(1, offset, data); }
- DECLARE_WRITE8_MEMBER(ifsel2_w) { ifsel_w(2, offset, data); }
- DECLARE_WRITE8_MEMBER(ifsel3_w) { ifsel_w(3, offset, data); }
- DECLARE_WRITE8_MEMBER(ifsel4_w) { ifsel_w(4, offset, data); }
+ uint8_t program_read(address_space &space, int cas, offs_t offset);
+ void program_write(address_space &space, int cas, offs_t offset, uint8_t data);
+
+ void ifsel_r(address_space &space, int ifsel, offs_t offset, uint8_t &data);
+ void ifsel_w(address_space &space, int ifsel, offs_t offset, uint8_t data);
+ DECLARE_READ8_MEMBER(ifsel0_r) { uint8_t data = 0xff; ifsel_r(space, 0, offset, data); return data; }
+ DECLARE_READ8_MEMBER(ifsel1_r) { uint8_t data = 0xff; ifsel_r(space, 1, offset, data); return data; }
+ DECLARE_READ8_MEMBER(ifsel2_r) { uint8_t data = 0xff; ifsel_r(space, 2, offset, data); return data; }
+ DECLARE_READ8_MEMBER(ifsel3_r) { uint8_t data = 0xff; ifsel_r(space, 3, offset, data); return data; }
+ DECLARE_READ8_MEMBER(ifsel4_r) { uint8_t data = 0xff; ifsel_r(space, 4, offset, data); return data; }
+ DECLARE_WRITE8_MEMBER(ifsel0_w) { ifsel_w(space, 0, offset, data); }
+ DECLARE_WRITE8_MEMBER(ifsel1_w) { ifsel_w(space, 1, offset, data); }
+ DECLARE_WRITE8_MEMBER(ifsel2_w) { ifsel_w(space, 2, offset, data); }
+ DECLARE_WRITE8_MEMBER(ifsel3_w) { ifsel_w(space, 3, offset, data); }
+ DECLARE_WRITE8_MEMBER(ifsel4_w) { ifsel_w(space, 4, offset, data); }
UPD7220_DISPLAY_PIXELS_MEMBER( hgdc_display_pixels );
UPD7220_DRAW_TEXT_LINE_MEMBER( hgdc_draw_text );
@@ -426,36 +426,38 @@ static void dmv_floppies(device_slot_interface &device)
}
-void dmv_state::ifsel_r(int ifsel, offs_t offset, uint8_t &data)
+void dmv_state::ifsel_r(address_space &space, int ifsel, offs_t offset, uint8_t &data)
{
- for (auto &slot : { m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a })
- slot->io_read(ifsel, offset, data);
+ dmvcart_slot_device *slots[] = { m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a };
+ for(auto & slot : slots)
+ slot->io_read(space, ifsel, offset, data);
}
-void dmv_state::ifsel_w(int ifsel, offs_t offset, uint8_t data)
+void dmv_state::ifsel_w(address_space &space, int ifsel, offs_t offset, uint8_t data)
{
- for(auto &slot : { m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a })
- slot->io_write(ifsel, offset, data);
+ dmvcart_slot_device *slots[] = { m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a };
+ for(auto & slot : slots)
+ slot->io_write(space, ifsel, offset, data);
}
WRITE8_MEMBER(dmv_state::exp_program_w)
{
- program_write((offset >> 16) & 0x07, offset, data);
+ program_write(space, (offset >> 16) & 0x07, offset, data);
}
READ8_MEMBER(dmv_state::exp_program_r)
{
- return program_read((offset >> 16) & 0x07, offset);
+ return program_read(space, (offset >> 16) & 0x07, offset);
}
WRITE8_MEMBER(dmv_state::program_w)
{
- program_write(m_ram_bank, offset, data);
+ program_write(space, m_ram_bank, offset, data);
}
READ8_MEMBER(dmv_state::program_r)
{
- return program_read(m_ram_bank, offset);
+ return program_read(space, m_ram_bank, offset);
}
WRITE_LINE_MEMBER( dmv_state::thold7_w )
@@ -517,7 +519,7 @@ void dmv_state::update_irqs(int slot, int state)
}
}
-void dmv_state::program_write(int cas, offs_t offset, uint8_t data)
+void dmv_state::program_write(address_space &space, int cas, offs_t offset, uint8_t data)
{
bool tramd = false;
dmvcart_slot_device *slots[] = { m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a };
@@ -533,7 +535,7 @@ void dmv_state::program_write(int cas, offs_t offset, uint8_t data)
}
}
-uint8_t dmv_state::program_read(int cas, offs_t offset)
+uint8_t dmv_state::program_read(address_space &space, int cas, offs_t offset)
{
uint8_t data = 0xff;
if (m_ramoutdis && offset < 0x2000)
@@ -773,38 +775,37 @@ static void dmv_slot7a(device_slot_interface &device)
device.option_add("k235", DMV_K235); // K235 Internal 8088 module with interrupt controller
}
-void dmv_state::dmv(machine_config &config)
-{
+MACHINE_CONFIG_START(dmv_state::dmv)
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(24'000'000) / 6);
- m_maincpu->set_addrmap(AS_PROGRAM, &dmv_state::dmv_mem);
- m_maincpu->set_addrmap(AS_IO, &dmv_state::dmv_io);
+ MCFG_DEVICE_ADD("maincpu",Z80, XTAL(24'000'000) / 6)
+ MCFG_DEVICE_PROGRAM_MAP(dmv_mem)
+ MCFG_DEVICE_IO_MAP(dmv_io)
i8741_device &kbmcu(I8741(config, "kb_ctrl_mcu", XTAL(6'000'000)));
kbmcu.p1_in_cb().set(FUNC(dmv_state::kb_mcu_port1_r)); // bit 0 data from kb
kbmcu.p1_out_cb().set(FUNC(dmv_state::kb_mcu_port1_w)); // bit 1 data to kb
kbmcu.p2_out_cb().set(FUNC(dmv_state::kb_mcu_port2_w));
- config.m_perfect_cpu_quantum = subtag("maincpu");
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
DMV_KEYBOARD(config, m_keyboard, 0);
/* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(50);
- m_screen->set_screen_update("upd7220", FUNC(upd7220_device::screen_update));
- m_screen->set_size(640, 400);
- m_screen->set_visarea(0, 640-1, 0, 400-1);
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)
+ MCFG_SCREEN_SIZE(640, 400)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
- GFXDECODE(config, "gfxdecode", m_palette, gfx_dmv);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dmv)
PALETTE(config, m_palette, palette_device::RGB_3BIT);
config.set_default_layout(layout_dmv);
// devices
UPD7220(config, m_hgdc, XTAL(5'000'000)/2); // unk clock
m_hgdc->set_addrmap(0, &dmv_state::upd7220_map);
- m_hgdc->set_display_pixels(FUNC(dmv_state::hgdc_display_pixels));
- m_hgdc->set_draw_text(FUNC(dmv_state::hgdc_draw_text));
+ m_hgdc->set_display_pixels_callback(FUNC(dmv_state::hgdc_display_pixels), this);
+ m_hgdc->set_draw_text_callback(FUNC(dmv_state::hgdc_draw_text), this);
AM9517A(config, m_dmac, 4_MHz_XTAL);
m_dmac->out_hreq_callback().set(FUNC(dmv_state::dma_hrq_changed));
@@ -817,15 +818,15 @@ void dmv_state::dmv(machine_config &config)
m_dmac->out_iow_callback<1>().set_log("Write DMA CH2");
m_dmac->in_ior_callback<2>().set(m_hgdc, FUNC(upd7220_device::dack_r));
m_dmac->out_iow_callback<2>().set(m_hgdc, FUNC(upd7220_device::dack_w));
- m_dmac->in_ior_callback<3>().set(m_fdc, FUNC(i8272a_device::dma_r));
- m_dmac->out_iow_callback<3>().set(m_fdc, FUNC(i8272a_device::dma_w));
+ m_dmac->in_ior_callback<3>().set(m_fdc, FUNC(i8272a_device::mdma_r));
+ m_dmac->out_iow_callback<3>().set(m_fdc, FUNC(i8272a_device::mdma_w));
m_dmac->out_dack_callback<3>().set(FUNC(dmv_state::dmac_dack3));
I8272A(config, m_fdc, 8'000'000, true);
m_fdc->intrq_wr_callback().set(FUNC(dmv_state::fdc_irq));
m_fdc->drq_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq3_w));
- FLOPPY_CONNECTOR(config, "i8272:0", dmv_floppies, "525dd", dmv_state::floppy_formats);
- FLOPPY_CONNECTOR(config, "i8272:1", dmv_floppies, "525dd", dmv_state::floppy_formats);
+ MCFG_FLOPPY_DRIVE_ADD("i8272:0", dmv_floppies, "525dd", dmv_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("i8272:1", dmv_floppies, "525dd", dmv_state::floppy_formats)
PIT8253(config, m_pit, 0);
m_pit->set_clk<0>(50);
@@ -835,52 +836,54 @@ void dmv_state::dmv(machine_config &config)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
-
- DMVCART_SLOT(config, m_slot1, dmv_slot1, nullptr);
- DMVCART_SLOT(config, m_slot2, dmv_slot2_6, nullptr);
- m_slot2->out_int().set(FUNC(dmv_state::busint2_w));
- m_slot2->out_irq().set(FUNC(dmv_state::irq2_w));
- DMVCART_SLOT(config, m_slot2a, dmv_slot2a, nullptr);
- m_slot2a->out_int().set(FUNC(dmv_state::busint2a_w));
- m_slot2a->out_irq().set(FUNC(dmv_state::irq2a_w));
- DMVCART_SLOT(config, m_slot3, dmv_slot2_6, nullptr);
- m_slot3->out_int().set(FUNC(dmv_state::busint3_w));
- m_slot3->out_irq().set(FUNC(dmv_state::irq3_w));
- DMVCART_SLOT(config, m_slot4, dmv_slot2_6, nullptr);
- m_slot4->out_int().set(FUNC(dmv_state::busint4_w));
- m_slot4->out_irq().set(FUNC(dmv_state::irq4_w));
- DMVCART_SLOT(config, m_slot5, dmv_slot2_6, nullptr);
- m_slot5->out_int().set(FUNC(dmv_state::busint5_w));
- m_slot5->out_irq().set(FUNC(dmv_state::irq5_w));
- DMVCART_SLOT(config, m_slot6, dmv_slot2_6, nullptr);
- m_slot6->out_int().set(FUNC(dmv_state::busint6_w));
- m_slot6->out_irq().set(FUNC(dmv_state::irq6_w));
-
- DMVCART_SLOT(config, m_slot7, dmv_slot7, nullptr);
- m_slot7->prog_read().set(FUNC(dmv_state::exp_program_r));
- m_slot7->prog_write().set(FUNC(dmv_state::exp_program_w));
- m_slot7->out_thold().set(FUNC(dmv_state::thold7_w));
- m_slot7->out_int().set(FUNC(dmv_state::busint7_w));
- m_slot7->out_irq().set(FUNC(dmv_state::irq7_w));
- DMVCART_SLOT(config, m_slot7a, dmv_slot7a, "k230");
- m_slot7a->prog_read().set(FUNC(dmv_state::exp_program_r));
- m_slot7a->prog_write().set(FUNC(dmv_state::exp_program_w));
- m_slot7a->out_thold().set(FUNC(dmv_state::thold7_w));
- m_slot7a->out_int().set(FUNC(dmv_state::busint7a_w));
- m_slot7a->out_irq().set(FUNC(dmv_state::irq7a_w));
-
- for (auto &slot : { m_slot1, m_slot2, m_slot2a, m_slot3, m_slot4, m_slot5, m_slot6, m_slot7, m_slot7a })
- {
- slot->set_memspace(m_maincpu, AS_PROGRAM);
- slot->set_iospace(m_maincpu, AS_IO);
- }
-
- SOFTWARE_LIST(config, "flop_list").set_original("dmv");
-
- quickload_image_device &quickload(QUICKLOAD(config, "quickload"));
- quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(dmv_state, dmv), this), "com,cpm", attotime::from_seconds(3));
-}
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
+ MCFG_DEVICE_ADD("slot1", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot1, nullptr, false)
+ MCFG_DEVICE_ADD("slot2", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, nullptr, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint2_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq2_w))
+ MCFG_DEVICE_ADD("slot2a", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2a, nullptr, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint2a_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq2a_w))
+ MCFG_DEVICE_ADD("slot3", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, nullptr, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint3_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq3_w))
+ MCFG_DEVICE_ADD("slot4", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, nullptr, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint4_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq4_w))
+ MCFG_DEVICE_ADD("slot5", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, nullptr, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint5_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq5_w))
+ MCFG_DEVICE_ADD("slot6", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, nullptr, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint6_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq6_w))
+
+ MCFG_DEVICE_ADD("slot7", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7, nullptr, false)
+ MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(*this, dmv_state, exp_program_r), WRITE8(*this, dmv_state, exp_program_w))
+ MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(*this, dmv_state, thold7_w))
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint7_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq7_w))
+ MCFG_DEVICE_ADD("slot7a", DMVCART_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7a, "k230", false)
+ MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(*this, dmv_state, exp_program_r), WRITE8(*this, dmv_state, exp_program_w))
+ MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(*this, dmv_state, thold7_w))
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(*this, dmv_state, busint7a_w))
+ MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(*this, dmv_state, irq7a_w))
+
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "dmv")
+
+ MCFG_QUICKLOAD_ADD("quickload", dmv_state, dmv, "com,cpm", 3)
+
+MACHINE_CONFIG_END
/* ROM definition */
ROM_START( dmv )