OSDN Git Service

[VM] TRY:Use namespace {VMNAME} to separate around VMs. This feature still apply...
[csp-qt/common_source_project-fm7.git] / source / src / vm / ex80 / memory.h
1 /*
2         TOSHIBA EX-80 Emulator 'eEX-80'
3
4         Author : Takeda.Toshiya
5         Date   : 2015.12.14-
6
7         [ memory ]
8 */
9
10 #ifndef _EX80_MEMORY_H_
11 #define _EX80_MEMORY_H_
12
13 #include "../vm.h"
14 #include "../../emu.h"
15 #include "../device.h"
16
17 namespace EX80 {
18 class MEMORY : public DEVICE
19 {
20 private:
21         DEVICE *d_cpu;
22         
23         uint8_t mon[0x800];
24         uint8_t prom1[0x400];
25         uint8_t prom2[0x400];
26         uint8_t ram[0x800];
27         
28         uint8_t wdmy[0x400];
29         uint8_t rdmy[0x400];
30         uint8_t* wbank[64];
31         uint8_t* rbank[64];
32         
33 public:
34         MEMORY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
35         {
36                 set_device_name(_T("Memory Bus"));
37         }
38         ~MEMORY() {}
39         
40         // common functions
41         void initialize();
42         void write_data8(uint32_t addr, uint32_t data);
43         uint32_t read_data8(uint32_t addr);
44         uint32_t fetch_op(uint32_t addr, int *wait);
45         uint32_t get_intr_ack()
46         {
47                 // RST 7
48                 return 0xff;
49         }
50         bool process_state(FILEIO* state_fio, bool loading);
51         
52         // unique functions
53         void set_context_cpu(DEVICE* device)
54         {
55                 d_cpu = device;
56         }
57         uint8_t* get_ram()
58         {
59                 return ram;
60         }
61         void load_binary(const _TCHAR* file_path);
62         void save_binary(const _TCHAR* file_path);
63 };
64 }
65
66 #endif
67