summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/formats/vector06_dsk.c44
-rw-r--r--src/lib/formats/vector06_dsk.h33
-rw-r--r--src/mess/drivers/vector06.c40
-rw-r--r--src/mess/includes/vector06.h11
-rw-r--r--src/mess/machine/vector06.c18
5 files changed, 117 insertions, 29 deletions
diff --git a/src/lib/formats/vector06_dsk.c b/src/lib/formats/vector06_dsk.c
new file mode 100644
index 00000000000..b423f4b7154
--- /dev/null
+++ b/src/lib/formats/vector06_dsk.c
@@ -0,0 +1,44 @@
+// license:GPL-2.0+
+// copyright-holders:Dirk Best
+/***************************************************************************
+
+ Vector 06
+
+ Disk image format
+
+ TODO:
+ - Gap sizes
+
+***************************************************************************/
+
+#include "vector06_dsk.h"
+
+vector06_format::vector06_format() : wd177x_format(formats)
+{
+}
+
+const char *vector06_format::name() const
+{
+ return "vector06";
+}
+
+const char *vector06_format::description() const
+{
+ return "Vector 06 disk image";
+}
+
+const char *vector06_format::extensions() const
+{
+ return "fdd";
+}
+
+const vector06_format::format vector06_format::formats[] =
+{
+ {
+ floppy_image::FF_525, floppy_image::DSQD, floppy_image::MFM,
+ 2000, 5, 82, 2, 1024, {}, 1, {}, 80, 22, 24
+ },
+ {}
+};
+
+const floppy_format_type FLOPPY_VECTOR06_FORMAT = &floppy_image_format_creator<vector06_format>;
diff --git a/src/lib/formats/vector06_dsk.h b/src/lib/formats/vector06_dsk.h
new file mode 100644
index 00000000000..cad2fa3ddf3
--- /dev/null
+++ b/src/lib/formats/vector06_dsk.h
@@ -0,0 +1,33 @@
+// license:GPL-2.0+
+// copyright-holders:Dirk Best
+/***************************************************************************
+
+ Vector 06
+
+ Disk image format
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __VECTOR06_DSK_H__
+#define __VECTOR06_DSK_H__
+
+#include "wd177x_dsk.h"
+
+class vector06_format : public wd177x_format
+{
+public:
+ vector06_format();
+
+ virtual const char *name() const;
+ virtual const char *description() const;
+ virtual const char *extensions() const;
+
+private:
+ static const format formats[];
+};
+
+extern const floppy_format_type FLOPPY_VECTOR06_FORMAT;
+
+#endif // __VECTOR06_DSK_H__
diff --git a/src/mess/drivers/vector06.c b/src/mess/drivers/vector06.c
index 208a5feb15c..444692617a5 100644
--- a/src/mess/drivers/vector06.c
+++ b/src/mess/drivers/vector06.c
@@ -9,6 +9,7 @@
****************************************************************************/
#include "includes/vector06.h"
+#include "formats/vector06_dsk.h"
/* Address maps */
@@ -23,10 +24,10 @@ static ADDRESS_MAP_START(vector06_io, AS_IO, 8, vector06_state)
AM_RANGE( 0x00, 0x03) AM_READWRITE(vector06_8255_1_r, vector06_8255_1_w )
AM_RANGE( 0x04, 0x07) AM_READWRITE(vector06_8255_2_r, vector06_8255_2_w )
AM_RANGE( 0x0C, 0x0C) AM_WRITE(vector06_color_set)
- AM_RANGE( 0x18, 0x18) AM_DEVREADWRITE("wd1793", fd1793_device, data_r, data_w)
- AM_RANGE( 0x19, 0x19) AM_DEVREADWRITE("wd1793", fd1793_device, sector_r, sector_w)
- AM_RANGE( 0x1A, 0x1A) AM_DEVREADWRITE("wd1793", fd1793_device, track_r, track_w)
- AM_RANGE( 0x1B, 0x1B) AM_DEVREADWRITE("wd1793", fd1793_device, status_r, command_w)
+ AM_RANGE( 0x18, 0x18) AM_DEVREADWRITE("wd1793", fd1793_t, data_r, data_w)
+ AM_RANGE( 0x19, 0x19) AM_DEVREADWRITE("wd1793", fd1793_t, sector_r, sector_w)
+ AM_RANGE( 0x1a, 0x1a) AM_DEVREADWRITE("wd1793", fd1793_t, track_r, track_w)
+ AM_RANGE( 0x1b, 0x1b) AM_DEVREADWRITE("wd1793", fd1793_t, status_r, cmd_w)
AM_RANGE( 0x1C, 0x1C) AM_WRITE(vector06_disc_w)
ADDRESS_MAP_END
@@ -119,21 +120,15 @@ static INPUT_PORTS_START( vector06 )
INPUT_PORTS_END
-static LEGACY_FLOPPY_OPTIONS_START(vector)
- LEGACY_FLOPPY_OPTION(vector, "fdd", "Vector disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
- HEADS([2])
- TRACKS([82])
- SECTORS([5])
- SECTOR_LENGTH([1024])
- FIRST_SECTOR_ID([1]))
-LEGACY_FLOPPY_OPTIONS_END
-
-static const floppy_interface vector_floppy_interface =
-{
- FLOPPY_STANDARD_5_25_DSHD,
- LEGACY_FLOPPY_OPTIONS_NAME(vector),
- NULL
-};
+
+FLOPPY_FORMATS_MEMBER( vector06_state::floppy_formats )
+ FLOPPY_VECTOR06_FORMAT
+FLOPPY_FORMATS_END
+
+static SLOT_INTERFACE_START( vector06_floppies )
+ SLOT_INTERFACE("qd", FLOPPY_525_QD)
+SLOT_INTERFACE_END
+
/* Machine driver */
static MACHINE_CONFIG_START( vector06, vector06_state )
@@ -176,11 +171,10 @@ static MACHINE_CONFIG_START( vector06, vector06_state )
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
- MCFG_DEVICE_ADD("wd1793", FD1793, 0)
- MCFG_WD17XX_DEFAULT_DRIVE2_TAGS
- MCFG_WD17XX_DDEN_CALLBACK(VCC)
+ MCFG_FD1793x_ADD("wd1793", XTAL_1MHz)
- MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(vector_floppy_interface)
+ MCFG_FLOPPY_DRIVE_ADD("wd1793:0", vector06_floppies, "qd", vector06_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1793:1", vector06_floppies, "qd", vector06_state::floppy_formats)
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "vector06_cart")
diff --git a/src/mess/includes/vector06.h b/src/mess/includes/vector06.h
index a35e1467509..970965465ef 100644
--- a/src/mess/includes/vector06.h
+++ b/src/mess/includes/vector06.h
@@ -15,10 +15,9 @@
#include "sound/wave.h"
#include "machine/i8255.h"
#include "machine/ram.h"
-#include "machine/wd17xx.h"
+#include "machine/wd_fdc.h"
#include "imagedev/cassette.h"
#include "imagedev/flopdrv.h"
-#include "formats/basicdsk.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
@@ -32,16 +31,22 @@ public:
m_cassette(*this, "cassette"),
m_cart(*this, "cartslot"),
m_fdc(*this, "wd1793"),
+ m_floppy0(*this, "wd1793:0"),
+ m_floppy1(*this, "wd1793:1"),
m_ppi(*this, "ppi8255"),
m_ppi2(*this, "ppi8255_2"),
m_ram(*this, RAM_TAG),
m_palette(*this, "palette")
{ }
+ DECLARE_FLOPPY_FORMATS(floppy_formats);
+
required_device<cpu_device> m_maincpu;
required_device<cassette_image_device> m_cassette;
required_device<generic_slot_device> m_cart;
- required_device<fd1793_device> m_fdc;
+ required_device<fd1793_t> m_fdc;
+ required_device<floppy_connector> m_floppy0;
+ required_device<floppy_connector> m_floppy1;
required_device<i8255_device> m_ppi;
required_device<i8255_device> m_ppi2;
required_device<ram_device> m_ram;
diff --git a/src/mess/machine/vector06.c b/src/mess/machine/vector06.c
index e0c436a6239..b6f4e353fed 100644
--- a/src/mess/machine/vector06.c
+++ b/src/mess/machine/vector06.c
@@ -138,10 +138,22 @@ TIMER_CALLBACK_MEMBER(vector06_state::reset_check_callback)
WRITE8_MEMBER( vector06_state::vector06_disc_w )
{
-// something here needs to turn the motor on
+ floppy_image_device *floppy = NULL;
- m_fdc->set_side (BIT(data, 2) ^ 1);
- m_fdc->set_drive(BIT(data, 0));
+ switch (data & 0x01)
+ {
+ case 0: floppy = m_floppy0->get_device(); break;
+ case 1: floppy = m_floppy1->get_device(); break;
+ }
+
+ m_fdc->set_floppy(floppy);
+
+ if (floppy)
+ {
+ // something here needs to turn the motor on
+ floppy->mon_w(0);
+ floppy->ss_w(!BIT(data, 2));
+ }
}
void vector06_state::machine_start()