diff options
Diffstat (limited to 'src/devices/machine/smpc.h')
-rw-r--r-- | src/devices/machine/smpc.h | 88 |
1 files changed, 41 insertions, 47 deletions
diff --git a/src/devices/machine/smpc.h b/src/devices/machine/smpc.h index e832cdd2558..dfe8d541be5 100644 --- a/src/devices/machine/smpc.h +++ b/src/devices/machine/smpc.h @@ -1,19 +1,20 @@ // license:LGPL-2.1+ // copyright-holders:Angelo Salese, R. Belmont // TODO: make separate device when code is decoupled better -//DECLARE_WRITE8_MEMBER( stv_SMPC_w ); -//DECLARE_READ8_MEMBER( stv_SMPC_r ); -//DECLARE_WRITE8_MEMBER( saturn_SMPC_w ); -//DECLARE_READ8_MEMBER( saturn_SMPC_r ); +//void stv_SMPC_w(offs_t offset, uint8_t data); +//uint8_t stv_SMPC_r(offs_t offset); +//void saturn_SMPC_w(offs_t offset, uint8_t data); +//uint8_t saturn_SMPC_r(offs_t offset); -#ifndef MAME_MACHINE_SMPC_HLE_H -#define MAME_MACHINE_SMPC_HLE_H +#ifndef MAME_MACHINE_SMPC_H +#define MAME_MACHINE_SMPC_H #pragma once #include "screen.h" #include "bus/sat_ctrl/ctrl.h" #include "machine/nvram.h" +#include "dirtc.h" //************************************************************************** @@ -23,16 +24,17 @@ // ======================> smpc_hle_device class smpc_hle_device : public device_t, - public device_memory_interface + public device_memory_interface, + public device_rtc_interface { public: // construction/destruction smpc_hle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // I/O operations -// void io_map(address_map &map); - DECLARE_READ8_MEMBER( read ); - DECLARE_WRITE8_MEMBER( write ); +// void io_map(address_map &map) ATTR_COLD; + uint8_t read(offs_t offset); + void write(offs_t offset, uint8_t data); DECLARE_INPUT_CHANGED_MEMBER( trigger_nmi_r ); @@ -83,21 +85,19 @@ public: protected: // device-level overrides // virtual void device_validity_check(validity_checker &valid) const override; - virtual void device_add_mconfig(machine_config &config) override; - virtual void device_start() override; - virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + virtual void device_add_mconfig(machine_config &config) override ATTR_COLD; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; virtual space_config_vector memory_space_config() const override; + // device_rtc_interface overrides + virtual bool rtc_feature_y2k() const override { return true; } + virtual bool rtc_feature_leap_year() const override { return true; } + virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; + private: const address_space_config m_space_config; - enum { - COMMAND_ID = 1, - RTC_ID, - INTBACK_ID, - SNDRES_ID - }; emu_timer *m_cmd_timer; emu_timer *m_rtc_timer; @@ -142,8 +142,10 @@ private: void irq_request(); void resolve_intback(); - void intback_continue_request(); - void handle_rtc_increment(); + TIMER_CALLBACK_MEMBER(intback_continue_request); + TIMER_CALLBACK_MEMBER(handle_rtc_increment); + TIMER_CALLBACK_MEMBER(sound_reset); + TIMER_CALLBACK_MEMBER(handle_command); void read_saturn_ports(); void sr_set(uint8_t data); @@ -175,34 +177,26 @@ private: required_device<screen_device> m_screen; - void smpc_regs(address_map &map); - - DECLARE_WRITE8_MEMBER( ireg_w ); - DECLARE_WRITE8_MEMBER( command_register_w ); - DECLARE_READ8_MEMBER( oreg_r ); - DECLARE_READ8_MEMBER( status_register_r ); - DECLARE_WRITE8_MEMBER( status_flag_w ); - DECLARE_READ8_MEMBER( status_flag_r ); - DECLARE_READ8_MEMBER( pdr1_r ); - DECLARE_READ8_MEMBER( pdr2_r ); - DECLARE_WRITE8_MEMBER( pdr1_w ); - DECLARE_WRITE8_MEMBER( pdr2_w ); - DECLARE_WRITE8_MEMBER( ddr1_w ); - DECLARE_WRITE8_MEMBER( ddr2_w ); - DECLARE_WRITE8_MEMBER( iosel_w ); - DECLARE_WRITE8_MEMBER( exle_w ); + void smpc_regs(address_map &map) ATTR_COLD; + + void ireg_w(offs_t offset, uint8_t data); + void command_register_w(uint8_t data); + uint8_t oreg_r(offs_t offset); + uint8_t status_register_r(); + void status_flag_w(uint8_t data); + uint8_t status_flag_r(); + uint8_t pdr1_r(); + uint8_t pdr2_r(); + void pdr1_w(uint8_t data); + void pdr2_w(uint8_t data); + void ddr1_w(uint8_t data); + void ddr2_w(uint8_t data); + void iosel_w(uint8_t data); + void exle_w(uint8_t data); }; // device type definition DECLARE_DEVICE_TYPE(SMPC_HLE, smpc_hle_device) - - -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - - -#endif // MAME_MACHINE_SMPC_HLE_H - +#endif // MAME_MACHINE_SMPC_H |