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];
42 uint8 fm7_mainmem_omote[0x8000];
43 uint8 fm7_mainmem_ura[0x7c00];
44 uint8 fm7_mainmem_basicrom[0x7c00];
45 uint8 fm7_mainmem_bioswork[0x80];
46 uint8 *fm7_bootroms[4];
47 uint8 fm7_mainmem_bootrom_vector[0x1e]; // Without
48 uint8 fm7_mainmem_reset_vector[2]; // Without
49 uint8 fm7_mainmem_null[1];
52 #ifdef _FM77AV_VARIANTS
53 uint8 fm7_mainmem_mmrbank_0[0x10000]; // $00000-$0ffff
54 uint8 fm7_mainmem_mmrbank_2[0x10000]; // $20000-$2ffff
55 # if defined(_FM77AV40) || defined(_FM77AV40SX) || defined(_FM77AV40EX) || defined(_FM77AV20)
56 uint8 *fm7_mainmem_extram; // $40000- : MAX 768KB ($c0000)
57 uint8 fm7_mainmem_extrarom[0x20000]; // $20000-$2ffff, banked
58 uint8 fm7_mainmem_dictrom[0x20000]; // $20000-$2ffff, banked
61 uint8 *fm7_mainmem_extram; // $00000-$2ffff
64 KANJIROM *kanjiclass1;
65 KANJIROM *kanjiclass2;
68 bool diag_load_basicrom;
69 bool diag_load_bootrom_bas;
70 bool diag_load_bootrom_dos;
71 bool diag_load_bootrom_mmr;
73 bool extram_connected;
74 uint8 extram_pages; // Per 64KB, MAX=3(77) or 12(77AV40)
75 int getbank(uint32 addr, uint32 *realaddr);
76 int window_convert(uint32 addr, uint32 *realaddr);
77 int mmr_convert(uint32 addr, uint32 *realaddr);
78 int nonmmr_convert(uint32 addr, uint32 *realaddr);
79 uint32 read_bios(const char *name, uint8 *ptr, uint32 size);
84 FM7_MAINMEM(VM* parent_vm, EMU* parent_emu);
86 virtual uint32 read_data8(uint32 addr);
87 virtual void write_data8(uint32 addr, uint32 data);
88 virtual uint32 read_data16(uint32 addr);
89 virtual void write_data16(uint32 addr, uint32 data);
90 virtual uint32 read_data32(uint32 addr);
91 virtual void write_data32(uint32 addr, uint32 data);
92 void initialize(void);
95 bool get_loadstat_basicrom(void);
96 bool get_loadstat_bootrom_bas(void);
97 bool get_loadstat_bootrom_dos(void);
99 void set_context_display(DEVICE *p){
102 void set_context_mainio(DEVICE *p){
105 i = FM7_MAINMEM_MMIO;
106 read_table[i].dev = mainio;
107 read_table[i].memory = NULL;
108 write_table[i].dev = mainio;
109 write_table[i].memory = NULL;
112 void write_signal(int sigid, uint32 data, uint32 mask);