summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/cbmiec/c1541.cpp
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2019-05-09 22:14:16 +0300
committer Curt Coder <curtcoder@mail.com>2019-05-09 22:14:24 +0300
commitb3c4ab5ebb5a4d7a94f1616d3f8100b457d02cd9 (patch)
tree6987d4847aa4ca4ab5bb7f4bf69a3d5da2b57d9e /src/devices/bus/cbmiec/c1541.cpp
parent1de6fabe9b2d6838249b56c1e093cc7be1ff565a (diff)
c64: Added Westfalia Technica 1541 clone ROM [Curt Coder, dec_hl]
Diffstat (limited to 'src/devices/bus/cbmiec/c1541.cpp')
-rw-r--r--src/devices/bus/cbmiec/c1541.cpp279
1 files changed, 154 insertions, 125 deletions
diff --git a/src/devices/bus/cbmiec/c1541.cpp b/src/devices/bus/cbmiec/c1541.cpp
index 30b5eb8f255..3868c55618f 100644
--- a/src/devices/bus/cbmiec/c1541.cpp
+++ b/src/devices/bus/cbmiec/c1541.cpp
@@ -161,18 +161,19 @@
// DEVICE DEFINITIONS
//**************************************************************************
-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(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")
//-------------------------------------------------
@@ -190,7 +191,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1540_device::device_rom_region() const
+const tiny_rom_entry *c1540_t::device_rom_region() const
{
return ROM_NAME( c1540 );
}
@@ -234,7 +235,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541_device::device_rom_region() const
+const tiny_rom_entry *c1541_t::device_rom_region() const
{
return ROM_NAME( c1541 );
}
@@ -258,7 +259,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541c_device::device_rom_region() const
+const tiny_rom_entry *c1541c_t::device_rom_region() const
{
return ROM_NAME( c1541c );
}
@@ -284,7 +285,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541ii_device::device_rom_region() const
+const tiny_rom_entry *c1541ii_t::device_rom_region() const
{
return ROM_NAME( c1541ii );
}
@@ -312,7 +313,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *sx1541_device::device_rom_region() const
+const tiny_rom_entry *sx1541_t::device_rom_region() const
{
return ROM_NAME( sx1541 );
}
@@ -332,7 +333,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *fsd1_device::device_rom_region() const
+const tiny_rom_entry *fsd1_t::device_rom_region() const
{
return ROM_NAME( fsd1 );
}
@@ -360,7 +361,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *fsd2_device::device_rom_region() const
+const tiny_rom_entry *fsd2_t::device_rom_region() const
{
return ROM_NAME( fsd2 );
}
@@ -381,7 +382,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *csd1_device::device_rom_region() const
+const tiny_rom_entry *csd1_t::device_rom_region() const
{
return ROM_NAME( csd1 );
}
@@ -401,7 +402,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541_dolphin_dos_device::device_rom_region() const
+const tiny_rom_entry *c1541_dolphin_dos_t::device_rom_region() const
{
return ROM_NAME( c1541dd );
}
@@ -422,7 +423,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541_professional_dos_v1_device::device_rom_region() const
+const tiny_rom_entry *c1541_professional_dos_v1_t::device_rom_region() const
{
return ROM_NAME( c1541pd );
}
@@ -447,7 +448,7 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *c1541_prologic_dos_classic_device::device_rom_region() const
+const tiny_rom_entry *c1541_prologic_dos_classic_t::device_rom_region() const
{
return ROM_NAME( c1541pdc );
}
@@ -471,17 +472,37 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const tiny_rom_entry *indus_gt_device::device_rom_region() const
+const tiny_rom_entry *indus_gt_t::device_rom_region() const
{
return ROM_NAME( indusgt );
}
//-------------------------------------------------
+// ROM( technica )
+//-------------------------------------------------
+
+ROM_START( technica )
+ ROM_REGION( 0x4000, M6502_TAG, 0 ) // data lines should be scrambled
+ ROM_LOAD( "technica dos plus.bin", 0x0000, 0x4000, BAD_DUMP CRC(6a1ef3ff) SHA1(1aaa52ed4a3f120ec8664bcefec890c7f9aaecf2) )
+ROM_END
+
+
+//-------------------------------------------------
+// rom_region - device-specific ROM region
+//-------------------------------------------------
+
+const tiny_rom_entry *technica_t::device_rom_region() const
+{
+ return ROM_NAME( technica );
+}
+
+
+//-------------------------------------------------
// read -
//-------------------------------------------------
-READ8_MEMBER( c1541_prologic_dos_classic_device::read )
+READ8_MEMBER( c1541_prologic_dos_classic_t::read )
{
return 0;
}
@@ -491,7 +512,7 @@ READ8_MEMBER( c1541_prologic_dos_classic_device::read )
// write -
//-------------------------------------------------
-WRITE8_MEMBER( c1541_prologic_dos_classic_device::write )
+WRITE8_MEMBER( c1541_prologic_dos_classic_t::write )
{
}
@@ -500,7 +521,7 @@ WRITE8_MEMBER( c1541_prologic_dos_classic_device::write )
// ADDRESS_MAP( c1541_mem )
//-------------------------------------------------
-void c1541_device_base::c1541_mem(address_map &map)
+void c1541_base_t::c1541_mem(address_map &map)
{
map(0x0000, 0x07ff).mirror(0x6000).ram();
map(0x1800, 0x180f).mirror(0x63f0).rw(M6522_0_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write));
@@ -513,7 +534,7 @@ void c1541_device_base::c1541_mem(address_map &map)
// ADDRESS_MAP( c1541dd_mem )
//-------------------------------------------------
-void c1541_device_base::c1541dd_mem(address_map &map)
+void c1541_base_t::c1541dd_mem(address_map &map)
{
map(0x0000, 0x07ff).mirror(0x6000).ram();
map(0x1800, 0x180f).mirror(0x63f0).rw(M6522_0_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write));
@@ -527,7 +548,7 @@ void c1541_device_base::c1541dd_mem(address_map &map)
// ADDRESS_MAP( c1541pd_mem )
//-------------------------------------------------
-void c1541_device_base::c1541pd_mem(address_map &map)
+void c1541_base_t::c1541pd_mem(address_map &map)
{
map(0x0000, 0x07ff).mirror(0x6000).ram();
map(0x1800, 0x180f).mirror(0x63f0).rw(M6522_0_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write));
@@ -542,9 +563,9 @@ void c1541_device_base::c1541pd_mem(address_map &map)
// ADDRESS_MAP( c1541pdc_mem )
//-------------------------------------------------
-void c1541_prologic_dos_classic_device::c1541pdc_mem(address_map &map)
+void c1541_prologic_dos_classic_t::c1541pdc_mem(address_map &map)
{
- map(0x0000, 0xffff).rw(FUNC(c1541_prologic_dos_classic_device::read), FUNC(c1541_prologic_dos_classic_device::write));
+ 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)
@@ -556,20 +577,20 @@ void c1541_prologic_dos_classic_device::c1541pdc_mem(address_map &map)
}
-WRITE_LINE_MEMBER( c1541_device_base::via0_irq_w )
+WRITE_LINE_MEMBER( c1541_base_t::via0_irq_w )
{
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_device_base::via0_pa_r )
+READ8_MEMBER( c1541_base_t::via0_pa_r )
{
// dummy read to acknowledge ATN IN interrupt
return m_parallel_data;
}
-WRITE8_MEMBER( c1541_device_base::via0_pa_w )
+WRITE8_MEMBER( c1541_base_t::via0_pa_w )
{
if (m_other != nullptr)
{
@@ -577,7 +598,7 @@ WRITE8_MEMBER( c1541_device_base::via0_pa_w )
}
}
-READ8_MEMBER( c1541_device_base::via0_pb_r )
+READ8_MEMBER( c1541_base_t::via0_pb_r )
{
/*
@@ -611,7 +632,7 @@ READ8_MEMBER( c1541_device_base::via0_pb_r )
return data;
}
-WRITE8_MEMBER( c1541_device_base::via0_pb_w )
+WRITE8_MEMBER( c1541_base_t::via0_pb_w )
{
/*
@@ -638,7 +659,7 @@ WRITE8_MEMBER( c1541_device_base::via0_pb_w )
m_bus->clk_w(this, !BIT(data, 3));
}
-WRITE_LINE_MEMBER( c1541_device_base::via0_ca2_w )
+WRITE_LINE_MEMBER( c1541_base_t::via0_ca2_w )
{
if (m_other != nullptr)
{
@@ -646,7 +667,7 @@ WRITE_LINE_MEMBER( c1541_device_base::via0_ca2_w )
}
}
-READ8_MEMBER( c1541c_device::via0_pa_r )
+READ8_MEMBER( c1541c_t::via0_pa_r )
{
/*
@@ -667,14 +688,14 @@ READ8_MEMBER( c1541c_device::via0_pa_r )
}
-WRITE_LINE_MEMBER( c1541_device_base::via1_irq_w )
+WRITE_LINE_MEMBER( c1541_base_t::via1_irq_w )
{
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_device_base::via1_pb_r )
+READ8_MEMBER( c1541_base_t::via1_pb_r )
{
/*
@@ -702,7 +723,7 @@ READ8_MEMBER( c1541_device_base::via1_pb_r )
return data;
}
-WRITE8_MEMBER( c1541_device_base::via1_pb_w )
+WRITE8_MEMBER( c1541_base_t::via1_pb_w )
{
/*
@@ -737,12 +758,12 @@ WRITE8_MEMBER( c1541_device_base::via1_pb_w )
// C64H156_INTERFACE( ga_intf )
//-------------------------------------------------
-WRITE_LINE_MEMBER( c1541_device_base::atn_w )
+WRITE_LINE_MEMBER( c1541_base_t::atn_w )
{
set_iec_data();
}
-WRITE_LINE_MEMBER( c1541_device_base::byte_w )
+WRITE_LINE_MEMBER( c1541_base_t::byte_w )
{
m_maincpu->set_input_line(M6502_SET_OVERFLOW, state);
@@ -754,23 +775,23 @@ WRITE_LINE_MEMBER( c1541_device_base::byte_w )
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER( c1541_device_base::floppy_formats )
+FLOPPY_FORMATS_MEMBER( c1541_base_t::floppy_formats )
FLOPPY_D64_FORMAT,
FLOPPY_G64_FORMAT
FLOPPY_FORMATS_END
-READ8_MEMBER( c1541_prologic_dos_classic_device::pia_r )
+READ8_MEMBER( c1541_prologic_dos_classic_t::pia_r )
{
return m_pia->read((offset >> 2) & 0x03);
}
-WRITE8_MEMBER( c1541_prologic_dos_classic_device::pia_w )
+WRITE8_MEMBER( c1541_prologic_dos_classic_t::pia_w )
{
m_pia->write((offset >> 2) & 0x03, data);
}
-WRITE8_MEMBER( c1541_prologic_dos_classic_device::pia_pa_w )
+WRITE8_MEMBER( c1541_prologic_dos_classic_t::pia_pa_w )
{
/*
@@ -788,12 +809,12 @@ WRITE8_MEMBER( c1541_prologic_dos_classic_device::pia_pa_w )
*/
}
-READ8_MEMBER( c1541_prologic_dos_classic_device::pia_pb_r )
+READ8_MEMBER( c1541_prologic_dos_classic_t::pia_pb_r )
{
return m_parallel_data;
}
-WRITE8_MEMBER( c1541_prologic_dos_classic_device::pia_pb_w )
+WRITE8_MEMBER( c1541_prologic_dos_classic_t::pia_pb_w )
{
m_parallel_data = data;
@@ -805,71 +826,71 @@ WRITE8_MEMBER( c1541_prologic_dos_classic_device::pia_pb_w )
// device_add_mconfig - add device configuration
//-------------------------------------------------
-void c1541_device_base::device_add_mconfig(machine_config &config)
+void c1541_base_t::device_add_mconfig(machine_config &config)
{
M6502(config, m_maincpu, XTAL(16'000'000)/16);
- m_maincpu->set_addrmap(AS_PROGRAM, &c1541_device_base::c1541_mem);
+ 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_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));
+ 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_via1->readpa_handler().set(C64H156_TAG, FUNC(c64h156_device::yb_r));
- m_via1->readpb_handler().set(FUNC(c1541_device_base::via1_pb_r));
+ m_via1->readpb_handler().set(FUNC(c1541_base_t::via1_pb_r));
m_via1->writepa_handler().set(C64H156_TAG, FUNC(c64h156_device::yb_w));
- m_via1->writepb_handler().set(FUNC(c1541_device_base::via1_pb_w));
+ m_via1->writepb_handler().set(FUNC(c1541_base_t::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_device_base::via1_irq_w));
+ m_via1->irq_handler().set(FUNC(c1541_base_t::via1_irq_w));
C64H156(config, m_ga, XTAL(16'000'000));
- m_ga->atn_callback().set(FUNC(c1541_device_base::atn_w));
- m_ga->byte_callback().set(FUNC(c1541_device_base::byte_w));
+ m_ga->atn_callback().set(FUNC(c1541_base_t::atn_w));
+ m_ga->byte_callback().set(FUNC(c1541_base_t::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_device_base::floppy_formats);
+ connector.set_formats(c1541_base_t::floppy_formats);
}
-void c1541c_device::device_add_mconfig(machine_config &config)
+void c1541c_t::device_add_mconfig(machine_config &config)
{
- c1541_device_base::device_add_mconfig(config);
+ c1541_base_t::device_add_mconfig(config);
}
-void c1541_dolphin_dos_device::device_add_mconfig(machine_config &config)
+void c1541_dolphin_dos_t::device_add_mconfig(machine_config &config)
{
- c1541_device_base::device_add_mconfig(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &c1541_dolphin_dos_device::c1541dd_mem);
+ c1541_base_t::device_add_mconfig(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &c1541_dolphin_dos_t::c1541dd_mem);
}
-void c1541_professional_dos_v1_device::device_add_mconfig(machine_config &config)
+void c1541_professional_dos_v1_t::device_add_mconfig(machine_config &config)
{
- c1541_device_base::device_add_mconfig(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &c1541_professional_dos_v1_device::c1541pd_mem);
+ c1541_base_t::device_add_mconfig(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &c1541_professional_dos_v1_t::c1541pd_mem);
}
-void c1541_prologic_dos_classic_device::device_add_mconfig(machine_config &config)
+void c1541_prologic_dos_classic_t::device_add_mconfig(machine_config &config)
{
- c1541_device_base::device_add_mconfig(config);
+ c1541_base_t::device_add_mconfig(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &c1541_prologic_dos_classic_device::c1541pdc_mem);
+ m_maincpu->set_addrmap(AS_PROGRAM, &c1541_prologic_dos_classic_t::c1541pdc_mem);
PIA6821(config, m_pia, 0);
- 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->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));
m_pia->ca2_handler().set(CENTRONICS_TAG, FUNC(centronics_device::write_strobe));
centronics_device &centronics(CENTRONICS(config, CENTRONICS_TAG, centronics_devices, "printer"));
@@ -898,7 +919,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports
//-------------------------------------------------
-ioport_constructor c1541_device_base::device_input_ports() const
+ioport_constructor c1541_base_t::device_input_ports() const
{
return INPUT_PORTS_NAME( c1541 );
}
@@ -913,7 +934,7 @@ ioport_constructor c1541_device_base::device_input_ports() const
// set_iec_data -
//-------------------------------------------------
-inline void c1541_device_base::set_iec_data()
+inline void c1541_base_t::set_iec_data()
{
int data = !m_data_out && !m_ga->atn_r();
@@ -927,10 +948,10 @@ inline void c1541_device_base::set_iec_data()
//**************************************************************************
//-------------------------------------------------
-// c1541_device_base - constructor
+// c1541_base_t - constructor
//-------------------------------------------------
-c1541_device_base::c1541_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+c1541_base_t::c1541_base_t(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
device_cbm_iec_interface(mconfig, *this),
device_c64_floppy_parallel_interface(mconfig, *this),
@@ -949,91 +970,91 @@ c1541_device_base::c1541_device_base(const machine_config &mconfig, device_type
//-------------------------------------------------
-// c1540_device - constructor
+// c1540_t - constructor
//-------------------------------------------------
-c1540_device::c1540_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_device_base(mconfig, C1540, tag, owner, clock) { }
+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) { }
//-------------------------------------------------
-// c1541_device - constructor
+// c1541_t - constructor
//-------------------------------------------------
-c1541_device::c1541_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_device_base(mconfig, C1541, tag, owner, clock) { }
+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) { }
//-------------------------------------------------
-// c1541c_device - constructor
+// c1541c_t - constructor
//-------------------------------------------------
-c1541c_device::c1541c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_device_base(mconfig, C1541C, tag, owner, clock) { }
+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) { }
//-------------------------------------------------
-// c1541ii_device - constructor
+// c1541ii_t - constructor
//-------------------------------------------------
-c1541ii_device::c1541ii_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_device_base(mconfig, C1541II, tag, owner, clock) { }
+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) { }
//-------------------------------------------------
-// sx1541_device - constructor
+// sx1541_t - constructor
//-------------------------------------------------
-sx1541_device::sx1541_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_device_base(mconfig, SX1541, tag, owner, clock) { }
+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) { }
//-------------------------------------------------
-// fsd1_device - constructor
+// fsd1_t - constructor
//-------------------------------------------------
-fsd1_device::fsd1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_device_base(mconfig, FSD1, tag, owner, clock) { }
+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) { }
//-------------------------------------------------
-// fsd2_device - constructor
+// fsd2_t - constructor
//-------------------------------------------------
-fsd2_device::fsd2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_device_base(mconfig, FSD2, tag, owner, clock) { }
+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) { }
//-------------------------------------------------
-// csd1_device - constructor
+// csd1_t - constructor
//-------------------------------------------------
-csd1_device::csd1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_device_base(mconfig, CSD1, tag, owner, clock) { }
+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) { }
//-------------------------------------------------
-// c1541_dolphin_dos_device - constructor
+// c1541_dolphin_dos_t - constructor
//-------------------------------------------------
-c1541_dolphin_dos_device::c1541_dolphin_dos_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_device_base(mconfig, C1541_DOLPHIN_DOS, tag, owner, clock) { }
+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_professional_dos_v1_device - constructor
+// c1541_professional_dos_v1_t - constructor
//-------------------------------------------------
-c1541_professional_dos_v1_device::c1541_professional_dos_v1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_device_base(mconfig, C1541_PROFESSIONAL_DOS_V1, tag, owner, clock) { }
+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_prologic_dos_classic_device - constructor
+// c1541_prologic_dos_classic_t - constructor
//-------------------------------------------------
-c1541_prologic_dos_classic_device::c1541_prologic_dos_classic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_device_base(mconfig, C1541_PROLOGIC_DOS_CLASSIC, tag, owner, clock),
+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),
m_pia(*this, MC6821_TAG),
m_cent_data_out(*this, "cent_data_out"),
m_mmu_rom(*this, "mmu")
@@ -1042,18 +1063,26 @@ c1541_prologic_dos_classic_device::c1541_prologic_dos_classic_device(const machi
//-------------------------------------------------
-// indus_gt_device - constructor
+// indus_gt_t - 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) { }
+
+
+//-------------------------------------------------
+// technica_t - constructor
//-------------------------------------------------
-indus_gt_device::indus_gt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : c1541_device_base(mconfig, INDUS_GT, tag, owner, clock) { }
+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) { }
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
-void c1541_device_base::device_start()
+void c1541_base_t::device_start()
{
m_leds.resolve();
@@ -1066,9 +1095,9 @@ void c1541_device_base::device_start()
save_item(NAME(m_via1_irq));
}
-void fsd2_device::device_start()
+void fsd2_t::device_start()
{
- c1541_device_base::device_start();
+ c1541_base_t::device_start();
// decrypt ROM
uint8_t *rom = memregion(M6502_TAG)->base();
@@ -1086,7 +1115,7 @@ void fsd2_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void c1541_device_base::device_reset()
+void c1541_base_t::device_reset()
{
m_maincpu->reset();
@@ -1103,7 +1132,7 @@ void c1541_device_base::device_reset()
// iec_atn_w -
//-------------------------------------------------
-void c1541_device_base::cbm_iec_atn(int state)
+void c1541_base_t::cbm_iec_atn(int state)
{
m_via0->write_ca1(!state);
m_ga->atni_w(!state);
@@ -1116,7 +1145,7 @@ void c1541_device_base::cbm_iec_atn(int state)
// iec_reset_w -
//-------------------------------------------------
-void c1541_device_base::cbm_iec_reset(int state)
+void c1541_base_t::cbm_iec_reset(int state)
{
if (!state)
{
@@ -1129,7 +1158,7 @@ void c1541_device_base::cbm_iec_reset(int state)
// parallel_data_w -
//-------------------------------------------------
-void c1541_device_base::parallel_data_w(uint8_t data)
+void c1541_base_t::parallel_data_w(uint8_t data)
{
m_parallel_data = data;
}
@@ -1139,7 +1168,7 @@ void c1541_device_base::parallel_data_w(uint8_t data)
// parallel_strobe_w -
//-------------------------------------------------
-void c1541_device_base::parallel_strobe_w(int state)
+void c1541_base_t::parallel_strobe_w(int state)
{
m_via0->write_cb1(state);
}