1 // license:BSD-3-Clause 2 // copyright-holders:Olivier Galibert 3 /*************************************************************************** 4 5 h83002.h 6 7 H8/3002 8 9 H8/300H-based mcus. 10 11 12 ***************************************************************************/ 13 14 #ifndef MAME_CPU_H8_H83002_H 15 #define MAME_CPU_H8_H83002_H 16 17 #pragma once 18 19 #include "h8h.h" 20 #include "h8_adc.h" 21 #include "h8_dma.h" 22 #include "h8_port.h" 23 #include "h8_intc.h" 24 #include "h8_timer16.h" 25 #include "h8_sci.h" 26 #include "h8_watchdog.h" 27 28 class h83002_device : public h8h_device { 29 public: 30 h83002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 31 tend0()32 auto tend0() { return tend0_cb.bind(); } tend1()33 auto tend1() { return tend1_cb.bind(); } 34 set_mode_a20()35 void set_mode_a20() { mode_a20 = true; } set_mode_a24()36 void set_mode_a24() { mode_a20 = false; } 37 38 uint8_t syscr_r(); 39 void syscr_w(uint8_t data); 40 41 uint8_t rtmcsr_r(); 42 void rtmcsr_w(uint8_t data); 43 44 protected: 45 required_device<h8h_intc_device> intc; 46 required_device<h8_adc_device> adc; 47 optional_device<h8_dma_device> dma; 48 optional_device<h8_dma_channel_device> dma0; 49 optional_device<h8_dma_channel_device> dma1; 50 required_device<h8_port_device> port4; 51 required_device<h8_port_device> port6; 52 required_device<h8_port_device> port7; 53 required_device<h8_port_device> port8; 54 required_device<h8_port_device> port9; 55 required_device<h8_port_device> porta; 56 required_device<h8_port_device> portb; 57 required_device<h8_timer16_device> timer16; 58 required_device<h8h_timer16_channel_device> timer16_0; 59 required_device<h8h_timer16_channel_device> timer16_1; 60 required_device<h8h_timer16_channel_device> timer16_2; 61 required_device<h8h_timer16_channel_device> timer16_3; 62 required_device<h8h_timer16_channel_device> timer16_4; 63 required_device<h8_sci_device> sci0; 64 required_device<h8_sci_device> sci1; 65 required_device<h8_watchdog_device> watchdog; 66 67 uint8_t syscr; 68 uint8_t rtmcsr; 69 70 devcb_write_line tend0_cb, tend1_cb; 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 DECLARE_DEVICE_TYPE(H83002, h83002_device) 86 87 #endif // MAME_CPU_H8_H83002_H 88