summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/applix.c
diff options
context:
space:
mode:
author Robbbert <robbbert@users.noreply.github.com>2013-05-25 10:19:20 +0000
committer Robbbert <robbbert@users.noreply.github.com>2013-05-25 10:19:20 +0000
commit375cc3fdd0282c01942a200ff83f5292c07d35ef (patch)
treea5f74cb820fb4338c6faf92ff21c97be4b46133e /src/mess/drivers/applix.c
parent184a98131b03d48ef0fafa68ceb78585d38408c2 (diff)
(MESS) Applix: added sound (nw)
Need help adding floppies... anyone?
Diffstat (limited to 'src/mess/drivers/applix.c')
-rw-r--r--src/mess/drivers/applix.c46
1 files changed, 32 insertions, 14 deletions
diff --git a/src/mess/drivers/applix.c b/src/mess/drivers/applix.c
index 91eac11b416..055154374b0 100644
--- a/src/mess/drivers/applix.c
+++ b/src/mess/drivers/applix.c
@@ -31,7 +31,7 @@
#include "machine/6522via.h"
#include "machine/wd_fdc.h"
#include "cpu/mcs51/mcs51.h"
-
+#include "sound/dac.h"
class applix_state : public driver_device
@@ -42,7 +42,9 @@ public:
m_maincpu(*this, "maincpu"),
m_crtc(*this, "crtc"),
m_via(*this, "via6522"),
-// m_fdc(*this, "wd1772"),
+ m_fdc(*this, "wd1772"),
+ m_dacl(*this, "dacl"),
+ m_dacr(*this, "dacr"),
m_io_dsw(*this, "DSW"),
m_io_fdc(*this, "FDC"),
m_base(*this, "base"),
@@ -77,9 +79,9 @@ public:
DECLARE_WRITE16_MEMBER(fdc_cmd_w);
DECLARE_WRITE_LINE_MEMBER(kbd_clock_w);
DECLARE_WRITE_LINE_MEMBER(kbd_data_w);
-// DECLARE_FLOPPY_FORMATS(floppy_formats);
-// void fdc_intrq_w(bool state);
-// void fdc_drq_w(bool state);
+ DECLARE_FLOPPY_FORMATS(floppy_formats);
+ void fdc_intrq_w(bool state);
+ void fdc_drq_w(bool state);
UINT8 m_pa;
UINT8 m_pb;
UINT8 m_analog_latch;
@@ -115,7 +117,9 @@ public:
required_device<cpu_device> m_maincpu;
required_device<mc6845_device> m_crtc;
required_device<via6522_device> m_via;
-// required_device<wd1772_t> m_fdc;
+ required_device<wd1772_t> m_fdc;
+ required_device<dac_device> m_dacl;
+ required_device<dac_device> m_dacr;
required_ioport m_io_dsw;
required_ioport m_io_fdc;
required_shared_ptr<UINT16> m_base;
@@ -128,9 +132,16 @@ public:
// bit 3 cassette LED, low=on
// bit 2,1,0 joystick
WRITE16_MEMBER( applix_state::dac_latch_w )
-{//printf("%X ",data);
+{
if (ACCESSING_BITS_0_7)
+ {
+ if ((m_analog_latch & 0x70) == 0)
+ m_dacr->write_unsigned8(data);
+ else
+ if ((m_analog_latch & 0x70) == 0x10)
+ m_dacl->write_unsigned8(data);
m_dac_latch = data;
+ }
}
WRITE16_MEMBER( applix_state::analog_latch_w )
@@ -760,11 +771,18 @@ static MACHINE_CONFIG_START( applix, applix_state )
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
MCFG_PALETTE_LENGTH(16)
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SOUND_ADD("dacl", DAC, 0)
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "lspeaker", 0.75 )
+ MCFG_SOUND_ADD("dacr", DAC, 0)
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "rspeaker", 0.75 )
+
/* Devices */
MCFG_MC6845_ADD("crtc", MC6845, 1875000, applix_crtc) // 6545
MCFG_VIA6522_ADD("via6522", 0, applix_via)
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)
MACHINE_CONFIG_END
/* ROM definition */
@@ -790,18 +808,18 @@ ROM_END
DRIVER_INIT_MEMBER(applix_state, applix)
{
-#if 0
+
floppy_connector *con = machine().device<floppy_connector>("wd1772:0");
floppy_image_device *floppy = con ? con->get_device() : 0;
if (floppy)
{
m_fdc->set_floppy(floppy);
- m_fdc->setup_intrq_cb(wd1772_t::line_cb(FUNC(mirage_state::fdc_intrq_w), this));
- m_fdc->setup_drq_cb(wd1772_t::line_cb(FUNC(mirage_state::fdc_drq_w), this));
+ //m_fdc->setup_intrq_cb(wd1772_t::line_cb(FUNC(applix_state::fdc_intrq_w), this));
+ //m_fdc->setup_drq_cb(wd1772_t::line_cb(FUNC(applix_state::fdc_drq_w), this));
floppy->ss_w(0);
}
-#endif
+
UINT8 *RAM = memregion("subcpu")->base();
membank("bank1")->configure_entries(0, 2, &RAM[0x8000], 0x8000);
}
@@ -963,10 +981,10 @@ READ8_MEMBER( applix_state::p3_read )
data &= ~0x14;
/* -INT0 signal */
- data |= 4;//(clock_signal() ? 0x04 : 0x00);
+ data |= 4;
/* T0 signal */
- data |= 0;//(data_signal() ? 0x00 : 0x10);
+ data |= 0;
return data;
}