diff --git a/.gitattributes b/.gitattributes index 2c87253ea84..9b836f58ada 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7989,6 +7989,8 @@ src/mess/machine/isa_ide.c svneol=native#text/plain src/mess/machine/isa_ide.h svneol=native#text/plain src/mess/machine/isa_mpu401.c svneol=native#text/plain src/mess/machine/isa_mpu401.h svneol=native#text/plain +src/mess/machine/isa_pds.c svneol=native#text/plain +src/mess/machine/isa_pds.h svneol=native#text/plain src/mess/machine/isa_sblaster.c svneol=native#text/plain src/mess/machine/isa_sblaster.h svneol=native#text/plain src/mess/machine/isa_ssi2001.c svneol=native#text/plain diff --git a/src/mess/machine/isa_cards.c b/src/mess/machine/isa_cards.c index 7e88eda5d67..f72d340d419 100644 --- a/src/mess/machine/isa_cards.c +++ b/src/mess/machine/isa_cards.c @@ -38,6 +38,7 @@ SLOT_INTERFACE_START( pc_isa8_cards ) SLOT_INTERFACE("ibm_mfc", ISA8_IBM_MFC) SLOT_INTERFACE("wd1002a_wx1", ISA8_WD1002A_WX1) SLOT_INTERFACE("dectalk", ISA8_DECTALK) + SLOT_INTERFACE("pds", ISA8_PDS) SLOT_INTERFACE_END SLOT_INTERFACE_START( pc_isa16_cards ) @@ -67,6 +68,7 @@ SLOT_INTERFACE_START( pc_isa16_cards ) SLOT_INTERFACE("ibm_mfc", ISA8_IBM_MFC) SLOT_INTERFACE("fdcsmc", ISA8_FDC_SMC) SLOT_INTERFACE("dectalk", ISA8_DECTALK) + SLOT_INTERFACE("pds", ISA8_PDS) // 16-bit SLOT_INTERFACE("ide", ISA16_IDE) SLOT_INTERFACE("ne2000", NE2000) diff --git a/src/mess/machine/isa_cards.h b/src/mess/machine/isa_cards.h index 686a7812622..f8ffa21ef1c 100644 --- a/src/mess/machine/isa_cards.h +++ b/src/mess/machine/isa_cards.h @@ -52,6 +52,7 @@ // communication ports #include "machine/pc_lpt.h" #include "machine/isa_com.h" +#include "machine/isa_pds.h" // other #include "machine/isa_finalchs.h" 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(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 ); +} + diff --git a/src/mess/machine/isa_pds.h b/src/mess/machine/isa_pds.h new file mode 100644 index 00000000000..d0b69c9a195 --- /dev/null +++ b/src/mess/machine/isa_pds.h @@ -0,0 +1,38 @@ +/* + * isa_pds.h + * + * Created on: 31/01/2014 + */ + +#ifndef ISA_PDS_H_ +#define ISA_PDS_H_ + +#include "emu.h" +#include "machine/isa.h" +#include "machine/i8255.h" + +class isa8_pds_device : + public device_t, + public device_isa8_card_interface +{ +public: + isa8_pds_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + DECLARE_READ8_MEMBER(ppi_r); + DECLARE_WRITE8_MEMBER(ppi_w); + + // optional information overrides + virtual machine_config_constructor device_mconfig_additions() const; + + required_device m_ppi; +protected: + // device-level overrides + virtual void device_start(); + virtual void device_reset(); + virtual void device_stop(); + +}; + +extern const device_type ISA8_PDS; + +#endif /* ISA_PDS_H_ */ diff --git a/src/mess/mess.mak b/src/mess/mess.mak index 46a80c080b3..77e948c0c3c 100644 --- a/src/mess/mess.mak +++ b/src/mess/mess.mak @@ -849,6 +849,7 @@ $(MESSOBJ)/isa.a: \ $(MESS_MACHINE)/isa_aha1542.o \ $(MESS_MACHINE)/isa_wd1002a_wx1.o\ $(MESS_MACHINE)/isa_dectalk.o \ + $(MESS_MACHINE)/isa_pds.o \ $(MESS_VIDEO)/isa_cga.o \ $(MESS_VIDEO)/isa_svga_cirrus.o \ $(MESS_VIDEO)/isa_ega.o \