1 // license:BSD-3-Clause 2 // copyright-holders:Olivier Galibert 3 /*************************************************************************** 4 5 h83008.h 6 7 H8/3008 8 9 H8/300H-based mcu. 10 11 12 ***************************************************************************/ 13 14 #ifndef MAME_CPU_H8_H83008_H 15 #define MAME_CPU_H8_H83008_H 16 17 #pragma once 18 19 #include "h8h.h" 20 #include "h8_adc.h" 21 #include "h8_port.h" 22 #include "h8_intc.h" 23 #include "h8_timer8.h" 24 #include "h8_timer16.h" 25 #include "h8_sci.h" 26 #include "h8_watchdog.h" 27 28 class h83008_device : public h8h_device { 29 public: 30 h83008_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 31 set_mode_a20()32 void set_mode_a20() { mode_a20 = true; } set_mode_a24()33 void set_mode_a24() { mode_a20 = false; } 34 35 uint8_t syscr_r(); 36 void syscr_w(uint8_t data); 37 38 protected: 39 required_device<h8h_intc_device> intc; 40 required_device<h8_adc_device> adc; 41 required_device<h8_port_device> port4; 42 required_device<h8_port_device> port6; 43 required_device<h8_port_device> port7; 44 required_device<h8_port_device> port8; 45 required_device<h8_port_device> port9; 46 required_device<h8_port_device> porta; 47 required_device<h8_port_device> portb; 48 required_device<h8h_timer8_channel_device> timer8_0; 49 required_device<h8h_timer8_channel_device> timer8_1; 50 required_device<h8h_timer8_channel_device> timer8_2; 51 required_device<h8h_timer8_channel_device> timer8_3; 52 required_device<h8_timer16_device> timer16; 53 required_device<h8h_timer16_channel_device> timer16_0; 54 required_device<h8h_timer16_channel_device> timer16_1; 55 required_device<h8h_timer16_channel_device> timer16_2; 56 required_device<h8_sci_device> sci0; 57 required_device<h8_sci_device> sci1; 58 required_device<h8_watchdog_device> watchdog; 59 60 uint8_t syscr; 61 62 virtual void update_irq_filter() override; 63 virtual void interrupt_taken() override; 64 virtual int trapa_setup() override; 65 virtual void irq_setup() override; 66 virtual void internal_update(uint64_t current_time) override; 67 virtual void device_add_mconfig(machine_config &config) override; 68 void map(address_map &map); 69 70 virtual void device_start() override; 71 virtual void device_reset() override; 72 virtual void execute_set_input(int inputnum, int state) override; 73 }; 74 75 DECLARE_DEVICE_TYPE(H83008, h83008_device) 76 77 #endif // MAME_CPU_H8_H83008_H 78