2 * Main memory without MMR for FM-7 [FM7_MAINMEM]
8 #ifndef _FM7_MAINMEM_H_
9 #define _FM7_MAINMEM_H_
11 #include "fm7_common.h"
13 #include "../memory.h"
14 #include "../mc6809.h"
15 #define MEMORY_ADDR_MAX 0x20000
16 #define MEMORY_BANK_SIZE 0x20000
17 #define MEMORY_BANK_SIZE 0x10
18 #define MEMORY_ADDR_MAX (FM7_MAINMEM_END * MEMORY_BANK_SIZE)
24 class FM7_MAINMEM : public MEMORY
32 bank_t read_table[FM7_MAINMEM_END];
33 bank_t write_table[FM7_MAINMEM_END];
43 uint8 fm7_mainmem_omote[0x8000];
44 uint8 fm7_mainmem_ura[0x7c00];
45 uint8 fm7_mainmem_basicrom[0x7c00];
46 uint8 fm7_mainmem_bioswork[0x80];
47 uint8 *fm7_bootroms[4];
48 uint8 fm7_mainmem_bootrom_vector[0x1e]; // Without
49 uint8 fm7_mainmem_reset_vector[2]; // Without
50 uint8 fm7_mainmem_null[1];
53 #ifdef _FM77AV_VARIANTS
54 uint8 fm7_mainmem_mmrbank_0[0x10000]; // $00000-$0ffff
55 uint8 fm7_mainmem_mmrbank_2[0x10000]; // $20000-$2ffff
56 # if defined(_FM77AV40) || defined(_FM77AV40SX) || defined(_FM77AV40EX) || defined(_FM77AV20)
57 uint8 *fm7_mainmem_extram; // $40000- : MAX 768KB ($c0000)
58 uint8 fm7_mainmem_extrarom[0x20000]; // $20000-$2ffff, banked
59 uint8 fm7_mainmem_dictrom[0x20000]; // $20000-$2ffff, banked
62 uint8 *fm7_mainmem_extram; // $00000-$2ffff
65 KANJIROM *kanjiclass1;
66 KANJIROM *kanjiclass2;
69 bool diag_load_basicrom;
70 bool diag_load_bootrom_bas;
71 bool diag_load_bootrom_dos;
72 bool diag_load_bootrom_mmr;
74 bool extram_connected;
75 uint8 extram_pages; // Per 64KB, MAX=3(77) or 12(77AV40)
76 int getbank(uint32 addr, uint32 *realaddr);
77 int window_convert(uint32 addr, uint32 *realaddr);
78 int mmr_convert(uint32 addr, uint32 *realaddr);
79 int nonmmr_convert(uint32 addr, uint32 *realaddr);
80 uint32 read_bios(const char *name, uint8 *ptr, uint32 size);
85 FM7_MAINMEM(VM* parent_vm, EMU* parent_emu);
87 virtual uint32 read_data8(uint32 addr);
88 virtual void write_data8(uint32 addr, uint32 data);
89 virtual uint32 read_data16(uint32 addr);
90 virtual void write_data16(uint32 addr, uint32 data);
91 virtual uint32 read_data32(uint32 addr);
92 virtual void write_data32(uint32 addr, uint32 data);
93 void initialize(void);
97 bool get_loadstat_basicrom(void);
98 bool get_loadstat_bootrom_bas(void);
99 bool get_loadstat_bootrom_dos(void);
101 void set_context_display(DEVICE *p){
104 void set_context_mainio(DEVICE *p){
107 i = FM7_MAINMEM_MMIO;
108 read_table[i].dev = mainio;
109 read_table[i].memory = NULL;
110 write_table[i].dev = mainio;
111 write_table[i].memory = NULL;
114 void write_signal(int sigid, uint32 data, uint32 mask);