OSDN Git Service

0284f6d83df069dbb5fd933fa618fd4055f100aa
[csp-qt/common_source_project-fm7.git] / source / src / vm / fm7 / fm7_mainmem.h
1 /*
2  * Main memory without MMR for FM-7 [FM7_MAINMEM]
3  *  Author: K.Ohta
4  *  Date  : 2015.01.01-
5  *
6  */
7
8 #ifndef _FM7_MAINMEM_H_
9 #define _FM7_MAINMEM_H_
10
11
12 #include "fm7_common.h"
13
14 #define MEMORY_BANK_SIZE 0x8000
15 #define MEMORY_ADDR_MAX (FM7_MAINMEM_END * MEMORY_BANK_SIZE)
16 #include "../memory.h"
17
18 class DEVICE;
19 class MEMORY;
20 class FM7_SHAREDRAM;
21 class FM7_MAIN_IO;
22 class FM7_DIPSW;
23
24
25 class FM7_MAINMEM : public MEMORY
26 {
27    
28  protected:
29    EMU *p_emu;
30    VM *p_vm;
31    
32    uint8 fm7_mainmem_omote[0x8000];
33    uint8 fm7_mainmem_ura[0x7c00];
34    uint8 fm7_mainmem_basicrom[0x7c00];
35    uint8 fm7_mainmem_bioswork[0x80];
36    uint8 *fm7_bootroms[4];
37    uint8 fm7_mainmem_bootrom_vector[0x0e]; // Without
38    uint8 fm7_mainmem_resetvector[2] = {0xfe, 0x00}; // Reset vector. Addr = 0xfe00.
39         
40    bool diag_load_basicrom = false;
41    bool diag_load_bootrom_bas = false;
42    bool diag_load_bootrom_dos = false;
43
44    virtual int getbank(uint32 addr, uint32 *realaddr);
45  public:
46    FM7_MAINMEM(VM* parent_vm, EMU* parent_emu);
47    ~FM7_MAINMEM();
48     virtual uint32 read_data8(uint32 addr);
49     virtual void write_data8(uint32 addr, uint32 data);
50     virtual uint32 read_data16(uint32 addr);
51     virtual void write_data16(uint32 addr, uint32 data);
52     virtual uint32 read_data32(uint32 addr);
53     virtual void write_data32(uint32 addr, uint32 data);
54     bool get_loadstat_basicrom(void){
55          return diag_load_basicrom;
56     }
57     bool get_loadstat_bootrom_bas(void){
58       return diag_load_bootrom_bas;
59     }
60     bool get_loadstat_bootrom_dos(void){
61       return diag_load_bootrom_dos;
62     }
63 }
64
65 #endif