/*
Skelton for retropc emulator
+ Origin : MAME i286 core
Author : Takeda.Toshiya
Date : 2012.10.18-
#include "device.h"
#define SIG_I86_TEST 0
-#define SIG_I86_A20 1
+#define SIG_I286_A20 1
#ifdef USE_DEBUGGER
class DEBUGGER;
void *opaque;
public:
- I286(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ I286(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
#ifdef I86_PSEUDO_BIOS
d_bios = NULL;
#ifdef SINGLE_MODE_DMA
d_dma = NULL;
#endif
+#if defined(HAS_I86)
+ set_device_name(_T("8086 CPU"));
+#elif defined(HAS_I88)
+ set_device_name(_T("8088 CPU"));
+#elif defined(HAS_I186)
+ set_device_name(_T("80186 CPU"));
+#elif defined(HAS_V30)
+ set_device_name(_T("V30 CPU"));
+#elif defined(HAS_I286)
+ set_device_name(_T("80286 CPU"));
+#endif
}
~I286() {}
void release();
void reset();
int run(int icount);
- void write_signal(int id, uint32 data, uint32 mask);
- void set_intr_line(bool line, bool pending, uint32 bit);
+ void write_signal(int id, uint32_t data, uint32_t mask);
+ void set_intr_line(bool line, bool pending, uint32_t bit);
void set_extra_clock(int icount);
int get_extra_clock();
- uint32 get_pc();
- uint32 get_next_pc();
+ uint32_t get_pc();
+ uint32_t get_next_pc();
#ifdef USE_DEBUGGER
void *get_debugger()
{
return d_debugger;
}
- uint32 debug_prog_addr_mask()
+ uint32_t get_debug_prog_addr_mask()
{
#ifdef HAS_I286
return 0xffffff;
return 0xfffff;
#endif
}
- uint32 debug_data_addr_mask()
+ uint32_t get_debug_data_addr_mask()
{
#ifdef HAS_I286
return 0xffffff;
return 0xfffff;
#endif
}
- void debug_write_data8(uint32 addr, uint32 data);
- uint32 debug_read_data8(uint32 addr);
- void debug_write_data16(uint32 addr, uint32 data);
- uint32 debug_read_data16(uint32 addr);
- void debug_write_io8(uint32 addr, uint32 data);
- uint32 debug_read_io8(uint32 addr);
- void debug_write_io16(uint32 addr, uint32 data);
- uint32 debug_read_io16(uint32 addr);
- bool debug_write_reg(_TCHAR *reg, uint32 data);
- void debug_regs_info(_TCHAR *buffer, size_t buffer_len);
- int debug_dasm(uint32 pc, _TCHAR *buffer, size_t buffer_len);
+ void write_debug_data8(uint32_t addr, uint32_t data);
+ uint32_t read_debug_data8(uint32_t addr);
+ void write_debug_data16(uint32_t addr, uint32_t data);
+ uint32_t read_debug_data16(uint32_t addr);
+ void write_debug_io8(uint32_t addr, uint32_t data);
+ uint32_t read_debug_io8(uint32_t addr);
+ void write_debug_io16(uint32_t addr, uint32_t data);
+ uint32_t read_debug_io16(uint32_t addr);
+ bool write_debug_reg(const _TCHAR *reg, uint32_t data);
+ uint32_t read_debug_reg(const _TCHAR *reg);
+ void get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
+ int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
#endif
+ void decl_state_cpustate();
+ void save_state_cpustate(FILEIO* state_fio);
+ void load_state_cpustate(FILEIO* state_fio);
+
+ void decl_state();
void save_state(FILEIO* state_fio);
bool load_state(FILEIO* state_fio);
}
#endif
#ifdef HAS_I286
- void set_address_mask(uint32 mask);
- uint32 get_address_mask();
+ void set_address_mask(uint32_t mask);
+ uint32_t get_address_mask();
void set_shutdown_flag(int shutdown);
int get_shutdown_flag();
#endif