diff --git a/.gitattributes b/.gitattributes index 67f24ca4203..0f422209182 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7750,6 +7750,8 @@ src/mess/machine/serialbox.c svneol=native#text/plain src/mess/machine/serialbox.h svneol=native#text/plain src/mess/machine/sgi.c svneol=native#text/plain src/mess/machine/sgi.h svneol=native#text/plain +src/mess/machine/shark.c svneol=native#text/plain +src/mess/machine/shark.h svneol=native#text/plain src/mess/machine/smartmed.c svneol=native#text/plain src/mess/machine/smartmed.h svneol=native#text/plain src/mess/machine/smc92x4.c svneol=native#text/plain diff --git a/src/mess/machine/cbmipt.c b/src/mess/machine/cbmipt.c index 82c7872e384..11c154b2ef1 100644 --- a/src/mess/machine/cbmipt.c +++ b/src/mess/machine/cbmipt.c @@ -1092,6 +1092,7 @@ SLOT_INTERFACE_START( cbm_ieee488_devices ) SLOT_INTERFACE("d9060", D9060) SLOT_INTERFACE("d9090", D9090) SLOT_INTERFACE("softbox", SOFTBOX) + SLOT_INTERFACE("shark", SHARK) SLOT_INTERFACE_END SLOT_INTERFACE_START( cbm8296d_ieee488_devices ) diff --git a/src/mess/machine/cbmipt.h b/src/mess/machine/cbmipt.h index 98fad60d625..8dacc127b7c 100644 --- a/src/mess/machine/cbmipt.h +++ b/src/mess/machine/cbmipt.h @@ -94,6 +94,7 @@ #include "machine/plus4_sid.h" #include "machine/plus4_std.h" #include "machine/serialbox.h" +#include "machine/shark.h" #include "machine/softbox.h" #include "machine/superpet.h" #include "machine/vic1010.h" diff --git a/src/mess/machine/shark.c b/src/mess/machine/shark.c new file mode 100644 index 00000000000..517ac62cce6 --- /dev/null +++ b/src/mess/machine/shark.c @@ -0,0 +1,170 @@ +/********************************************************************** + + Mator Systems SHARK Intelligent Winchester Disc Subsystem emulation + + Copyright MESS Team. + Visit http://mamedev.org for licensing and usage restrictions. + +**********************************************************************/ + +#include "shark.h" + + + +//************************************************************************** +// MACROS / CONSTANTS +//************************************************************************** + +#define I8085_TAG "i8085" +#define RS232_TAG "rs232" + + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type SHARK = &device_creator; + + +//------------------------------------------------- +// ROM( shark ) +//------------------------------------------------- + +ROM_START( shark ) + ROM_REGION( 0x5000, I8085_TAG, 0 ) + ROM_LOAD( "pch488 3450 v22.1 #1", 0x0000, 0x1000, CRC(03bff9d7) SHA1(ac506df6509e1b2185a69f9f8f44b8b456aa9834) ) + ROM_LOAD( "pch488 3450 v22.1 #2", 0x1000, 0x1000, CRC(c14fa5fe) SHA1(bcfd1dd65d692c76b90e6134b85f22c39c049430) ) + ROM_LOAD( "pch488 3450 v22.1 #3", 0x2000, 0x1000, CRC(4dfaa482) SHA1(fe2c44bb650572616c8bdad6358032fe64b1e363) ) + ROM_LOAD( "pch488 3450 v22.1 #4", 0x3000, 0x1000, NO_DUMP ) + ROM_LOAD( "pch488 3450 v22.1 #5", 0x4000, 0x1000, CRC(aef665e9) SHA1(80a4c00b717100b4e22fa3704e34060fffce2bc3) ) + + ROM_REGION( 0x800, "micro", 0 ) // address decoder + ROM_LOAD( "micro p3450 v1.3", 0x000, 0x800, CRC(0e69202e) SHA1(3b384951ff54c4b45a3a778a88966d13e2c9d57a) ) +ROM_END + + +//------------------------------------------------- +// rom_region - device-specific ROM region +//------------------------------------------------- + +const rom_entry *shark_device::device_rom_region() const +{ + return ROM_NAME( shark ); +} + + +//------------------------------------------------- +// ADDRESS_MAP( shark_mem ) +//------------------------------------------------- + +static ADDRESS_MAP_START( shark_mem, AS_PROGRAM, 8, shark_device ) + AM_RANGE(0x0000, 0x4fff) AM_ROM AM_REGION(I8085_TAG, 0) +ADDRESS_MAP_END + + +//------------------------------------------------- +// ADDRESS_MAP( shark_io ) +//------------------------------------------------- + +static ADDRESS_MAP_START( shark_io, AS_IO, 8, shark_device ) +ADDRESS_MAP_END + + +//------------------------------------------------- +// I8085_CONFIG( cpu_intf ) +//------------------------------------------------- + +static I8085_CONFIG( cpu_intf ) +{ + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL +}; + + +//------------------------------------------------- +// rs232_port_interface rs232_intf +//------------------------------------------------- + +static const rs232_port_interface rs232_intf = +{ + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL +}; + + +//------------------------------------------------- +// MACHINE_CONFIG_FRAGMENT( shark ) +//------------------------------------------------- + +static MACHINE_CONFIG_FRAGMENT( shark ) + // basic machine hardware + MCFG_CPU_ADD(I8085_TAG, I8085A, 1000000) + MCFG_CPU_CONFIG(cpu_intf) + MCFG_CPU_PROGRAM_MAP(shark_mem) + MCFG_CPU_IO_MAP(shark_io) + + // devices + MCFG_HARDDISK_ADD("harddisk1") + MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) +MACHINE_CONFIG_END + + +//------------------------------------------------- +// machine_config_additions - device-specific +// machine configurations +//------------------------------------------------- + +machine_config_constructor shark_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( shark ); +} + + +//------------------------------------------------- +// INPUT_PORTS( shark ) +//------------------------------------------------- + +INPUT_PORTS_START( shark ) +INPUT_PORTS_END + + +//------------------------------------------------- +// input_ports - device-specific input ports +//------------------------------------------------- + +ioport_constructor shark_device::device_input_ports() const +{ + return INPUT_PORTS_NAME( shark ); +} + + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// shark_device - constructor +//------------------------------------------------- + +shark_device::shark_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, SHARK, "Mator SHARK", tag, owner, clock, "shark", __FILE__), + device_ieee488_interface(mconfig, *this), + m_maincpu(*this, I8085_TAG) +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void shark_device::device_start() +{ +} diff --git a/src/mess/machine/shark.h b/src/mess/machine/shark.h new file mode 100644 index 00000000000..68fdfa8f9ab --- /dev/null +++ b/src/mess/machine/shark.h @@ -0,0 +1,57 @@ +/********************************************************************** + + Mator Systems SHARK Intelligent Winchester Disc Subsystem emulation + + 35MB PRIAM DISKOS 3450 8" Winchester Hard Disk (-chs 525,5,? -ss ?) + + Copyright MESS Team. + Visit http://mamedev.org for licensing and usage restrictions. + +**********************************************************************/ + +#pragma once + +#ifndef __SHARK__ +#define __SHARK__ + +#include "emu.h" +#include "cpu/i8085/i8085.h" +#include "imagedev/harddriv.h" +#include "machine/ieee488.h" +#include "machine/serial.h" + + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> shark_device + +class shark_device : public device_t, + public device_ieee488_interface +{ +public: + // construction/destruction + shark_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual const rom_entry *device_rom_region() const; + virtual machine_config_constructor device_mconfig_additions() const; + virtual ioport_constructor device_input_ports() const; + +protected: + // device-level overrides + virtual void device_start(); + +private: + required_device m_maincpu; +}; + + +// device type definition +extern const device_type SHARK; + + + +#endif diff --git a/src/mess/mess.mak b/src/mess/mess.mak index ad3537f8b3a..60f7177451a 100644 --- a/src/mess/mess.mak +++ b/src/mess/mess.mak @@ -1058,6 +1058,7 @@ $(MESSOBJ)/cbm.a: \ $(MESS_MACHINE)/pet_64k.o \ $(MESS_MACHINE)/superpet.o \ $(MESS_MACHINE)/mos6702.o \ + $(MESS_MACHINE)/shark.o \ $(MESS_DRIVERS)/c64.o \ $(MESS_DRIVERS)/c64dtv.o \ $(MESS_MACHINE)/c64exp.o \