diff options
Diffstat (limited to 'src/devices/bus/einstein/pipe/silicon_disc.h')
-rw-r--r-- | src/devices/bus/einstein/pipe/silicon_disc.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/devices/bus/einstein/pipe/silicon_disc.h b/src/devices/bus/einstein/pipe/silicon_disc.h new file mode 100644 index 00000000000..9a4a8caf85d --- /dev/null +++ b/src/devices/bus/einstein/pipe/silicon_disc.h @@ -0,0 +1,54 @@ +// license: GPL-2.0+ +// copyright-holders: Dirk Best +/*************************************************************************** + + Silicon Disc + + A 256k RAM drive that gets accessed as drive 3. + +***************************************************************************/ + +#ifndef MAME_BUS_EINSTEIN_SILICON_DISC_H +#define MAME_BUS_EINSTEIN_SILICON_DISC_H + +#pragma once + +#include "pipe.h" + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> einstein_silicon_disc_device + +class einstein_silicon_disc_device : public device_t, public device_tatung_pipe_interface +{ +public: + // construction/destruction + einstein_silicon_disc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_WRITE8_MEMBER(sector_low_w); + DECLARE_WRITE8_MEMBER(sector_high_w); + DECLARE_READ8_MEMBER(ram_r); + DECLARE_WRITE8_MEMBER(ram_w); + +protected: + virtual const tiny_rom_entry *device_rom_region() const override; + virtual void device_start() override; + virtual void device_reset() override; + +private: + DECLARE_ADDRESS_MAP(map, 8); + + required_memory_region m_rom; + required_memory_region m_bios; + + std::unique_ptr<uint8_t[]> m_ram; + uint16_t m_sector; +}; + +// device type definition +DECLARE_DEVICE_TYPE(EINSTEIN_SILICON_DISC, einstein_silicon_disc_device) + +#endif // MAME_BUS_EINSTEIN_SILICON_DISC_H |