1 // license:BSD-3-Clause 2 // copyright-holders:Olivier Galibert 3 /*************************************************************************** 4 5 h8s2357.h 6 7 H8S-2357 family emulation 8 9 H8S/2000-based mcus. 10 11 Variant ROM RAM 12 H8S/2357 128K 8K 13 H8S/2352 - 8K 14 H8S/2398 256K 8K 15 H8S/2394 - 32K 16 H8S/2392 - 8K 17 H8S/2390 - 4K 18 19 20 21 ***************************************************************************/ 22 23 #ifndef MAME_CPU_H8_H8S2357_H 24 #define MAME_CPU_H8_H8S2357_H 25 26 #pragma once 27 28 #include "h8s2000.h" 29 #include "h8_intc.h" 30 #include "h8_adc.h" 31 #include "h8_port.h" 32 #include "h8_timer8.h" 33 #include "h8_timer16.h" 34 #include "h8_sci.h" 35 #include "h8_watchdog.h" 36 37 class h8s2357_device : public h8s2000_device { 38 public: 39 h8s2357_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 40 41 uint8_t syscr_r(); 42 void syscr_w(uint8_t data); 43 44 protected: 45 required_device<h8s_intc_device> intc; 46 required_device<h8_adc_device> adc; 47 required_device<h8_port_device> port1; 48 required_device<h8_port_device> port2; 49 required_device<h8_port_device> port3; 50 required_device<h8_port_device> port4; 51 required_device<h8_port_device> port5; 52 required_device<h8_port_device> port6; 53 required_device<h8_port_device> porta; 54 required_device<h8_port_device> portb; 55 required_device<h8_port_device> portc; 56 required_device<h8_port_device> portd; 57 required_device<h8_port_device> porte; 58 required_device<h8_port_device> portf; 59 required_device<h8_port_device> portg; 60 required_device<h8h_timer8_channel_device> timer8_0; 61 required_device<h8h_timer8_channel_device> timer8_1; 62 required_device<h8_timer16_device> timer16; 63 required_device<h8s_timer16_channel_device> timer16_0; 64 required_device<h8s_timer16_channel_device> timer16_1; 65 required_device<h8s_timer16_channel_device> timer16_2; 66 required_device<h8s_timer16_channel_device> timer16_3; 67 required_device<h8s_timer16_channel_device> timer16_4; 68 required_device<h8s_timer16_channel_device> timer16_5; 69 required_device<h8_sci_device> sci0; 70 required_device<h8_sci_device> sci1; 71 required_device<h8_sci_device> sci2; 72 required_device<h8_watchdog_device> watchdog; 73 74 uint32_t ram_start; 75 unsigned char syscr; 76 77 h8s2357_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start); 78 79 virtual bool exr_in_stack() const override; 80 virtual void update_irq_filter() override; 81 virtual void interrupt_taken() override; 82 virtual int trace_setup() override; 83 virtual int trapa_setup() override; 84 virtual void irq_setup() override; 85 virtual void internal_update(uint64_t current_time) override; 86 virtual void device_add_mconfig(machine_config &config) override; 87 void map(address_map &map); 88 89 virtual void device_start() override; 90 virtual void device_reset() override; 91 virtual void execute_set_input(int inputnum, int state) override; 92 }; 93 94 class h8s2352_device : public h8s2357_device { 95 public: 96 h8s2352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 97 }; 98 99 class h8s2398_device : public h8s2357_device { 100 public: 101 h8s2398_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 102 }; 103 104 class h8s2394_device : public h8s2357_device { 105 public: 106 h8s2394_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 107 }; 108 109 class h8s2392_device : public h8s2357_device { 110 public: 111 h8s2392_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 112 }; 113 114 class h8s2390_device : public h8s2357_device { 115 public: 116 h8s2390_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 117 }; 118 119 DECLARE_DEVICE_TYPE(H8S2357, h8s2357_device) 120 DECLARE_DEVICE_TYPE(H8S2352, h8s2352_device) 121 DECLARE_DEVICE_TYPE(H8S2398, h8s2398_device) 122 DECLARE_DEVICE_TYPE(H8S2394, h8s2394_device) 123 DECLARE_DEVICE_TYPE(H8S2392, h8s2392_device) 124 DECLARE_DEVICE_TYPE(H8S2390, h8s2390_device) 125 126 #endif // MAME_CPU_H8_H8S2357_H 127