summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/cbmiec/c1541.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/cbmiec/c1541.cpp')
-rw-r--r--src/devices/bus/cbmiec/c1541.cpp371
1 files changed, 188 insertions, 183 deletions
diff --git a/src/devices/bus/cbmiec/c1541.cpp b/src/devices/bus/cbmiec/c1541.cpp
index 925014ac803..961fe5c76db 100644
--- a/src/devices/bus/cbmiec/c1541.cpp
+++ b/src/devices/bus/cbmiec/c1541.cpp
@@ -10,8 +10,6 @@
TODO:
- - c1540 fails to load the directory intermittently
-
- hardware extensions
- Dolphin-DOS 2.0
- Dolphin-DOS 3.0
@@ -138,8 +136,13 @@
#include "emu.h"
#include "c1541.h"
+
#include "bus/centronics/ctronics.h"
+#include "formats/d64_dsk.h"
+#include "formats/g64_dsk.h"
+#include "formats/fs_cbmdos.h"
+
//**************************************************************************
@@ -161,25 +164,25 @@
// DEVICE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(C1540, c1540_t, "c1540", "Commodore 1540 Disk Drive")
-DEFINE_DEVICE_TYPE(C1541, c1541_t, "c1541", "Commodore 1541 Disk Drive")
-DEFINE_DEVICE_TYPE(C1541C, c1541c_t, "c1541c", "Commodore 1541C Disk Drive")
-DEFINE_DEVICE_TYPE(C1541II, c1541ii_t, "c1541ii", "Commodore 1541-II Disk Drive")
-DEFINE_DEVICE_TYPE(SX1541, sx1541_t, "sx1541", "SX1541 Disk Drive")
-DEFINE_DEVICE_TYPE(FSD1, fsd1_t, "fsd1", "FSD-1 Disk Drive")
-DEFINE_DEVICE_TYPE(FSD2, fsd2_t, "fsd2", "FSD-2 Disk Drive")
-DEFINE_DEVICE_TYPE(CSD1, csd1_t, "csd1", "CSD-1 Disk Drive")
-DEFINE_DEVICE_TYPE(C1541_DOLPHIN_DOS, c1541_dolphin_dos_t, "c1541dd", "Commodore 1541 Dolphin-DOS 2.0 Disk Drive")
-DEFINE_DEVICE_TYPE(C1541_PROFESSIONAL_DOS_V1, c1541_professional_dos_v1_t, "c1541pd", "Commodore 1541 Professional-DOS v1 Disk Drive")
-DEFINE_DEVICE_TYPE(C1541_PROLOGIC_DOS_CLASSIC, c1541_prologic_dos_classic_t, "c1541pdc", "Commodore 1541 ProLogic-DOS Classic Disk Drive")
-DEFINE_DEVICE_TYPE(INDUS_GT, indus_gt_t, "indusgt", "Indus GT Disk Drive")
-DEFINE_DEVICE_TYPE(TECHNICA, technica_t, "technica", "Westfalia Technica Disk Drive")
-DEFINE_DEVICE_TYPE(BLUE_CHIP, blue_chip_t, "bluechip", "Amtech Blue Chip Disk Drive")
-DEFINE_DEVICE_TYPE(COMMANDER_C2, commander_c2_t, "cmdrc2", "Commander C-II Disk Drive")
-DEFINE_DEVICE_TYPE(ENHANCER_2000, enhancer_2000_t, "enh2000", "Enhancer 2000 Disk Drive")
-DEFINE_DEVICE_TYPE(FD148, fd148_t, "fd148", "Rapid Access FD-148 Disk Drive")
-DEFINE_DEVICE_TYPE(MSD_SD1, msd_sd1_t, "msdsd1", "MSD SD-1 Disk Drive")
-DEFINE_DEVICE_TYPE(MSD_SD2, msd_sd2_t, "msdsd2", "MSD SD-2 Disk Drive")
+DEFINE_DEVICE_TYPE(C1540, c1540_device, "c1540", "Commodore 1540 Disk Drive")
+DEFINE_DEVICE_TYPE(C1541, c1541_device, "c1541", "Commodore 1541 Disk Drive")
+DEFINE_DEVICE_TYPE(C1541C, c1541c_device, "c1541c", "Commodore 1541C Disk Drive")
+DEFINE_DEVICE_TYPE(C1541II, c1541ii_device, "c1541ii", "Commodore 1541-II Disk Drive")
+DEFINE_DEVICE_TYPE(SX1541, sx1541_device, "sx1541", "SX1541 Disk Drive")
+DEFINE_DEVICE_TYPE(FSD1, fsd1_device, "fsd1", "FSD-1 Disk Drive")
+DEFINE_DEVICE_TYPE(FSD2, fsd2_device, "fsd2", "FSD-2 Disk Drive")
+DEFINE_DEVICE_TYPE(CSD1, csd1_device, "csd1", "CSD-1 Disk Drive")
+DEFINE_DEVICE_TYPE(C1541_DOLPHIN_DOS, c1541_dolphin_dos_device, "c1541dd", "Commodore 1541 Dolphin-DOS 2.0 Disk Drive")
+DEFINE_DEVICE_TYPE(C1541_PROFESSIONAL_DOS_V1, c1541_professional_dos_v1_device, "c1541pd", "Commodore 1541 Professional-DOS v1 Disk Drive")
+DEFINE_DEVICE_TYPE(C1541_PROLOGIC_DOS_CLASSIC, c1541_prologic_dos_classic_device, "c1541pdc", "Commodore 1541 ProLogic-DOS Classic Disk Drive")
+DEFINE_DEVICE_TYPE(INDUS_GT, indus_gt_device, "indusgt", "Indus GT Disk Drive")
+DEFINE_DEVICE_TYPE(TECHNICA, technica_device, "technica", "Westfalia Technica Disk Drive")
+DEFINE_DEVICE_TYPE(BLUE_CHIP, blue_chip_device, "bluechip", "Amtech Blue Chip Disk Drive")
+DEFINE_DEVICE_TYPE(COMMANDER_C2, commander_c2_device, "cmdrc2", "Commander C-II Disk Drive")
+DEFINE_DEVICE_TYPE(ENHANCER_2000, enhancer_2000_device, "enh2000", "Enhancer 2000 Disk Drive")
+DEFINE_DEVICE_TYPE(FD148, fd148_device, "fd148", "Rapid Access FD-148 Disk Drive")
+DEFINE_DEVICE_TYPE(MSD_SD1, msd_sd1_device, "msdsd1", "MSD SD-1 Disk Drive")
+DEFINE_DEVICE_TYPE(MSD_SD2, msd_sd2_device, "msdsd2", "MSD SD-2 Disk Drive")
//-------------------------------------------------
@@ -197,7 +200,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1540_t::device_rom_region() const
+const tiny_rom_entry *c1540_device::device_rom_region() const
{
return ROM_NAME( c1540 );
}
@@ -241,7 +244,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541_t::device_rom_region() const
+const tiny_rom_entry *c1541_device::device_rom_region() const
{
return ROM_NAME( c1541 );
}
@@ -265,7 +268,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541c_t::device_rom_region() const
+const tiny_rom_entry *c1541c_device::device_rom_region() const
{
return ROM_NAME( c1541c );
}
@@ -291,7 +294,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541ii_t::device_rom_region() const
+const tiny_rom_entry *c1541ii_device::device_rom_region() const
{
return ROM_NAME( c1541ii );
}
@@ -319,7 +322,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *sx1541_t::device_rom_region() const
+const tiny_rom_entry *sx1541_device::device_rom_region() const
{
return ROM_NAME( sx1541 );
}
@@ -339,7 +342,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *fsd1_t::device_rom_region() const
+const tiny_rom_entry *fsd1_device::device_rom_region() const
{
return ROM_NAME( fsd1 );
}
@@ -367,7 +370,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *fsd2_t::device_rom_region() const
+const tiny_rom_entry *fsd2_device::device_rom_region() const
{
return ROM_NAME( fsd2 );
}
@@ -388,7 +391,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *csd1_t::device_rom_region() const
+const tiny_rom_entry *csd1_device::device_rom_region() const
{
return ROM_NAME( csd1 );
}
@@ -408,7 +411,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541_dolphin_dos_t::device_rom_region() const
+const tiny_rom_entry *c1541_dolphin_dos_device::device_rom_region() const
{
return ROM_NAME( c1541dd );
}
@@ -429,7 +432,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541_professional_dos_v1_t::device_rom_region() const
+const tiny_rom_entry *c1541_professional_dos_v1_device::device_rom_region() const
{
return ROM_NAME( c1541pd );
}
@@ -454,7 +457,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541_prologic_dos_classic_t::device_rom_region() const
+const tiny_rom_entry *c1541_prologic_dos_classic_device::device_rom_region() const
{
return ROM_NAME( c1541pdc );
}
@@ -478,7 +481,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *indus_gt_t::device_rom_region() const
+const tiny_rom_entry *indus_gt_device::device_rom_region() const
{
return ROM_NAME( indusgt );
}
@@ -498,7 +501,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *technica_t::device_rom_region() const
+const tiny_rom_entry *technica_device::device_rom_region() const
{
return ROM_NAME( technica );
}
@@ -521,7 +524,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *blue_chip_t::device_rom_region() const
+const tiny_rom_entry *blue_chip_device::device_rom_region() const
{
return ROM_NAME( bluechip );
}
@@ -542,7 +545,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *commander_c2_t::device_rom_region() const
+const tiny_rom_entry *commander_c2_device::device_rom_region() const
{
return ROM_NAME( cmdrc2 );
}
@@ -562,7 +565,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *enhancer_2000_t::device_rom_region() const
+const tiny_rom_entry *enhancer_2000_device::device_rom_region() const
{
return ROM_NAME( enh2000 );
}
@@ -582,7 +585,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *fd148_t::device_rom_region() const
+const tiny_rom_entry *fd148_device::device_rom_region() const
{
return ROM_NAME( fd148 );
}
@@ -603,7 +606,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *msd_sd1_t::device_rom_region() const
+const tiny_rom_entry *msd_sd1_device::device_rom_region() const
{
return ROM_NAME( msdsd1 );
}
@@ -624,7 +627,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *msd_sd2_t::device_rom_region() const
+const tiny_rom_entry *msd_sd2_device::device_rom_region() const
{
return ROM_NAME( msdsd2 );
}
@@ -634,7 +637,7 @@ const tiny_rom_entry *msd_sd2_t::device_rom_region() const
// read -
//-------------------------------------------------
-READ8_MEMBER( c1541_prologic_dos_classic_t::read )
+uint8_t c1541_prologic_dos_classic_device::read()
{
return 0;
}
@@ -644,7 +647,7 @@ READ8_MEMBER( c1541_prologic_dos_classic_t::read )
// write -
//-------------------------------------------------
-WRITE8_MEMBER( c1541_prologic_dos_classic_t::write )
+void c1541_prologic_dos_classic_device::write(uint8_t data)
{
}
@@ -653,7 +656,7 @@ WRITE8_MEMBER( c1541_prologic_dos_classic_t::write )
// ADDRESS_MAP( c1541_mem )
//-------------------------------------------------
-void c1541_base_t::c1541_mem(address_map &map)
+void c1541_device_base::c1541_mem(address_map &map)
{
map(0x0000, 0x07ff).mirror(0x6000).ram();
map(0x1800, 0x180f).mirror(0x63f0).m(M6522_0_TAG, FUNC(via6522_device::map));
@@ -666,7 +669,7 @@ void c1541_base_t::c1541_mem(address_map &map)
// ADDRESS_MAP( c1541dd_mem )
//-------------------------------------------------
-void c1541_base_t::c1541dd_mem(address_map &map)
+void c1541_device_base::c1541dd_mem(address_map &map)
{
map(0x0000, 0x07ff).mirror(0x6000).ram();
map(0x1800, 0x180f).mirror(0x63f0).m(M6522_0_TAG, FUNC(via6522_device::map));
@@ -680,7 +683,7 @@ void c1541_base_t::c1541dd_mem(address_map &map)
// ADDRESS_MAP( c1541pd_mem )
//-------------------------------------------------
-void c1541_base_t::c1541pd_mem(address_map &map)
+void c1541_device_base::c1541pd_mem(address_map &map)
{
map(0x0000, 0x07ff).mirror(0x6000).ram();
map(0x1800, 0x180f).mirror(0x63f0).m(M6522_0_TAG, FUNC(via6522_device::map));
@@ -695,34 +698,34 @@ void c1541_base_t::c1541pd_mem(address_map &map)
// ADDRESS_MAP( c1541pdc_mem )
//-------------------------------------------------
-void c1541_prologic_dos_classic_t::c1541pdc_mem(address_map &map)
+void c1541_prologic_dos_classic_device::c1541pdc_mem(address_map &map)
{
- map(0x0000, 0xffff).rw(FUNC(c1541_prologic_dos_classic_t::read), FUNC(c1541_prologic_dos_classic_t::write));
-/* AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x63f0) AM_DEVREADWRITE(M6522_0_TAG, via6522_device, read, write)
- AM_RANGE(0x1c00, 0x1c0f) AM_MIRROR(0x63f0) AM_DEVREADWRITE(M6522_1_TAG, via6522_device, read, write)
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x8800, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xb7ff) AM_ROM AM_REGION(M6502_TAG, 0x0000)
- AM_RANGE(0xb800, 0xb80f) AM_READWRITE(pia_r, pia_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(M6502_TAG, 0x2000)*/
+ map(0x0000, 0xffff).rw(FUNC(c1541_prologic_dos_classic_device::read), FUNC(c1541_prologic_dos_classic_device::write));
+/* map(0x0000, 0x07ff).mirror(0x6000).ram().share("share1");
+ map(0x1800, 0x180f).mirror(0x63f0).rw(M6522_0_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x1c00, 0x1c0f).mirror(0x63f0).rw(M6522_1_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x8000, 0x87ff).ram().share("share1");
+ map(0x8800, 0x9fff).ram();
+ map(0xa000, 0xb7ff).rom().region(M6502_TAG, 0x0000);
+ map(0xb800, 0xb80f).rw(FUNC(c1541_prologic_dos_classic_device::pia_r), FUNC(c1541_prologic_dos_classic_device::pia_w));
+ map(0xf000, 0xffff).rom().region(M6502_TAG, 0x2000);*/
}
-WRITE_LINE_MEMBER( c1541_base_t::via0_irq_w )
+void c1541_device_base::via0_irq_w(int state)
{
m_via0_irq = state;
m_maincpu->set_input_line(INPUT_LINE_IRQ0, (m_via0_irq || m_via1_irq) ? ASSERT_LINE : CLEAR_LINE);
}
-READ8_MEMBER( c1541_base_t::via0_pa_r )
+uint8_t c1541_device_base::via0_pa_r()
{
// dummy read to acknowledge ATN IN interrupt
return m_parallel_data;
}
-WRITE8_MEMBER( c1541_base_t::via0_pa_w )
+void c1541_device_base::via0_pa_w(uint8_t data)
{
if (m_other != nullptr)
{
@@ -730,7 +733,7 @@ WRITE8_MEMBER( c1541_base_t::via0_pa_w )
}
}
-READ8_MEMBER( c1541_base_t::via0_pb_r )
+uint8_t c1541_device_base::via0_pb_r()
{
/*
@@ -747,7 +750,7 @@ READ8_MEMBER( c1541_base_t::via0_pb_r )
*/
- uint8_t data;
+ u8 data;
// data in
data = !m_bus->data_r() && !m_ga->atn_r();
@@ -764,7 +767,7 @@ READ8_MEMBER( c1541_base_t::via0_pb_r )
return data;
}
-WRITE8_MEMBER( c1541_base_t::via0_pb_w )
+void c1541_device_base::via0_pb_w(uint8_t data)
{
/*
@@ -791,7 +794,7 @@ WRITE8_MEMBER( c1541_base_t::via0_pb_w )
m_bus->clk_w(this, !BIT(data, 3));
}
-WRITE_LINE_MEMBER( c1541_base_t::via0_ca2_w )
+void c1541_device_base::via0_ca2_w(int state)
{
if (m_other != nullptr)
{
@@ -799,7 +802,7 @@ WRITE_LINE_MEMBER( c1541_base_t::via0_ca2_w )
}
}
-READ8_MEMBER( c1541c_t::via0_pa_r )
+uint8_t c1541c_device::via0_pa_r()
{
/*
@@ -820,14 +823,14 @@ READ8_MEMBER( c1541c_t::via0_pa_r )
}
-WRITE_LINE_MEMBER( c1541_base_t::via1_irq_w )
+void c1541_device_base::via1_irq_w(int state)
{
m_via1_irq = state;
m_maincpu->set_input_line(INPUT_LINE_IRQ0, (m_via0_irq || m_via1_irq) ? ASSERT_LINE : CLEAR_LINE);
}
-READ8_MEMBER( c1541_base_t::via1_pb_r )
+uint8_t c1541_device_base::via1_pb_r()
{
/*
@@ -844,7 +847,7 @@ READ8_MEMBER( c1541_base_t::via1_pb_r )
*/
- uint8_t data = 0;
+ u8 data = 0;
// write protect sense
data |= !m_floppy->wpt_r() << 4;
@@ -855,7 +858,7 @@ READ8_MEMBER( c1541_base_t::via1_pb_r )
return data;
}
-WRITE8_MEMBER( c1541_base_t::via1_pb_w )
+void c1541_device_base::via1_pb_w(uint8_t data)
{
/*
@@ -890,12 +893,12 @@ WRITE8_MEMBER( c1541_base_t::via1_pb_w )
// C64H156_INTERFACE( ga_intf )
//-------------------------------------------------
-WRITE_LINE_MEMBER( c1541_base_t::atn_w )
+void c1541_device_base::atn_w(int state)
{
set_iec_data();
}
-WRITE_LINE_MEMBER( c1541_base_t::byte_w )
+void c1541_device_base::byte_w(int state)
{
m_maincpu->set_input_line(M6502_SET_OVERFLOW, state);
@@ -907,23 +910,25 @@ WRITE_LINE_MEMBER( c1541_base_t::byte_w )
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c1541_base_t::floppy_formats )
- FLOPPY_D64_FORMAT,
- FLOPPY_G64_FORMAT
-FLOPPY_FORMATS_END
+void c1541_device_base::floppy_formats(format_registration &fr)
+{
+ fr.add(FLOPPY_D64_FORMAT);
+ fr.add(FLOPPY_G64_FORMAT);
+ fr.add(fs::CBMDOS);
+}
-READ8_MEMBER( c1541_prologic_dos_classic_t::pia_r )
+uint8_t c1541_prologic_dos_classic_device::pia_r(offs_t offset)
{
return m_pia->read((offset >> 2) & 0x03);
}
-WRITE8_MEMBER( c1541_prologic_dos_classic_t::pia_w )
+void c1541_prologic_dos_classic_device::pia_w(offs_t offset, uint8_t data)
{
m_pia->write((offset >> 2) & 0x03, data);
}
-WRITE8_MEMBER( c1541_prologic_dos_classic_t::pia_pa_w )
+void c1541_prologic_dos_classic_device::pia_pa_w(uint8_t data)
{
/*
@@ -941,12 +946,12 @@ WRITE8_MEMBER( c1541_prologic_dos_classic_t::pia_pa_w )
*/
}
-READ8_MEMBER( c1541_prologic_dos_classic_t::pia_pb_r )
+uint8_t c1541_prologic_dos_classic_device::pia_pb_r()
{
return m_parallel_data;
}
-WRITE8_MEMBER( c1541_prologic_dos_classic_t::pia_pb_w )
+void c1541_prologic_dos_classic_device::pia_pb_w(uint8_t data)
{
m_parallel_data = data;
@@ -958,71 +963,71 @@ WRITE8_MEMBER( c1541_prologic_dos_classic_t::pia_pb_w )
// device_add_mconfig - add device configuration
//-------------------------------------------------
-void c1541_base_t::device_add_mconfig(machine_config &config)
+void c1541_device_base::device_add_mconfig(machine_config &config)
{
M6502(config, m_maincpu, XTAL(16'000'000)/16);
- m_maincpu->set_addrmap(AS_PROGRAM, &c1541_base_t::c1541_mem);
- config.m_perfect_cpu_quantum = subtag(M6502_TAG);
-
- VIA6522(config, m_via0, XTAL(16'000'000)/16);
- m_via0->readpa_handler().set(FUNC(c1541_base_t::via0_pa_r));
- m_via0->readpb_handler().set(FUNC(c1541_base_t::via0_pb_r));
- m_via0->writepa_handler().set(FUNC(c1541_base_t::via0_pa_w));
- m_via0->writepb_handler().set(FUNC(c1541_base_t::via0_pb_w));
- m_via0->cb2_handler().set(FUNC(c1541_base_t::via0_ca2_w));
- m_via0->irq_handler().set(FUNC(c1541_base_t::via0_irq_w));
-
- VIA6522(config, m_via1, XTAL(16'000'000)/16);
+ m_maincpu->set_addrmap(AS_PROGRAM, &c1541_device_base::c1541_mem);
+
+ MOS6522(config, m_via0, XTAL(16'000'000)/16);
+ m_via0->readpa_handler().set(FUNC(c1541_device_base::via0_pa_r));
+ m_via0->readpb_handler().set(FUNC(c1541_device_base::via0_pb_r));
+ m_via0->writepa_handler().set(FUNC(c1541_device_base::via0_pa_w));
+ m_via0->writepb_handler().set(FUNC(c1541_device_base::via0_pb_w));
+ m_via0->cb2_handler().set(FUNC(c1541_device_base::via0_ca2_w));
+ m_via0->irq_handler().set(FUNC(c1541_device_base::via0_irq_w));
+
+ MOS6522(config, m_via1, XTAL(16'000'000)/16);
m_via1->readpa_handler().set(C64H156_TAG, FUNC(c64h156_device::yb_r));
- m_via1->readpb_handler().set(FUNC(c1541_base_t::via1_pb_r));
+ m_via1->readpb_handler().set(FUNC(c1541_device_base::via1_pb_r));
m_via1->writepa_handler().set(C64H156_TAG, FUNC(c64h156_device::yb_w));
- m_via1->writepb_handler().set(FUNC(c1541_base_t::via1_pb_w));
+ m_via1->writepb_handler().set(FUNC(c1541_device_base::via1_pb_w));
m_via1->ca2_handler().set(C64H156_TAG, FUNC(c64h156_device::soe_w));
m_via1->cb2_handler().set(C64H156_TAG, FUNC(c64h156_device::oe_w));
- m_via1->irq_handler().set(FUNC(c1541_base_t::via1_irq_w));
+ m_via1->irq_handler().set(FUNC(c1541_device_base::via1_irq_w));
C64H156(config, m_ga, XTAL(16'000'000));
- m_ga->atn_callback().set(FUNC(c1541_base_t::atn_w));
- m_ga->byte_callback().set(FUNC(c1541_base_t::byte_w));
+ m_ga->atn_callback().set(FUNC(c1541_device_base::atn_w));
+ m_ga->byte_callback().set(FUNC(c1541_device_base::byte_w));
floppy_connector &connector(FLOPPY_CONNECTOR(config, C64H156_TAG":0", 0));
connector.option_add("525ssqd", ALPS_3255190X);
connector.set_default_option("525ssqd");
connector.set_fixed(true);
- connector.set_formats(c1541_base_t::floppy_formats);
+ connector.set_formats(c1541_device_base::floppy_formats);
+ connector.enable_sound(true);
}
-void c1541c_t::device_add_mconfig(machine_config &config)
+void c1541c_device::device_add_mconfig(machine_config &config)
{
- c1541_base_t::device_add_mconfig(config);
+ c1541_device_base::device_add_mconfig(config);
}
-void c1541_dolphin_dos_t::device_add_mconfig(machine_config &config)
+void c1541_dolphin_dos_device::device_add_mconfig(machine_config &config)
{
- c1541_base_t::device_add_mconfig(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &c1541_dolphin_dos_t::c1541dd_mem);
+ c1541_device_base::device_add_mconfig(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &c1541_dolphin_dos_device::c1541dd_mem);
}
-void c1541_professional_dos_v1_t::device_add_mconfig(machine_config &config)
+void c1541_professional_dos_v1_device::device_add_mconfig(machine_config &config)
{
- c1541_base_t::device_add_mconfig(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &c1541_professional_dos_v1_t::c1541pd_mem);
+ c1541_device_base::device_add_mconfig(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &c1541_professional_dos_v1_device::c1541pd_mem);
}
-void c1541_prologic_dos_classic_t::device_add_mconfig(machine_config &config)
+void c1541_prologic_dos_classic_device::device_add_mconfig(machine_config &config)
{
- c1541_base_t::device_add_mconfig(config);
+ c1541_device_base::device_add_mconfig(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &c1541_prologic_dos_classic_t::c1541pdc_mem);
+ m_maincpu->set_addrmap(AS_PROGRAM, &c1541_prologic_dos_classic_device::c1541pdc_mem);
- PIA6821(config, m_pia, 0);
- m_pia->readpb_handler().set(FUNC(c1541_prologic_dos_classic_t::pia_pb_r));
- m_pia->writepa_handler().set(FUNC(c1541_prologic_dos_classic_t::pia_pa_w));
- m_pia->writepb_handler().set(FUNC(c1541_prologic_dos_classic_t::pia_pb_w));
+ PIA6821(config, m_pia);
+ m_pia->readpb_handler().set(FUNC(c1541_prologic_dos_classic_device::pia_pb_r));
+ m_pia->writepa_handler().set(FUNC(c1541_prologic_dos_classic_device::pia_pa_w));
+ m_pia->writepb_handler().set(FUNC(c1541_prologic_dos_classic_device::pia_pb_w));
m_pia->ca2_handler().set(CENTRONICS_TAG, FUNC(centronics_device::write_strobe));
centronics_device &centronics(CENTRONICS(config, CENTRONICS_TAG, centronics_devices, "printer"));
@@ -1051,7 +1056,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor c1541_base_t::device_input_ports() const
+ioport_constructor c1541_device_base::device_input_ports() const
{
return INPUT_PORTS_NAME( c1541 );
}
@@ -1066,7 +1071,7 @@ ioport_constructor c1541_base_t::device_input_ports() const
// set_iec_data -
//-------------------------------------------------
-inline void c1541_base_t::set_iec_data()
+inline void c1541_device_base::set_iec_data()
{
int data = !m_data_out && !m_ga->atn_r();
@@ -1080,10 +1085,10 @@ inline void c1541_base_t::set_iec_data()
//**************************************************************************
//-------------------------------------------------
-// c1541_base_t - constructor
+// c1541_device_base - constructor
//-------------------------------------------------
-c1541_base_t::c1541_base_t(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+c1541_device_base::c1541_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) :
device_t(mconfig, type, tag, owner, clock),
device_cbm_iec_interface(mconfig, *this),
device_c64_floppy_parallel_interface(mconfig, *this),
@@ -1102,91 +1107,91 @@ c1541_base_t::c1541_base_t(const machine_config &mconfig, device_type type, cons
//-------------------------------------------------
-// c1540_t - constructor
+// c1540_device - constructor
//-------------------------------------------------
-c1540_t::c1540_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1540, tag, owner, clock) { }
+c1540_device::c1540_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, C1540, tag, owner, clock) { }
//-------------------------------------------------
-// c1541_t - constructor
+// c1541_device - constructor
//-------------------------------------------------
-c1541_t::c1541_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1541, tag, owner, clock) { }
+c1541_device::c1541_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, C1541, tag, owner, clock) { }
//-------------------------------------------------
-// c1541c_t - constructor
+// c1541c_device - constructor
//-------------------------------------------------
-c1541c_t::c1541c_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1541C, tag, owner, clock) { }
+c1541c_device::c1541c_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, C1541C, tag, owner, clock) { }
//-------------------------------------------------
-// c1541ii_t - constructor
+// c1541ii_device - constructor
//-------------------------------------------------
-c1541ii_t::c1541ii_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1541II, tag, owner, clock) { }
+c1541ii_device::c1541ii_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, C1541II, tag, owner, clock) { }
//-------------------------------------------------
-// sx1541_t - constructor
+// sx1541_device - constructor
//-------------------------------------------------
-sx1541_t::sx1541_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, SX1541, tag, owner, clock) { }
+sx1541_device::sx1541_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, SX1541, tag, owner, clock) { }
//-------------------------------------------------
-// fsd1_t - constructor
+// fsd1_device - constructor
//-------------------------------------------------
-fsd1_t::fsd1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, FSD1, tag, owner, clock) { }
+fsd1_device::fsd1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, FSD1, tag, owner, clock) { }
//-------------------------------------------------
-// fsd2_t - constructor
+// fsd2_device - constructor
//-------------------------------------------------
-fsd2_t::fsd2_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, FSD2, tag, owner, clock) { }
+fsd2_device::fsd2_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, FSD2, tag, owner, clock) { }
//-------------------------------------------------
-// csd1_t - constructor
+// csd1_device - constructor
//-------------------------------------------------
-csd1_t::csd1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, CSD1, tag, owner, clock) { }
+csd1_device::csd1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, CSD1, tag, owner, clock) { }
//-------------------------------------------------
-// c1541_dolphin_dos_t - constructor
+// c1541_dolphin_dos_device - constructor
//-------------------------------------------------
-c1541_dolphin_dos_t::c1541_dolphin_dos_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1541_DOLPHIN_DOS, tag, owner, clock) { }
+c1541_dolphin_dos_device::c1541_dolphin_dos_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, C1541_DOLPHIN_DOS, tag, owner, clock) { }
//-------------------------------------------------
-// c1541_professional_dos_v1_t - constructor
+// c1541_professional_dos_v1_device - constructor
//-------------------------------------------------
-c1541_professional_dos_v1_t::c1541_professional_dos_v1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1541_PROFESSIONAL_DOS_V1, tag, owner, clock) { }
+c1541_professional_dos_v1_device::c1541_professional_dos_v1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, C1541_PROFESSIONAL_DOS_V1, tag, owner, clock) { }
//-------------------------------------------------
-// c1541_prologic_dos_classic_t - constructor
+// c1541_prologic_dos_classic_device - constructor
//-------------------------------------------------
-c1541_prologic_dos_classic_t::c1541_prologic_dos_classic_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, C1541_PROLOGIC_DOS_CLASSIC, tag, owner, clock),
+c1541_prologic_dos_classic_device::c1541_prologic_dos_classic_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, C1541_PROLOGIC_DOS_CLASSIC, tag, owner, clock),
m_pia(*this, MC6821_TAG),
m_cent_data_out(*this, "cent_data_out"),
m_mmu_rom(*this, "mmu")
@@ -1195,74 +1200,74 @@ c1541_prologic_dos_classic_t::c1541_prologic_dos_classic_t(const machine_config
//-------------------------------------------------
-// indus_gt_t - constructor
+// indus_gt_device - constructor
//-------------------------------------------------
-indus_gt_t::indus_gt_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, INDUS_GT, tag, owner, clock) { }
+indus_gt_device::indus_gt_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, INDUS_GT, tag, owner, clock) { }
//-------------------------------------------------
-// technica_t - constructor
+// technica_device - constructor
//-------------------------------------------------
-technica_t::technica_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, TECHNICA, tag, owner, clock) { }
+technica_device::technica_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, TECHNICA, tag, owner, clock) { }
//-------------------------------------------------
-// blue_chip_t - constructor
+// blue_chip_device - constructor
//-------------------------------------------------
-blue_chip_t::blue_chip_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, BLUE_CHIP, tag, owner, clock) { }
+blue_chip_device::blue_chip_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, BLUE_CHIP, tag, owner, clock) { }
//-------------------------------------------------
-// commander_c2_t - constructor
+// commander_c2_device - constructor
//-------------------------------------------------
-commander_c2_t::commander_c2_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, COMMANDER_C2, tag, owner, clock) { }
+commander_c2_device::commander_c2_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, COMMANDER_C2, tag, owner, clock) { }
//-------------------------------------------------
-// enhancer_2000_t - constructor
+// enhancer_2000_device - constructor
//-------------------------------------------------
-enhancer_2000_t::enhancer_2000_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, ENHANCER_2000, tag, owner, clock) { }
+enhancer_2000_device::enhancer_2000_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, ENHANCER_2000, tag, owner, clock) { }
//-------------------------------------------------
-// fd148_t - constructor
+// fd148_device - constructor
//-------------------------------------------------
-fd148_t::fd148_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, FD148, tag, owner, clock) { }
+fd148_device::fd148_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, FD148, tag, owner, clock) { }
//-------------------------------------------------
-// msd_sd1_t - constructor
+// msd_sd1_device - constructor
//-------------------------------------------------
-msd_sd1_t::msd_sd1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, MSD_SD1, tag, owner, clock) { }
+msd_sd1_device::msd_sd1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, MSD_SD1, tag, owner, clock) { }
//-------------------------------------------------
-// msd_sd2_t - constructor
+// msd_sd2_device - constructor
//-------------------------------------------------
-msd_sd2_t::msd_sd2_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_base_t(mconfig, MSD_SD2, tag, owner, clock) { }
+msd_sd2_device::msd_sd2_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : c1541_device_base(mconfig, MSD_SD2, tag, owner, clock) { }
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void c1541_base_t::device_start()
+void c1541_device_base::device_start()
{
m_leds.resolve();
@@ -1275,16 +1280,16 @@ void c1541_base_t::device_start()
save_item(NAME(m_via1_irq));
}
-void fsd2_t::device_start()
+void fsd2_device::device_start()
{
- c1541_base_t::device_start();
+ c1541_device_base::device_start();
// decrypt ROM
- uint8_t *rom = memregion(M6502_TAG)->base();
+ u8 *rom = memregion(M6502_TAG)->base();
for (offs_t offset = 0; offset < 0x4000; offset++)
{
- uint8_t data = bitswap<8>(rom[offset], 7, 6, 5, 3, 4, 2, 1, 0);
+ const u8 data = bitswap<8>(rom[offset], 7, 6, 5, 3, 4, 2, 1, 0);
rom[offset] = data;
}
@@ -1295,7 +1300,7 @@ void fsd2_t::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void c1541_base_t::device_reset()
+void c1541_device_base::device_reset()
{
m_maincpu->reset();
@@ -1312,7 +1317,7 @@ void c1541_base_t::device_reset()
// iec_atn_w -
//-------------------------------------------------
-void c1541_base_t::cbm_iec_atn(int state)
+void c1541_device_base::cbm_iec_atn(int state)
{
m_via0->write_ca1(!state);
m_ga->atni_w(!state);
@@ -1325,7 +1330,7 @@ void c1541_base_t::cbm_iec_atn(int state)
// iec_reset_w -
//-------------------------------------------------
-void c1541_base_t::cbm_iec_reset(int state)
+void c1541_device_base::cbm_iec_reset(int state)
{
if (!state)
{
@@ -1338,7 +1343,7 @@ void c1541_base_t::cbm_iec_reset(int state)
// parallel_data_w -
//-------------------------------------------------
-void c1541_base_t::parallel_data_w(uint8_t data)
+void c1541_device_base::parallel_data_w(u8 data)
{
m_parallel_data = data;
}
@@ -1348,7 +1353,7 @@ void c1541_base_t::parallel_data_w(uint8_t data)
// parallel_strobe_w -
//-------------------------------------------------
-void c1541_base_t::parallel_strobe_w(int state)
+void c1541_device_base::parallel_strobe_w(int state)
{
m_via0->write_cb1(state);
}