diff options
author | 2013-05-29 11:42:27 +0000 | |
---|---|---|
committer | 2013-05-29 11:42:27 +0000 | |
commit | 2eb3d121926e24e13330d5b22cdcd8f81d008d39 (patch) | |
tree | 095f1ace8686fd1afe334b93cb98456f2d1e494e /src/mess/drivers/applix.c | |
parent | d6f867dfe1b7abbe57fce3e44a6446b6ea732b49 (diff) |
(MESS) Applix: added centronics printer.
Diffstat (limited to 'src/mess/drivers/applix.c')
-rw-r--r-- | src/mess/drivers/applix.c | 17 |
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) |