1 // license:BSD-3-Clause 2 // copyright-holders:Olivier Galibert 3 /*************************************************************************** 4 5 h83337.h 6 7 H8-3337 family emulation 8 9 H8-300-based mcus. 10 11 Variant ROM RAM 12 H8/3334 32K 1K 13 H8/3336 48K 2K 14 H8/3337 60K 2K 15 16 The 3394, 3396, and 3397 variants are the mask-rom versions. 17 18 19 ***************************************************************************/ 20 21 #ifndef MAME_CPU_H8_H83337_H 22 #define MAME_CPU_H8_H83337_H 23 24 #pragma once 25 26 #include "h8.h" 27 #include "h8_intc.h" 28 #include "h8_adc.h" 29 #include "h8_port.h" 30 #include "h8_timer8.h" 31 #include "h8_timer16.h" 32 #include "h8_sci.h" 33 #include "h8_watchdog.h" 34 35 class h83337_device : public h8_device { 36 public: 37 h83337_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 38 39 uint8_t wscr_r(); 40 void wscr_w(uint8_t data); 41 uint8_t stcr_r(); 42 void stcr_w(uint8_t data); 43 uint8_t syscr_r(); 44 void syscr_w(uint8_t data); 45 uint8_t mdcr_r(); 46 void mdcr_w(uint8_t data); 47 48 protected: 49 h83337_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t start); 50 51 required_device<h8_intc_device> intc; 52 required_device<h8_adc_device> adc; 53 required_device<h8_port_device> port1; 54 required_device<h8_port_device> port2; 55 required_device<h8_port_device> port3; 56 required_device<h8_port_device> port4; 57 required_device<h8_port_device> port5; 58 required_device<h8_port_device> port6; 59 required_device<h8_port_device> port7; 60 required_device<h8_port_device> port8; 61 required_device<h8_port_device> port9; 62 required_device<h8_timer8_channel_device> timer8_0; 63 required_device<h8_timer8_channel_device> timer8_1; 64 required_device<h8_timer16_device> timer16; 65 required_device<h8_timer16_channel_device> timer16_0; 66 required_device<h8_sci_device> sci0; 67 required_device<h8_sci_device> sci1; 68 required_device<h8_watchdog_device> watchdog; 69 70 uint8_t syscr; 71 uint32_t ram_start; 72 73 virtual void update_irq_filter() override; 74 virtual void interrupt_taken() 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 h83334_device : public h83337_device { 86 public: 87 h83334_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 88 }; 89 90 class h83336_device : public h83337_device { 91 public: 92 h83336_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 93 }; 94 95 DECLARE_DEVICE_TYPE(H83334, h83334_device) 96 DECLARE_DEVICE_TYPE(H83336, h83336_device) 97 DECLARE_DEVICE_TYPE(H83337, h83337_device) 98 99 #endif // MAME_CPU_H8_H83337_H 100