summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/machine/isa_pds.c
diff options
context:
space:
mode:
author mahlemiut <mahlemiut@users.noreply.github.com>2014-01-31 09:06:30 +0000
committer mahlemiut <mahlemiut@users.noreply.github.com>2014-01-31 09:06:30 +0000
commit6ecea67cfa63b509e5a1201372d7c2b3eb6434c7 (patch)
treeb5bdcc553abc1db13af13718a72dbecf9ae9d406 /src/mess/machine/isa_pds.c
parent73debc51f442cff8319e7b929953bbcd213eb23a (diff)
(MESS) pc/xt/at: added basic implementation of the Programmers Development System ISA card. The PDS editor software requires the hardware present to start up. Some core work will need to be done to get any communications working, however. [Barry Rodewald]
Diffstat (limited to 'src/mess/machine/isa_pds.c')
-rw-r--r--src/mess/machine/isa_pds.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/mess/machine/isa_pds.c b/src/mess/machine/isa_pds.c
new file mode 100644
index 00000000000..2bda9059120
--- /dev/null
+++ b/src/mess/machine/isa_pds.c
@@ -0,0 +1,76 @@
+/*
+ * isa_pds.c - Programmers Development System 8-bit ISA card
+ *
+ * Used to connect up to two 8-bit systems to the PC, allowing the download of assembled code directly to the
+ * target 8-bit system (Spectrum, CPC, MSX, C64 and maybe the BBC?)
+ *
+ * The editor software require the ISA card to be present.
+ *
+ * The PC end hardware consists of an 8-bit ISA card containing an 8255 PPI hooked up to the two connectors on the
+ * back of the card.
+ *
+ * The 8-bit end hardware consists of an expansion device containing a Z80PIO.
+ *
+ * Created on: 31/01/2014
+ */
+
+#include "isa_pds.h"
+
+const device_type ISA8_PDS = &device_creator<isa8_pds_device>;
+
+isa8_pds_device::isa8_pds_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, ISA8_PDS, "Programmers Development System", tag, owner, clock, "isa_pds", __FILE__),
+ device_isa8_card_interface( mconfig, *this ),
+ m_ppi(*this,"pds_ppi")
+{
+}
+
+
+READ8_MEMBER(isa8_pds_device::ppi_r)
+{
+ if(!(offset & 0x01))
+ return m_ppi->read(space,offset/2);
+ return 0xff;
+}
+
+WRITE8_MEMBER(isa8_pds_device::ppi_w)
+{
+ if(!(offset & 0x01))
+ m_ppi->write(space,offset/2,data);
+}
+
+void isa8_pds_device::device_start()
+{
+ set_isa_device();
+ m_isa->install_device(0x0300, 0x0307, 0, 0, read8_delegate(FUNC(isa8_pds_device::ppi_r),this), write8_delegate(FUNC(isa8_pds_device::ppi_w),this) );
+}
+
+void isa8_pds_device::device_reset()
+{
+
+}
+
+void isa8_pds_device::device_stop()
+{
+
+}
+
+I8255_INTERFACE(pds_ppi_intf)
+{
+ DEVCB_NULL, //m_in_pa_cb;
+ DEVCB_NULL, //m_out_pa_cb;
+ DEVCB_NULL, //m_in_pb_cb;
+ DEVCB_NULL, //m_out_pb_cb;
+ DEVCB_NULL, //m_in_pc_cb;
+ DEVCB_NULL, //m_out_pc_cb;
+};
+
+static MACHINE_CONFIG_FRAGMENT( pds_config )
+ MCFG_I8255_ADD("pds_ppi", pds_ppi_intf)
+MACHINE_CONFIG_END
+
+machine_config_constructor isa8_pds_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( pds_config );
+}
+