summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Dirk Best <mail@dirk-best.de>2015-07-06 10:24:28 +0200
committer Dirk Best <mail@dirk-best.de>2015-07-06 11:23:38 +0200
commit4124faf73c2406eea368a32c4e3c4ec6aa17492f (patch)
treec41f15dc0f1d2bc83155ff0cdeda97d4596049b2
parentf32f4e5ba0eed127e0308b36be53aa3696589748 (diff)
c1pmf: updated to use new floppy
-rw-r--r--src/mess/drivers/osi.c30
-rw-r--r--src/mess/includes/osi.h22
2 files changed, 25 insertions, 27 deletions
diff --git a/src/mess/drivers/osi.c b/src/mess/drivers/osi.c
index 1cdd3d6f14c..48359d9ccf9 100644
--- a/src/mess/drivers/osi.c
+++ b/src/mess/drivers/osi.c
@@ -388,7 +388,7 @@ WRITE8_MEMBER( c1p_state::osi630_sound_w )
C011 ACIAIO DISK CONTROLLER ACIA I/O PORT
*/
-WRITE_LINE_MEMBER(sb2m600_state::osi470_index_callback)
+void sb2m600_state::floppy_index_callback(floppy_image_device *floppy, int state)
{
m_fdc_index = state;
}
@@ -686,23 +686,17 @@ void c1p_state::machine_start()
void c1pmf_state::machine_start()
{
c1p_state::machine_start();
-}
-static LEGACY_FLOPPY_OPTIONS_START(osi)
- LEGACY_FLOPPY_OPTION(osi, "img", "OSI disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
- HEADS([1])
- TRACKS([36])
- SECTORS([10])
- SECTOR_LENGTH([256])
- FIRST_SECTOR_ID([0]))
-LEGACY_FLOPPY_OPTIONS_END
+ // drive select logic missing
+ if (m_floppy0->get_device())
+ m_floppy0->get_device()->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(FUNC(sb2m600_state::floppy_index_callback), this));
+}
-static const floppy_interface osi_floppy_interface =
-{
- FLOPPY_STANDARD_5_25_SSDD_40,
- LEGACY_FLOPPY_OPTIONS_NAME(osi),
- NULL
-};
+// disk format: 1 head, 36 tracks (? - manual displays a directory listing with 40 tracks),
+// 10 sectors, 256 byte sector length, first sector id 0
+static SLOT_INTERFACE_START( osi_floppies )
+ SLOT_INTERFACE("ssdd", FLOPPY_525_SSDD)
+SLOT_INTERFACE_END
/* F4 Character Displayer */
static const gfx_layout osi_charlayout =
@@ -833,8 +827,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( c1pmf, c1p, c1pmf_state )
MCFG_DEVICE_ADD("floppy_clock", CLOCK, XTAL_4MHz/8) // 250 kHz
MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("acia_1", acia6850_device, write_txc))
- MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, osi_floppy_interface)
- MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(sb2m600_state, osi470_index_callback))
+ MCFG_FLOPPY_DRIVE_ADD("floppy0", osi_floppies, "ssdd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("floppy1", osi_floppies, NULL, floppy_image_device::default_floppy_formats)
/* internal ram */
MCFG_RAM_MODIFY(RAM_TAG)
diff --git a/src/mess/includes/osi.h b/src/mess/includes/osi.h
index 1285d0d8516..735b511fc37 100644
--- a/src/mess/includes/osi.h
+++ b/src/mess/includes/osi.h
@@ -10,7 +10,7 @@
#include "cpu/m6502/m6502.h"
#include "formats/basicdsk.h"
#include "imagedev/cassette.h"
-#include "imagedev/flopdrv.h"
+#include "imagedev/floppy.h"
#include "machine/6850acia.h"
#include "machine/6821pia.h"
#include "machine/ram.h"
@@ -60,7 +60,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( cassette_tx );
DECLARE_WRITE_LINE_MEMBER( write_cassette_clock );
- DECLARE_WRITE_LINE_MEMBER(osi470_index_callback);
+ void floppy_index_callback(floppy_image_device *floppy, int state);
DECLARE_PALETTE_INIT(osi630);
@@ -126,19 +126,23 @@ public:
class c1pmf_state : public c1p_state
{
public:
- c1pmf_state(const machine_config &mconfig, device_type type, const char *tag)
- : c1p_state(mconfig, type, tag),
- m_floppy(*this, FLOPPY_0)
+ c1pmf_state(const machine_config &mconfig, device_type type, const char *tag) :
+ c1p_state(mconfig, type, tag),
+ m_floppy0(*this, "floppy0"),
+ m_floppy1(*this, "floppy1")
{ }
- required_device<legacy_floppy_image_device> m_floppy;
-
- virtual void machine_start();
-
DECLARE_READ8_MEMBER( osi470_pia_pa_r );
DECLARE_WRITE8_MEMBER( osi470_pia_pa_w );
DECLARE_WRITE8_MEMBER( osi470_pia_pb_w );
DECLARE_WRITE_LINE_MEMBER( osi470_pia_cb2_w );
+
+protected:
+ virtual void machine_start();
+
+private:
+ required_device<floppy_connector> m_floppy0;
+ required_device<floppy_connector> m_floppy1;
};
class uk101_state : public sb2m600_state