#ifdef WITH_Z80
z80cpu = new Z80(this, emu);
#endif
+ // MEMORIES must set before initialize().
+ maincpu->set_context_mem(mainmem);
+ subcpu->set_context_mem(display);
+#ifdef WITH_Z80
+ z80cpu->set_context_mem(mainmem);
+#endif
#ifdef USE_DEBUGGER
maincpu->set_context_debugger(new DEBUGGER(this, emu));
subcpu->set_context_debugger(new DEBUGGER(this, emu));
+#ifdef WITH_Z80
+ z80cpu->set_context_debugger(new DEBUGGER(this, emu));
#endif
- for(DEVICE* device = first_device; device; device = device->next_device) {
- device->initialize();
- }
+#endif
+
+ //for(DEVICE* device = first_device; device; device = device->next_device) {
+ // device->initialize();
+ //}
connect_bus();
initialize();
}
subcpu->set_context_bus_halt(display, SIG_FM7_SUB_HALT, 0xffffffff);
subcpu->set_context_bus_clr(display, SIG_FM7_SUB_USE_CLR, 0x0000000f);
- maincpu->set_context_mem(mainmem);
- subcpu->set_context_mem(display);
event->register_frame_event(joystick);
+ for(DEVICE* device = first_device; device; device = device->next_device) {
+ device->initialize();
+ }
for(int i = 0; i < 2; i++) {
#if defined(_FM77AV20) || defined(_FM77AV40SX) || defined(_FM77AV40EX) || defined(_FM77AV40SX)
fdc->set_drive_type(i, DRIVE_TYPE_2DD);
extdet_neg = false;
- stat_romrammode = true;
+ //stat_romrammode = true;
if(bootmode == 0) { // IF BASIC BOOT THEN ROM
stat_romrammode = true;
} else { // ELSE RAM
memset(io_w_latch, 0x00, 0x100);
//mainmem->reset();
+ //maincpu->write_signal(SIG_CPU_BUSREQ, 0, 1);
//maincpu->reset();
}
bootmode = data & 0x03;
mainmem->write_signal(FM7_MAINIO_IS_BASICROM, (bootmode == 0) ? 0xffffffff : 0, 0xffffffff);
mainmem->write_signal(FM7_MAINIO_BOOTMODE, bootmode, 0x03);
+#if defined(_FM77AV_VARIANTS) || defined(_FM77_VARIANTS)
mainmem->write_signal(FM7_MAINIO_BOOTRAM_RW, (boot_ram) ? 0xffffffff : 0 , 0xffffffff);
+#else
+ mainmem->write_signal(FM7_MAINIO_BOOTRAM_RW, 0 , 0xffffffff);
+#endif
return;
} else if(addr == FM7_MAINIO_CLOCKMODE) {
set_clockmode((uint8)data);
{
uint32 realaddr;
int bank;
+#if defined(HAS_MMR)
if(addr >= FM7_MAINIO_WINDOW_OFFSET) {
switch(addr) {
case FM7_MAINIO_WINDOW_OFFSET:
}
return;
}
+#endif
bank = getbank(addr, &realaddr);
if(bank < 0) {
emu->out_debug_log("Illegal BANK: ADDR = %04x", addr);
p_vm = parent_vm;
p_emu = parent_emu;
#if !defined(_FM77AV_VARIANTS)
- for(i = 0; i < 4; i++) fm7_bootroms[i] = (uint8 *)malloc(0x200);
+ for(int i = 0; i < 4; i++) fm7_bootroms[i] = (uint8 *)malloc(0x200);
#endif
mainio = NULL;
display = NULL;
#if defined(_FM77AV40) || defined(_FM77AV40SX) || defined(_FM77AV40EX) || defined(_FM77AV20) || defined(_FM77_VARIANTS)
fm7_mainmem_extram = NULL;
#endif
+ // Initialize table
+ memset(read_table, 0x00, sizeof(read_table));
+ memset(write_table, 0x00, sizeof(write_table));
}
FM7_MAINMEM::~FM7_MAINMEM()
bootmode = config.boot_mode & 3;
basicrom_fd0f = false;
is_basicrom = (bootmode == 0) ? true : false;
- // Initialize table
+
// $0000-$7FFF
- memset(read_table, 0x00, sizeof(read_table));
- memset(write_table, 0x00, sizeof(write_table));
i = FM7_MAINMEM_OMOTE;
memset(fm7_mainmem_omote, 0x00, 0x8000 * sizeof(uint8));
read_table[i].memory = fm7_mainmem_omote;
memset(fm7_mainmem_ura, 0x00, 0x7c00 * sizeof(uint8));
read_table[i].memory = fm7_mainmem_ura;
write_table[i].memory = fm7_mainmem_ura;
-
i = FM7_MAINMEM_VECTOR;
memset(fm7_mainmem_bootrom_vector, 0x00, 0x1e);