OSDN Git Service

[VM][STATE] .
authorK.Ohta <whatisthis.sowhat@gmail.com>
Sat, 30 Jun 2018 18:05:26 +0000 (03:05 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Sat, 30 Jun 2018 18:05:26 +0000 (03:05 +0900)
12 files changed:
source/src/vm/bubcom80/membus.cpp
source/src/vm/bubcom80/membus.h
source/src/vm/fm16beta/mainbus.cpp
source/src/vm/fm16beta/mainbus.h
source/src/vm/fm16beta/sub.cpp
source/src/vm/fm16beta/sub.h
source/src/vm/scsi_cdrom.cpp
source/src/vm/scsi_cdrom.h
source/src/vm/scsi_dev.cpp
source/src/vm/scsi_hdd.cpp
source/src/vm/scsi_hdd.h
source/src/vm/tk80bs/membus.h

index d278b81..6019723 100644 (file)
@@ -85,14 +85,13 @@ void MEMBUS::decl_state()
 {
        enter_decl_state(STATE_VERSION);
 
-       MEMORY::decl_state(); // ??
-
        DECL_STATE_ENTRY_1D_ARRAY(ram, sizeof(ram));
        DECL_STATE_ENTRY_PAIR(basic_addr);
        DECL_STATE_ENTRY_BOOL(ram_selected);
        
        leave_decl_state();
        
+//     MEMORY::decl_state(); // ??
 }
 void MEMBUS::save_state(FILEIO* state_fio)
 {
@@ -102,12 +101,12 @@ void MEMBUS::save_state(FILEIO* state_fio)
 
 //     state_fio->FputUint32(STATE_VERSION);
 //     state_fio->FputInt32(this_device_id);
-       
-//     MEMORY::save_state(state_fio); // OK?
 
 //     state_fio->Fwrite(ram, sizeof(ram), 1);
 //     state_fio->FputUint32(basic_addr.d);
 //     state_fio->FputBool(ram_selected);
+
+       MEMORY::save_state(state_fio); // OK?
 }
 
 bool MEMBUS::load_state(FILEIO* state_fio)
@@ -127,9 +126,9 @@ bool MEMBUS::load_state(FILEIO* state_fio)
 //             return false;
 //     }
 
-//     if(!MEMORY::load_state(state_fio)) {  // OK?
-//             return false;
-//     }
+       if(!MEMORY::load_state(state_fio)) {  // OK?
+               return false;
+       }
 
 //     state_fio->Fread(ram, sizeof(ram), 1);
 //     basic_addr.d = state_fio->FgetUint32();
index f5e0018..623777c 100644 (file)
 
 #include "../memory.h"
 
+//class csp_state_utils;
+
 class MEMBUS : public MEMORY
 {
 private:
+//     csp_state_utils *state_entry;
        
        uint8_t boot[0x800];
        uint8_t basic[0x10000];
index f5ff57c..c2d1067 100644 (file)
@@ -430,8 +430,9 @@ void MAINBUS::decl_state()
 {
        enter_decl_state(STATE_VERSION);
 
-
        leave_decl_state();
+
+//     MEMORY::decl_state();
 }
 
 void MAINBUS::save_state(FILEIO* state_fio)
@@ -442,7 +443,8 @@ void MAINBUS::save_state(FILEIO* state_fio)
 
 //     state_fio->FputUint32(STATE_VERSION);
 //     state_fio->FputInt32(this_device_id);
-       
+
+       MEMORY::save_state(state_fio);
 }
 
 bool MAINBUS::load_state(FILEIO* state_fio)
@@ -461,6 +463,7 @@ bool MAINBUS::load_state(FILEIO* state_fio)
 //     if(state_fio->FgetInt32() != this_device_id) {
 //             return false;
 //     }
+       if(MEMORY::load_state(state_fio) == false) return false;
        return true;
 }
 
index c6117d2..264ab94 100644 (file)
@@ -43,9 +43,12 @@ class I286;
 class I8237;
 class MB8877;
 
+//class csp_state_utils;
 class MAINBUS : public MEMORY
 {
 private:
+       //csp_state_utils *state_entry;
+
 #ifdef HAS_I286
        I286 *d_cpu;
        uint8_t rst;
index 33ea2ee..781600e 100644 (file)
@@ -938,10 +938,10 @@ void SUB::draw_cg()
 void SUB::decl_state()
 {
        enter_decl_state(STATE_VERSION);
-
-       MEMORY::decl_state(); //
-
+       
        leave_decl_state();
+
+//     MEMORY::decl_state(); //
 }
 
 void SUB::save_state(FILEIO* state_fio)
@@ -953,7 +953,7 @@ void SUB::save_state(FILEIO* state_fio)
 //     state_fio->FputUint32(STATE_VERSION);
 //     state_fio->FputInt32(this_device_id);
        
-//     MEMORY::save_state(state_fio);
+       MEMORY::save_state(state_fio);
 }
 
 bool SUB::load_state(FILEIO* state_fio)
@@ -972,9 +972,9 @@ bool SUB::load_state(FILEIO* state_fio)
 //     if(state_fio->FgetInt32() != this_device_id) {
 //             return false;
 //     }
-//     if(!MEMORY::load_state(state_fio)) {
-//             return false;
-//     }
+       if(!MEMORY::load_state(state_fio)) {
+               return false;
+       }
        return true;
 }
 
index c43fe13..c44e1c9 100644 (file)
 #define SIG_SUB_HALT   4
 #define SIG_SUB_MAINACK        5
 
+//class csp_state_utils;
 class SUB : public MEMORY
 {
+
 private:
        DEVICE *d_crtc, *d_pcm, *d_main, *d_subcpu, *d_keyboard;
        
+//     csp_state_utils *state_entry;
+       
        uint8_t gvram[0x30000];
        uint8_t dummy[0x8000];  // dummy plane
        uint8_t cvram[0x1000];
index e9cb7f2..9734ca7 100644 (file)
@@ -722,7 +722,7 @@ void SCSI_CDROM::set_volume(int volume)
 void SCSI_CDROM::decl_state()
 {
        enter_decl_state(STATE_VERSION);
-       
+
        DECL_STATE_ENTRY_UINT32(cdda_start_frame);
        DECL_STATE_ENTRY_UINT32(cdda_end_frame);
        DECL_STATE_ENTRY_UINT32(cdda_playing_frame);
@@ -741,9 +741,11 @@ void SCSI_CDROM::decl_state()
 //     } else {
 //             state_fio->FputUint32(0);
 //     }
-       SCSI_DEV::decl_state();
 
        leave_decl_state();
+
+       // ToDo: Add Fix Value.
+       SCSI_DEV::decl_state();
 }
 void SCSI_CDROM::save_state(FILEIO* state_fio)
 {
@@ -774,8 +776,9 @@ void SCSI_CDROM::save_state(FILEIO* state_fio)
        } else {
                saver.put_dword(0, &crc_value, &stat);
        }
-       //SCSI_DEV::save_state(state_fio);
        saver.post_proc_saving(&crc_value, &stat);
+
+       //SCSI_DEV::save_state(state_fio);
 }
 
 bool SCSI_CDROM::load_state(FILEIO* state_fio)
index 976d1c8..15fd9c6 100644 (file)
@@ -17,6 +17,7 @@
 #define SIG_SCSI_CDROM_SAMPLE_R        2
 
 class FILEIO;
+//class csp_state_utils;
 
 class SCSI_CDROM : public SCSI_DEV
 {
@@ -46,6 +47,9 @@ private:
        
        int volume_m;
        int volume_l, volume_r;
+
+//protected:
+//     csp_state_utils *state_entry;
        
 public:
        SCSI_CDROM(VM* parent_vm, EMU* parent_emu) : SCSI_DEV(parent_vm, parent_emu) 
index 3d9234c..05f369e 100644 (file)
@@ -812,7 +812,8 @@ void SCSI_DEV::write_buffer(int length)
 
 void SCSI_DEV::decl_state()
 {
-       enter_decl_state(STATE_VERSION);
+       // ToDo: Add Fix Value.
+//     enter_decl_state(STATE_VERSION);
 
        DECL_STATE_ENTRY_UINT32(data_bus);
        DECL_STATE_ENTRY_BOOL(sel_status);
@@ -835,7 +836,7 @@ void SCSI_DEV::decl_state()
        DECL_STATE_ENTRY_UINT64(position);
        DECL_STATE_ENTRY_UINT64(remain);
 
-       leave_decl_state();
+//     leave_decl_state();
 }
 void SCSI_DEV::save_state(FILEIO* state_fio)
 {
index 955c3a3..0e6b388 100644 (file)
@@ -108,13 +108,17 @@ void SCSI_HDD::decl_state()
 {
        enter_decl_state(STATE_VERSION);
        
-       SCSI_DEV::decl_state();
-
        leave_decl_state();
+
+       SCSI_DEV::decl_state();
 }
 
 void SCSI_HDD::save_state(FILEIO* state_fio)
 {
+       uint32_t crc_value = 0xffffffff;
+       if(state_entry != NULL) {
+               state_entry->save_state(state_fio, &crc_value);
+       }
 //     state_fio->FputUint32(STATE_VERSION);
 //     state_fio->FputInt32(this_device_id);
 /*
@@ -124,11 +128,18 @@ void SCSI_HDD::save_state(FILEIO* state_fio)
                }
        }
 */
-       SCSI_DEV::save_state(state_fio);
+//     SCSI_DEV::save_state(state_fio);
 }
 
 bool SCSI_HDD::load_state(FILEIO* state_fio)
 {
+       uint32_t crc_value = 0xffffffff;
+       bool stat = false;
+       bool mb = false;
+       if(state_entry != NULL) {
+          mb = state_entry->load_state(state_fio, &crc_value);
+       }
+       if(!mb) return false;
 //     if(state_fio->FgetUint32() != STATE_VERSION) {
 //             return false;
 //     }
@@ -144,6 +155,7 @@ bool SCSI_HDD::load_state(FILEIO* state_fio)
                }
        }
 */
-       return SCSI_DEV::load_state(state_fio);
+//     return SCSI_DEV::load_state(state_fio);
+       return true;
 }
 
index d22e6d0..6c5e0da 100644 (file)
 #include "scsi_dev.h"
 
 class HARDDISK;
+//class csp_state_utils;
 
 class SCSI_HDD : public SCSI_DEV
 {
 private:
        HARDDISK* disk[8];
        
+//protected:
+//     csp_state_utils *state_entry;
+
 public:
        SCSI_HDD(VM* parent_vm, EMU* parent_emu) : SCSI_DEV(parent_vm, parent_emu) 
        {
index 06445d4..16fdd8c 100644 (file)
 #define SIG_MEMBUS_PC7 0
 #endif
 
+//class csp_state_utils;
+
 class MEMBUS : public MEMORY
 {
 private:
        DEVICE *d_cpu;
+
+//     csp_state_utils *state_entry;
+
 #if defined(_TK85)
        uint32_t pc7, count;
 #endif