OSDN Git Service

[VM] Add vm_template.h . This class, VM_TEMPLATE:: must be mother of VM:: .See fm7...
[csp-qt/common_source_project-fm7.git] / source / src / vm / i286.h
index 87008de..d6378bb 100644 (file)
@@ -1,6 +1,7 @@
 /*
        Skelton for retropc emulator
 
+       Origin : MAME i286 core
        Author : Takeda.Toshiya
        Date  : 2012.10.18-
 
@@ -15,7 +16,7 @@
 #include "device.h"
 
 #define SIG_I86_TEST   0
-#define SIG_I86_A20    1
+#define SIG_I286_A20   1
 
 #ifdef USE_DEBUGGER
 class DEBUGGER;
@@ -37,7 +38,7 @@ private:
        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;
@@ -45,6 +46,17 @@ public:
 #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() {}
        
@@ -53,18 +65,18 @@ public:
        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;
@@ -72,7 +84,7 @@ public:
                return 0xfffff;
 #endif
        }
-       uint32 debug_data_addr_mask()
+       uint32_t get_debug_data_addr_mask()
        {
 #ifdef HAS_I286
                return 0xffffff;
@@ -80,18 +92,24 @@ public:
                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);
        
@@ -127,8 +145,8 @@ public:
        }
 #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