14 // this must be large enough to hold a physical address:
15 typedef uint32_t offs_t;
19 class device_state_entry {
24 virtual void device_start() = 0;
25 virtual void device_reset() = 0;
28 class cpu_device : public device_t {
32 cpu_device() : m_icountptr(NULL) {}
33 virtual uint32_t execute_min_cycles() const = 0;
34 virtual uint32_t execute_max_cycles() const = 0;
35 virtual uint32_t execute_input_lines() const = 0;
36 virtual uint32_t execute_default_irq_vector(int inputnum) const = 0;
37 virtual bool execute_input_edge_triggered(int inputnum) const = 0;
38 virtual void execute_run() = 0;
39 virtual void execute_burn(int32_t cycles) = 0;
40 virtual void execute_set_input(int inputnum, int state) = 0;
41 void set_icountptr(int &icount) {
43 m_icountptr = &icount;
45 int standard_irq_callback_member(device_t &device, int irqline) {
46 return standard_irq_callback(device, irqline);
48 virtual int standard_irq_callback(device_t &device, int irqline) = 0;
51 class machine_config {
56 virtual u8 read_byte(offs_t address) = 0;
57 virtual void write_byte(offs_t address, u8 data) = 0;
60 // PAIR is an endian-safe union useful for representing 32-bit CPU registers
63 //nick#ifdef LSB_FIRST
64 struct { u8 l,h,h2,h3; } b;
65 struct { u16 l,h; } w;
66 struct { s8 l,h,h2,h3; } sb;
67 struct { s16 l,h; } sw;
69 //nick struct { u8 h3,h2,h,l; } b;
70 //nick struct { s8 h3,h2,h,l; } sb;
71 //nick struct { u16 h,l; } w;
72 //nick struct { s16 h,l; } sw;
80 // device specific input lines start at 0