OSDN Git Service

[VM][I286] Save cpustate without StateBuffer().
[csp-qt/common_source_project-fm7.git] / source / src / vm / hc20 / memory.h
index 016838e..ce76c3a 100644 (file)
@@ -7,8 +7,8 @@
        [ memory ]
 */
 
-#ifndef _MEMORY_H_
-#define _MEMORY_H_
+#ifndef _HC20_MEMORY_H_
+#define _HC20_MEMORY_H_
 
 #include "../vm.h"
 #include "../../emu.h"
 #define SIG_MEMORY_SIO_TF20    4
 #define SIG_MEMORY_RTC_IRQ     5
 
-#define CMT_BUFFER_SIZE                0x10000
+#define CMT_BUFFER_SIZE                0x40000
 
 class BEEP;
 class FIFO;
 
-class MEMORY : public DEVICE
+class HC20_MEMORY : public DEVICE
 {
 private:
        BEEP *d_beep;
-       DEVICE *d_cpu, *d_rtc, *d_tf20;
+       DEVICE *d_cpu, *d_rtc, *d_sio_tf20;
        
-       uint8 wdmy[0x2000];
-       uint8 rdmy[0x2000];
-       uint8* wbank[8];
-       uint8* rbank[8];
+       uint8_t wdmy[0x2000];
+       uint8_t rdmy[0x2000];
+       uint8_t* wbank[8];
+       uint8_t* rbank[8];
        
        // memory with expansion unit
-       uint8 ram[0x8000];      // 0000h-7fffh
-       uint8 rom[0x8000];      // 8000h-ffffh (internal)
-       uint8 ext[0x4000];      // 8000h-bfffh
+       uint8_t ram[0x8000];    // 0000h-7fffh
+       uint8_t rom[0x8000];    // 8000h-ffffh (internal)
+       uint8_t ext[0x4000];    // 8000h-bfffh
        
        FIFO *cmd_buf;
        bool sio_select;
        bool special_cmd_masked;
-       uint8 slave_mem[0x10000];
+       uint8_t slave_mem[0x10000];
        
-       typedef struct {
+       struct {
                double freq;
                int period;
                int remain;
-       } sound_t;
-       sound_t sound[256];
+       } sound[256];
        int sound_ptr;
        int sound_count;
-       uint8 sound_reply;
+       uint8_t sound_reply;
        double sound_freq;
        double tone_table[57];
        
-       uint8 key_stat[256], key_flag[256];
+       uint8_t key_stat[256], key_flag[256];
        int key_data, key_strobe, key_intmask;
        
-       uint8 cmt_buffer[CMT_BUFFER_SIZE];
-       int cmt_count;
-       bool cmt_play, cmt_rec;
        FILEIO* cmt_fio;
+       bool cmt_play, cmt_rec;
+       _TCHAR cmt_file_path[_MAX_PATH];
+       int cmt_count;
+       uint8_t cmt_buffer[CMT_BUFFER_SIZE];
        
        typedef struct {
-               uint8 buffer[80];
+               uint8_t buffer[80];
                int bank;
                int addr;
        } lcd_t;
        lcd_t lcd[6];
        
-       scrntype lcd_render[32][120];
-       scrntype pd, pb;
-       uint8 lcd_select, lcd_data;
+       scrntype_t lcd_render[32][120];
+       scrntype_t pd, pb;
+       uint8_t lcd_select, lcd_data;
        int lcd_clock;
        
        int int_status;
        int int_mask;
+
+       bool tmp_wbank_is_ext;
+       bool tmp_rbank_is_ext;
        
        void update_sound();
        void update_keyboard();
        void update_intr();
-       void send_to_slave(uint8 val);
-       void send_to_main(uint8 val);
+       void send_to_slave(uint8_t val);
+       void send_to_main(uint8_t val);
        
 public:
-       MEMORY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}
-       ~MEMORY() {}
+       HC20_MEMORY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+       {
+               set_device_name(_T("Memory Bus"));
+       }
+       ~HC20_MEMORY() {}
        
        // common functions
        void initialize();
        void release();
        void reset();
-       void write_data8(uint32 addr, uint32 data);
-       uint32 read_data8(uint32 addr);
-       void write_signal(int id, uint32 data, uint32 mask);
+       void write_data8(uint32_t addr, uint32_t data);
+       uint32_t read_data8(uint32_t addr);
+       void write_signal(int id, uint32_t data, uint32_t mask);
        void event_callback(int event_id, int err);
+       bool process_state(FILEIO* state_fio, bool loading);
        
-       // unitque function
+       // unique functions
        void set_context_beep(BEEP* device)
        {
                d_beep = device;
@@ -114,17 +121,17 @@ public:
        {
                d_rtc = device;
        }
-       void set_context_tf20(DEVICE* device)
+       void set_context_sio_tf20(DEVICE* device)
        {
-               d_tf20 = device;
+               d_sio_tf20 = device;
        }
        void notify_power_off();
        void key_down(int code);
        void key_up(int code);
-       void play_tape(_TCHAR* file_path);
-       void rec_tape(_TCHAR* file_path);
+       void play_tape(const _TCHAR* file_path);
+       void rec_tape(const _TCHAR* file_path);
        void close_tape();
-       bool tape_inserted()
+       bool is_tape_inserted()
        {
                return (cmt_play || cmt_rec);
        }