diff options
Diffstat (limited to 'src/devices/bus/hexbus/hx5102.h')
-rw-r--r-- | src/devices/bus/hexbus/hx5102.h | 79 |
1 files changed, 78 insertions, 1 deletions
diff --git a/src/devices/bus/hexbus/hx5102.h b/src/devices/bus/hexbus/hx5102.h index fdb0c198f8d..d554497bc65 100644 --- a/src/devices/bus/hexbus/hx5102.h +++ b/src/devices/bus/hexbus/hx5102.h @@ -18,6 +18,14 @@ #pragma once #include "hexbus.h" +#include "cpu/tms9900/tms9995.h" +#include "machine/upd765.h" +#include "machine/7474.h" +#include "machine/74123.h" +#include "machine/rescap.h" +#include "machine/ram.h" +#include "imagedev/floppy.h" +#include "tp0370.h" namespace bus { namespace hexbus { @@ -25,7 +33,76 @@ class hx5102_device : public hexbus_chained_device { public: hx5102_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - void hexbus_value_changed(uint8_t data) override; + +protected: + virtual const tiny_rom_entry *device_rom_region() const override; + virtual void device_add_mconfig(machine_config &config) override; + void crumap(address_map &map); + void memmap(address_map &map); + DECLARE_WRITE8_MEMBER(external_operation); + DECLARE_WRITE_LINE_MEMBER( clock_out ); + DECLARE_WRITE_LINE_MEMBER( board_ready ); + DECLARE_WRITE_LINE_MEMBER( board_reset ); + DECLARE_FLOPPY_FORMATS( floppy_formats ); + + void device_start() override; + void device_reset() override; + virtual void hexbus_value_changed(uint8_t data) override; + +private: + required_device<tms9995_device> m_flopcpu; + line_state m_ready_old; + + DECLARE_READ8_MEMBER(read); + DECLARE_WRITE8_MEMBER(write); + + DECLARE_WRITE_LINE_MEMBER(fdc_irq_w); + DECLARE_WRITE_LINE_MEMBER(fdc_drq_w); + DECLARE_WRITE_LINE_MEMBER(motor_w); + DECLARE_WRITE_LINE_MEMBER(mspeed_w); + + DECLARE_READ8_MEMBER(fdc_read); + DECLARE_WRITE8_MEMBER(fdc_write); + DECLARE_READ8_MEMBER(ibc_read); + DECLARE_WRITE8_MEMBER(ibc_write); + DECLARE_WRITE8_MEMBER(hexbus_out); + DECLARE_WRITE_LINE_MEMBER(hsklatch_out); + + DECLARE_READ8_MEMBER(cruread); + DECLARE_WRITE8_MEMBER(cruwrite); + + // Operate the floppy motors + bool m_motor_on; + bool m_mspeed_on; + + bool m_pending_int; + bool m_pending_drq; + + bool m_dcs; + + bool m_dack; + bool m_dacken; + + bool m_wait; + + void update_readyff_input(); + + // Link to the attached floppy drive + floppy_image_device* m_floppy; + + required_device<ibc_device> m_hexbus_ctrl; + required_device<i8272a_device> m_floppy_ctrl; + required_device<ttl74123_device> m_motormf; + required_device<ttl74123_device> m_speedmf; + required_device<ttl7474_device> m_readyff; + + // RAM + required_device<ram_device> m_ram1; + required_device<ram_device> m_ram2; + + // System ROM + uint8_t* m_rom1; + uint8_t* m_rom2; }; } } // end namespace bus::hexbus |