1 // license:BSD-3-Clause 2 // copyright-holders:Olivier Galibert 3 /*************************************************************************** 4 5 h83048.h 6 7 H8-3048 family emulation 8 9 H8-300H-based mcus. 10 11 Variant ROM RAM 12 H8/3044 32K 2K 13 H8/3045 64K 2K 14 H8/3047 96K 4K 15 H8/3048 192K 4K 16 17 The 3394, 3396, and 3997 variants are the mask-rom versions. 18 19 20 ***************************************************************************/ 21 22 #ifndef MAME_CPU_H8_H83048_H 23 #define MAME_CPU_H8_H83048_H 24 25 #include "h8h.h" 26 #include "h8_adc.h" 27 #include "h8_port.h" 28 #include "h8_intc.h" 29 #include "h8_timer16.h" 30 #include "h8_sci.h" 31 #include "h8_watchdog.h" 32 33 class h83048_device : public h8h_device { 34 public: 35 h83048_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 36 set_mode_a20()37 void set_mode_a20() { mode_a20 = true; } set_mode_a24()38 void set_mode_a24() { mode_a20 = false; } 39 40 uint8_t syscr_r(); 41 void syscr_w(uint8_t data); 42 43 protected: 44 h83048_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start); 45 46 required_device<h8h_intc_device> intc; 47 required_device<h8_adc_device> adc; 48 required_device<h8_port_device> port1; 49 required_device<h8_port_device> port2; 50 required_device<h8_port_device> port3; 51 required_device<h8_port_device> port4; 52 required_device<h8_port_device> port5; 53 required_device<h8_port_device> port6; 54 required_device<h8_port_device> port7; 55 required_device<h8_port_device> port8; 56 required_device<h8_port_device> port9; 57 required_device<h8_port_device> porta; 58 required_device<h8_port_device> portb; 59 required_device<h8_timer16_device> timer16; 60 required_device<h8h_timer16_channel_device> timer16_0; 61 required_device<h8h_timer16_channel_device> timer16_1; 62 required_device<h8h_timer16_channel_device> timer16_2; 63 required_device<h8h_timer16_channel_device> timer16_3; 64 required_device<h8h_timer16_channel_device> timer16_4; 65 required_device<h8_sci_device> sci0; 66 required_device<h8_sci_device> sci1; 67 required_device<h8_watchdog_device> watchdog; 68 69 uint32_t ram_start; 70 uint8_t syscr; 71 72 virtual void update_irq_filter() override; 73 virtual void interrupt_taken() override; 74 virtual int trapa_setup() override; 75 virtual void irq_setup() override; 76 virtual void internal_update(uint64_t current_time) override; 77 virtual void device_add_mconfig(machine_config &config) override; 78 void map(address_map &map); 79 80 virtual void device_start() override; 81 virtual void device_reset() override; 82 virtual void execute_set_input(int inputnum, int state) override; 83 }; 84 85 class h83044_device : public h83048_device { 86 public: 87 h83044_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 88 }; 89 90 class h83045_device : public h83048_device { 91 public: 92 h83045_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 93 }; 94 95 class h83047_device : public h83048_device { 96 public: 97 h83047_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 98 }; 99 100 DECLARE_DEVICE_TYPE(H83044, h83044_device) 101 DECLARE_DEVICE_TYPE(H83045, h83045_device) 102 DECLARE_DEVICE_TYPE(H83047, h83047_device) 103 DECLARE_DEVICE_TYPE(H83048, h83048_device) 104 105 #endif // MAME_CPU_H8_H83048_H 106