summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/applix.c
diff options
context:
space:
mode:
author Robbbert <robbbert@users.noreply.github.com>2013-05-29 09:34:06 +0000
committer Robbbert <robbbert@users.noreply.github.com>2013-05-29 09:34:06 +0000
commit97e4fd9c6db783a5d7b457be1f2f3b8a8de7560a (patch)
treeb2b46911251660cc7a8f54fb3877586112528e49 /src/mess/drivers/applix.c
parent8f7c19fe24428730492c403b600943a18bd74ebd (diff)
(MESS) Applix: Added floppy disk drives
Diffstat (limited to 'src/mess/drivers/applix.c')
-rw-r--r--src/mess/drivers/applix.c40
1 files changed, 29 insertions, 11 deletions
diff --git a/src/mess/drivers/applix.c b/src/mess/drivers/applix.c
index 3024801b26b..0c3e51f0e89 100644
--- a/src/mess/drivers/applix.c
+++ b/src/mess/drivers/applix.c
@@ -31,13 +31,14 @@
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
+#include "cpu/mcs51/mcs51.h"
#include "video/mc6845.h"
#include "machine/6522via.h"
-#include "machine/wd_fdc.h"
-#include "cpu/mcs51/mcs51.h"
#include "sound/dac.h"
-#include "imagedev/cassette.h"
#include "sound/wave.h"
+#include "machine/wd_fdc.h"
+#include "formats/applix_dsk.h"
+#include "imagedev/cassette.h"
@@ -50,6 +51,8 @@ public:
m_crtc(*this, "crtc"),
m_via(*this, "via6522"),
m_fdc(*this, "wd1772"),
+ m_floppy0(*this, "wd1772:0"),
+ m_floppy1(*this, "wd1772:1"),
m_dacl(*this, "dacl"),
m_dacr(*this, "dacr"),
m_cass(*this, "cassette"),
@@ -130,6 +133,8 @@ public:
required_device<mc6845_device> m_crtc;
required_device<via6522_device> m_via;
required_device<wd1772_t> m_fdc;
+ required_device<floppy_connector> m_floppy0;
+ required_device<floppy_connector> m_floppy1;
required_device<dac_device> m_dacl;
required_device<dac_device> m_dacr;
required_device<cassette_image_device> m_cass;
@@ -348,6 +353,18 @@ WRITE8_MEMBER( applix_state::port08_w )
{
m_port08 = data;
membank("bank1")->set_entry(BIT(data, 6));
+
+ floppy_image_device *floppy = NULL;
+ if (BIT(data, 2)) floppy = m_floppy0->get_device();
+ if (BIT(data, 3)) floppy = m_floppy1->get_device();
+
+ m_fdc->set_floppy(floppy);
+
+ if (floppy)
+ {
+ floppy->mon_w(0);
+ floppy->ss_w(BIT(data, 5));
+ }
}
READ8_MEMBER( applix_state::port10_r )
@@ -715,13 +732,13 @@ void applix_state::machine_reset()
m_maincpu->reset();
}
-//FLOPPY_FORMATS_MEMBER( applix_state::floppy_formats )
-// FLOPPY_APPLIX_FORMAT
-//FLOPPY_FORMATS_END
+FLOPPY_FORMATS_MEMBER( applix_state::floppy_formats )
+ FLOPPY_APPLIX_FORMAT
+FLOPPY_FORMATS_END
-//static SLOT_INTERFACE_START( applix_floppies )
-// SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
-//SLOT_INTERFACE_END
+static SLOT_INTERFACE_START( applix_floppies )
+ SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
+SLOT_INTERFACE_END
void applix_state::palette_init()
@@ -800,7 +817,7 @@ static MC6845_UPDATE_ROW( applix_update_row )
static MC6845_INTERFACE( applix_crtc )
{
"screen", /* name of screen */
- false,
+ false, // should show a border
8, /* number of dots per character */
NULL,
applix_update_row, /* handler to display a scanline */
@@ -894,7 +911,8 @@ static MACHINE_CONFIG_START( applix, applix_state )
MCFG_VIA6522_ADD("via6522", 0, applix_via)
MCFG_CASSETTE_ADD("cassette", applix_cassette_interface)
MCFG_WD1772x_ADD("wd1772", XTAL_16MHz / 2) //connected to Z80H clock pin
- //MCFG_FLOPPY_DRIVE_ADD("wd1772:0", applix_floppies, "35dd", 0, applix_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1772:0", applix_floppies, "35dd", 0, applix_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1772:1", applix_floppies, "35dd", 0, applix_state::floppy_formats)
MCFG_TIMER_DRIVER_ADD_PERIODIC("applix_c", applix_state, cass_timer, attotime::from_hz(100000))
MACHINE_CONFIG_END