2 Skelton for retropc emulator
4 Origin : MAME i386 core
5 Author : Takeda.Toshiya
8 [ i386/i486/Pentium/MediaGX ]
13 #if defined(USE_SHARED_DLL)
15 #include "libcpu_newdev/i386.h"
21 #define SIG_I386_A20 1
27 class I386 : public DEVICE
30 DEVICE *d_mem, *d_io, *d_pic;
31 #ifdef I386_PSEUDO_BIOS
34 #ifdef SINGLE_MODE_DMA
43 I386(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
45 #ifdef I386_PSEUDO_BIOS
48 #ifdef SINGLE_MODE_DMA
52 set_device_name(_T("i80386 CPU"));
53 #elif defined(HAS_I486)
54 set_device_name(_T("i80486 CPU"));
55 #elif defined(HAS_PENTIUM)
56 set_device_name(_T("Pentium CPU"));
57 #elif defined(HAS_MEDIAGX)
58 set_device_name(_T("Media GX CPU"));
59 #elif defined(HAS_PENTIUM_PRO)
60 set_device_name(_T("Pentium Pro CPU"));
61 #elif defined(HAS_PENTIUM_MMX)
62 set_device_name(_T("Pentium MMX CPU"));
63 #elif defined(HAS_PENTIUM2)
64 set_device_name(_T("Pentium2 CPU"));
65 #elif defined(HAS_PENTIUM3)
66 set_device_name(_T("Pentium3 CPU"));
67 #elif defined(HAS_PENTIUM4)
68 set_device_name(_T("Pentium4 CPU"));
71 set_device_name(_T("80386 CPU"));
72 #elif defined(HAS_I486)
73 set_device_name(_T("80486 CPU"));
74 #elif defined(HAS_PENTIUM)
75 set_device_name(_T("Pentium CPU"));
76 #elif defined(HAS_MEDIAGX)
77 set_device_name(_T("Media GX CPU"));
78 #elif defined(HAS_PENTIUM_PRO)
79 set_device_name(_T("Pentium Pro CPU"));
80 #elif defined(HAS_PENTIUM_MMX)
81 set_device_name(_T("Pentium MMX CPU"));
82 #elif defined(HAS_PENTIUM2)
83 set_device_name(_T("Pentium2 CPU"));
84 #elif defined(HAS_PENTIUM3)
85 set_device_name(_T("Pentium3 CPU"));
86 #elif defined(HAS_PENTIUM4)
87 set_device_name(_T("Pentium4 CPU"));
97 void write_signal(int id, uint32_t data, uint32_t mask);
98 void set_intr_line(bool line, bool pending, uint32_t bit);
99 void set_extra_clock(int cycles);
100 int get_extra_clock();
102 uint32_t get_next_pc();
108 uint32_t get_debug_prog_addr_mask()
112 uint32_t get_debug_data_addr_mask()
116 void write_debug_data8(uint32_t addr, uint32_t data);
117 uint32_t read_debug_data8(uint32_t addr);
118 void write_debug_data16(uint32_t addr, uint32_t data);
119 uint32_t read_debug_data16(uint32_t addr);
120 void write_debug_data32(uint32_t addr, uint32_t data);
121 uint32_t read_debug_data32(uint32_t addr);
122 void write_debug_io8(uint32_t addr, uint32_t data);
123 uint32_t read_debug_io8(uint32_t addr);
124 void write_debug_io16(uint32_t addr, uint32_t data);
125 uint32_t read_debug_io32(uint32_t addr);
126 void write_debug_io32(uint32_t addr, uint32_t data);
127 uint32_t read_debug_io16(uint32_t addr);
128 bool write_debug_reg(const _TCHAR *reg, uint32_t data);
129 uint32_t read_debug_reg(const _TCHAR *reg);
130 void get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
131 int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
133 void save_state(FILEIO* state_fio);
134 bool load_state(FILEIO* state_fio);
137 void set_context_mem(DEVICE* device)
141 void set_context_io(DEVICE* device)
145 void set_context_intr(DEVICE* device)
149 #ifdef I386_PSEUDO_BIOS
150 void set_context_bios(DEVICE* device)
155 #ifdef SINGLE_MODE_DMA
156 void set_context_dma(DEVICE* device)
162 void set_context_debugger(DEBUGGER* device)
167 void set_address_mask(uint32_t mask);
168 uint32_t get_address_mask();
169 void set_shutdown_flag(int shutdown);
170 int get_shutdown_flag();
172 #endif // USE_SHARED_DLL