summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/applix.c
diff options
context:
space:
mode:
author Robbbert <robbbert@users.noreply.github.com>2013-05-29 11:42:27 +0000
committer Robbbert <robbbert@users.noreply.github.com>2013-05-29 11:42:27 +0000
commit2eb3d121926e24e13330d5b22cdcd8f81d008d39 (patch)
tree095f1ace8686fd1afe334b93cb98456f2d1e494e /src/mess/drivers/applix.c
parentd6f867dfe1b7abbe57fce3e44a6446b6ea732b49 (diff)
(MESS) Applix: added centronics printer.
Diffstat (limited to 'src/mess/drivers/applix.c')
-rw-r--r--src/mess/drivers/applix.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/mess/drivers/applix.c b/src/mess/drivers/applix.c
index 475a009b4c1..9932d8f1fcc 100644
--- a/src/mess/drivers/applix.c
+++ b/src/mess/drivers/applix.c
@@ -40,6 +40,7 @@
#include "machine/wd_fdc.h"
#include "formats/applix_dsk.h"
#include "imagedev/cassette.h"
+#include "machine/ctronics.h"
@@ -51,6 +52,7 @@ public:
m_maincpu(*this, "maincpu"),
m_crtc(*this, "crtc"),
m_via(*this, "via6522"),
+ m_centronics(*this, "centronics"),
m_fdc(*this, "wd1772"),
m_floppy0(*this, "wd1772:0"),
m_floppy1(*this, "wd1772:1"),
@@ -133,6 +135,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<mc6845_device> m_crtc;
required_device<via6522_device> m_via;
+ required_device<centronics_device> m_centronics;
required_device<wd1772_t> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
@@ -223,7 +226,7 @@ WRITE16_MEMBER( applix_state::palette_w )
{
offset >>= 4;
if (ACCESSING_BITS_0_7)
- {} //centronics
+ m_centronics->write(space, 0, data);
else
m_palette_latch[offset] = (data >> 8) & 15;
}
@@ -261,7 +264,7 @@ READ16_MEMBER( applix_state::applix_inputs_r )
READ8_MEMBER( applix_state::applix_pa_r )
{
- return m_pa;
+ return (m_pa & 0xfe) | m_centronics->busy_r();
}
READ8_MEMBER( applix_state::applix_pb_r )
@@ -301,6 +304,8 @@ WRITE8_MEMBER( applix_state::applix_pa_w )
if (!BIT(m_pa, 2) && BIT(data, 2))
m_maincpu->set_input_line(M68K_IRQ_4, CLEAR_LINE);
+ m_centronics->strobe_w(BIT(data, 1));
+
m_pa = data;
}
@@ -877,6 +882,13 @@ static const cassette_interface applix_cassette_interface =
NULL
};
+static const centronics_interface applix_centronics_config =
+{
+ DEVCB_DEVICE_LINE_MEMBER("via6522", via6522_device, write_ca1), // ack
+ DEVCB_NULL,
+ DEVCB_NULL
+};
+
static MACHINE_CONFIG_START( applix, applix_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, 7500000)
@@ -909,6 +921,7 @@ static MACHINE_CONFIG_START( applix, applix_state )
/* Devices */
MCFG_MC6845_ADD("crtc", MC6845, 1875000, applix_crtc) // 6545
MCFG_VIA6522_ADD("via6522", 0, applix_via)
+ MCFG_CENTRONICS_PRINTER_ADD("centronics", applix_centronics_config)
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)