summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/ieee488/c8050.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/ieee488/c8050.cpp')
-rw-r--r--src/devices/bus/ieee488/c8050.cpp97
1 files changed, 52 insertions, 45 deletions
diff --git a/src/devices/bus/ieee488/c8050.cpp b/src/devices/bus/ieee488/c8050.cpp
index 9594b26cf7e..d6ed177c356 100644
--- a/src/devices/bus/ieee488/c8050.cpp
+++ b/src/devices/bus/ieee488/c8050.cpp
@@ -25,6 +25,9 @@
#include "emu.h"
#include "c8050.h"
+#include "formats/d80_dsk.h"
+#include "formats/d82_dsk.h"
+
//**************************************************************************
@@ -53,10 +56,10 @@ enum
// DEVICE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(C8050, c8050_device, "c8050", "Commodore 8050")
-DEFINE_DEVICE_TYPE(C8250, c8250_device, "c8250", "Commodore 8250")
-DEFINE_DEVICE_TYPE(C8250LP, c8250lp_device, "c8250lp", "Commodore 8250LP")
-DEFINE_DEVICE_TYPE(SFD1001, sfd1001_device, "sfd10001", "Commodore SFD-1001")
+DEFINE_DEVICE_TYPE(C8050, c8050_device, "c8050", "Commodore 8050")
+DEFINE_DEVICE_TYPE(C8250, c8250_device, "c8250", "Commodore 8250")
+DEFINE_DEVICE_TYPE(C8250LP, c8250lp_device, "c8250lp", "Commodore 8250LP")
+DEFINE_DEVICE_TYPE(SFD1001, sfd1001_device, "sfd1001", "Commodore SFD-1001")
//-------------------------------------------------
@@ -187,10 +190,10 @@ const tiny_rom_entry *sfd1001_device::device_rom_region() const
void c8050_device::c8050_main_mem(address_map &map)
{
- map(0x0000, 0x007f).mirror(0x0100).m(M6532_0_TAG, FUNC(mos6532_new_device::ram_map));
- map(0x0080, 0x00ff).mirror(0x0100).m(M6532_1_TAG, FUNC(mos6532_new_device::ram_map));
- map(0x0200, 0x021f).mirror(0x0d60).m(M6532_0_TAG, FUNC(mos6532_new_device::io_map));
- map(0x0280, 0x029f).mirror(0x0d60).m(M6532_1_TAG, FUNC(mos6532_new_device::io_map));
+ map(0x0000, 0x007f).mirror(0x0100).m(M6532_0_TAG, FUNC(mos6532_device::ram_map));
+ map(0x0080, 0x00ff).mirror(0x0100).m(M6532_1_TAG, FUNC(mos6532_device::ram_map));
+ map(0x0200, 0x021f).mirror(0x0d60).m(M6532_0_TAG, FUNC(mos6532_device::io_map));
+ map(0x0280, 0x029f).mirror(0x0d60).m(M6532_1_TAG, FUNC(mos6532_device::io_map));
map(0x1000, 0x13ff).mirror(0x0c00).ram().share("share1");
map(0x2000, 0x23ff).mirror(0x0c00).ram().share("share2");
map(0x3000, 0x33ff).mirror(0x0c00).ram().share("share3");
@@ -206,14 +209,14 @@ void c8050_device::c8050_main_mem(address_map &map)
void c8050_device::c8050_fdc_mem(address_map &map)
{
map.global_mask(0x1fff);
- map(0x0000, 0x003f).mirror(0x0300).m(m_miot, FUNC(mos6530_new_device::ram_map));
+ map(0x0000, 0x003f).mirror(0x0300).m(m_miot, FUNC(mos6530_device::ram_map));
map(0x0040, 0x004f).mirror(0x0330).m(m_via, FUNC(via6522_device::map));
- map(0x0080, 0x008f).mirror(0x0330).m(m_miot, FUNC(mos6530_new_device::io_map));
+ map(0x0080, 0x008f).mirror(0x0330).m(m_miot, FUNC(mos6530_device::io_map));
map(0x0400, 0x07ff).ram().share("share1");
map(0x0800, 0x0bff).ram().share("share2");
map(0x0c00, 0x0fff).ram().share("share3");
map(0x1000, 0x13ff).ram().share("share4");
- map(0x1c00, 0x1fff).m(m_miot, FUNC(mos6530_new_device::rom_map));
+ map(0x1c00, 0x1fff).m(m_miot, FUNC(mos6530_device::rom_map));
}
@@ -224,9 +227,9 @@ void c8050_device::c8050_fdc_mem(address_map &map)
void c8050_device::c8250lp_fdc_mem(address_map &map)
{
map.global_mask(0x1fff);
- map(0x0000, 0x003f).mirror(0x0300).m(m_miot, FUNC(mos6530_new_device::ram_map));
+ map(0x0000, 0x003f).mirror(0x0300).m(m_miot, FUNC(mos6530_device::ram_map));
map(0x0040, 0x004f).mirror(0x0330).m(m_via, FUNC(via6522_device::map));
- map(0x0080, 0x008f).mirror(0x0330).m(m_miot, FUNC(mos6530_new_device::io_map));
+ map(0x0080, 0x008f).mirror(0x0330).m(m_miot, FUNC(mos6530_device::io_map));
map(0x0400, 0x07ff).ram().share("share1");
map(0x0800, 0x0bff).ram().share("share2");
map(0x0c00, 0x0fff).ram().share("share3");
@@ -242,9 +245,9 @@ void c8050_device::c8250lp_fdc_mem(address_map &map)
void c8050_device::sfd1001_fdc_mem(address_map &map)
{
map.global_mask(0x1fff);
- map(0x0000, 0x003f).mirror(0x0300).m(m_miot, FUNC(mos6530_new_device::ram_map));
+ map(0x0000, 0x003f).mirror(0x0300).m(m_miot, FUNC(mos6530_device::ram_map));
map(0x0040, 0x004f).mirror(0x0330).m(m_via, FUNC(via6522_device::map));
- map(0x0080, 0x008f).mirror(0x0330).m(m_miot, FUNC(mos6530_new_device::io_map));
+ map(0x0080, 0x008f).mirror(0x0330).m(m_miot, FUNC(mos6530_device::io_map));
map(0x0400, 0x07ff).ram().share("share1");
map(0x0800, 0x0bff).ram().share("share2");
map(0x0c00, 0x0fff).ram().share("share3");
@@ -257,7 +260,7 @@ void c8050_device::sfd1001_fdc_mem(address_map &map)
// riot6532 uc1
//-------------------------------------------------
-READ8_MEMBER( c8050_device::dio_r )
+uint8_t c8050_device::dio_r()
{
/*
@@ -274,10 +277,10 @@ READ8_MEMBER( c8050_device::dio_r )
*/
- return m_bus->read_dio();
+ return m_bus->dio_r();
}
-WRITE8_MEMBER( c8050_device::dio_w )
+void c8050_device::dio_w(uint8_t data)
{
/*
@@ -301,7 +304,7 @@ WRITE8_MEMBER( c8050_device::dio_w )
// riot6532 ue1
//-------------------------------------------------
-READ8_MEMBER( c8050_device::riot1_pa_r )
+uint8_t c8050_device::riot1_pa_r()
{
/*
@@ -332,7 +335,7 @@ READ8_MEMBER( c8050_device::riot1_pa_r )
return data;
}
-WRITE8_MEMBER( c8050_device::riot1_pa_w )
+void c8050_device::riot1_pa_w(uint8_t data)
{
/*
@@ -367,7 +370,7 @@ WRITE8_MEMBER( c8050_device::riot1_pa_w )
update_ieee_signals();
}
-READ8_MEMBER( c8050_device::riot1_pb_r )
+uint8_t c8050_device::riot1_pb_r()
{
/*
@@ -398,7 +401,7 @@ READ8_MEMBER( c8050_device::riot1_pb_r )
return data;
}
-WRITE8_MEMBER( c8050_device::riot1_pb_w )
+void c8050_device::riot1_pb_w(uint8_t data)
{
/*
@@ -425,7 +428,7 @@ WRITE8_MEMBER( c8050_device::riot1_pb_w )
m_leds[LED_ERR] = BIT(data, 5);
}
-WRITE8_MEMBER( c8050_device::via_pb_w )
+void c8050_device::via_pb_w(uint8_t data)
{
/*
@@ -473,9 +476,10 @@ static void c8050_floppies(device_slot_interface &device)
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c8050_device::floppy_formats )
- FLOPPY_D80_FORMAT
-FLOPPY_FORMATS_END
+void c8050_device::floppy_formats(format_registration &fr)
+{
+ fr.add(FLOPPY_D80_FORMAT);
+}
//-------------------------------------------------
@@ -502,30 +506,33 @@ static void sfd1001_floppies(device_slot_interface &device)
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c8250_device::floppy_formats )
- FLOPPY_D80_FORMAT,
- FLOPPY_D82_FORMAT
-FLOPPY_FORMATS_END
+void c8250_device::floppy_formats(format_registration &fr)
+{
+ fr.add(FLOPPY_D80_FORMAT);
+ fr.add(FLOPPY_D82_FORMAT);
+}
//-------------------------------------------------
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c8250lp_device::floppy_formats )
- FLOPPY_D80_FORMAT,
- FLOPPY_D82_FORMAT
-FLOPPY_FORMATS_END
+void c8250lp_device::floppy_formats(format_registration &fr)
+{
+ fr.add(FLOPPY_D80_FORMAT);
+ fr.add(FLOPPY_D82_FORMAT);
+}
//-------------------------------------------------
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( sfd1001_device::floppy_formats )
- FLOPPY_D80_FORMAT,
- FLOPPY_D82_FORMAT
-FLOPPY_FORMATS_END
+void sfd1001_device::floppy_formats(format_registration &fr)
+{
+ fr.add(FLOPPY_D80_FORMAT);
+ fr.add(FLOPPY_D82_FORMAT);
+}
void c8050_device::add_common_devices(machine_config &config)
@@ -534,11 +541,11 @@ void c8050_device::add_common_devices(machine_config &config)
M6502(config, m_maincpu, XTAL(12'000'000)/12);
m_maincpu->set_addrmap(AS_PROGRAM, &c8050_device::c8050_main_mem);
- MOS6532_NEW(config, m_riot0, XTAL(12'000'000)/12);
+ MOS6532(config, m_riot0, XTAL(12'000'000)/12);
m_riot0->pa_rd_callback().set(FUNC(c8050_device::dio_r));
m_riot0->pb_wr_callback().set(FUNC(c8050_device::dio_w));
- MOS6532_NEW(config, m_riot1, XTAL(12'000'000)/12);
+ MOS6532(config, m_riot1, XTAL(12'000'000)/12);
m_riot1->pa_rd_callback().set(FUNC(c8050_device::riot1_pa_r));
m_riot1->pa_wr_callback().set(FUNC(c8050_device::riot1_pa_w));
m_riot1->pb_rd_callback().set(FUNC(c8050_device::riot1_pb_r));
@@ -548,19 +555,19 @@ void c8050_device::add_common_devices(machine_config &config)
// controller
M6504(config, m_fdccpu, XTAL(12'000'000)/12);
- VIA6522(config, m_via, XTAL(12'000'000)/12);
+ MOS6522(config, m_via, XTAL(12'000'000)/12);
m_via->readpa_handler().set(m_fdc, FUNC(c8050_fdc_device::read));
m_via->writepb_handler().set(FUNC(c8050_device::via_pb_w));
m_via->ca2_handler().set(m_fdc, FUNC(c8050_fdc_device::mode_sel_w));
m_via->cb2_handler().set(m_fdc, FUNC(c8050_fdc_device::rw_sel_w));
- MOS6530_NEW(config, m_miot, XTAL(12'000'000)/12);
+ MOS6530(config, m_miot, XTAL(12'000'000)/12);
m_miot->pa_wr_callback().set(m_fdc, FUNC(c8050_fdc_device::write));
m_miot->pb_wr_callback<1>().set(m_fdc, FUNC(c8050_fdc_device::ds0_w));
m_miot->pb_wr_callback<2>().set(m_fdc, FUNC(c8050_fdc_device::ds1_w));
m_miot->pb_rd_callback<3>().set(m_fdc, FUNC(c8050_fdc_device::wps_r));
m_miot->pb_rd_callback<6>().set_constant(1); // SINGLE SIDED
- m_miot->pb_wr_callback<7>().set_inputline(m_fdccpu, M6502_IRQ_LINE);
+ m_miot->irq_wr_callback().set_inputline(m_fdccpu, M6502_IRQ_LINE);
C8050_FDC(config, m_fdc, XTAL(12'000'000)/2);
m_fdc->sync_wr_callback().set(m_via, FUNC(via6522_device::write_pb7));
@@ -770,7 +777,7 @@ void c8050_device::device_reset()
m_miot->reset();
m_via->reset();
- m_riot1->pa7_w(1);
+ m_riot1->pa_bit_w<7>(1);
// turn off spindle motors
m_fdc->mtr0_w(1);
@@ -786,7 +793,7 @@ void c8050_device::ieee488_atn(int state)
{
update_ieee_signals();
- m_riot1->pa7_w(state);
+ m_riot1->pa_bit_w<7>(state);
}