OSDN Git Service

[VM][WIP][STATE] Updating state framework to upstream 2018-10-05.Still may cause...
[csp-qt/common_source_project-fm7.git] / source / src / vm / libcpu_newdev / device.h
index 0b4bd75..3a659b2 100644 (file)
@@ -15,7 +15,7 @@
 #include "../emu.h"
 #if defined(_USE_QT)
 #include "osd.h"
-#include "csp_logger.h"
+
 //#define USE_DEVICE_NAME
 #endif
 // max devices connected to the output port
 #define SIG_SCSI_ACK           309
 #define SIG_SCSI_RST           310
 
+#include "vm_template.h"
 
-class VM;
+class CSP_Logger;
+class VM_TEMPLATE;
 class EMU;
 class OSD;
 class DEVICE
 {
 protected:
-       VM* vm;
+       VM_TEMPLATE* vm;
        EMU* emu;
        OSD* osd;
+       CSP_Logger *p_logger;
 public:
-       DEVICE(VM* parent_vm, EMU* parent_emu);
-       //ToDo: Will implement real destructor per real classes and below destructor decl. with "virtual".
-       // This makes warning:
-       //"deleting object of polymorphic class type 'DEVICE' which has non-virtual
-       // destructor might cause undefined behavior [-Wdelete-non-virtual-dtor]".
-       //~DEVICE(void);
-       virtual ~DEVICE() {}
-       
-       virtual void initialize() { /* osd = emu->get_osd(); */}
-       virtual void release() {}
+       DEVICE(VM_TEMPLATE* parent_vm, EMU* parent_emu);
+       ~DEVICE() {}
+
+       virtual void initialize() { }
+       virtual void release();
        
        virtual void update_config() {}
        virtual void save_state(FILEIO* state_fio) {}
@@ -81,6 +79,15 @@ public:
        {
                reset();
        }
+       virtual bool process_state(FILEIO* state_fio, bool loading)
+       {
+               if(loading) {
+                       return load_state(state_fio);
+               } else {
+                       save_state(state_fio);
+                       return true;
+               }
+       }
        
        // NOTE: the virtual bus interface functions for 16/32bit access invite the cpu is little endian.
        // if the cpu is big endian, you need to implement them in the virtual machine memory/io classes.
@@ -556,7 +563,7 @@ public:
        virtual void set_device_name(const _TCHAR *format, ...);
        virtual void out_debug_log(const char *fmt, ...);
        virtual void force_out_debug_log(const char *fmt, ...);
-#if 1
+
        // debugger
        // DEBUGGER is enabled by default.
        virtual void *get_debugger();
@@ -577,9 +584,13 @@ public:
        virtual bool write_debug_reg(const _TCHAR *reg, uint32_t data);
        virtual void get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
        virtual int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
-#endif
+       
+       // misc
+       const _TCHAR *get_lib_common_vm_version(void);
+
        _TCHAR this_device_name[128];
        
+       // device node using with iterator.
        DEVICE* prev_device;
        DEVICE* next_device;
        int this_device_id;