-
-#if !defined(_FM77AV_VARIANTS)
- for(i = 0; i <= 3; i++) {
- uint8 *p = fm7_bootroms[i];
- p[0x1fe] = 0xfe; // Set reset vector.
- p[0x1ff] = 0x00; //
- }
-
-#endif
- i = FM7_MAINMEM_RESET_VECTOR;
- fm7_mainmem_reset_vector[0] = 0xfe;
- fm7_mainmem_reset_vector[1] = 0x00;
-
- read_table[i].memory = fm7_mainmem_reset_vector;
-
- i = FM7_MAINMEM_BASICROM;
- memset(fm7_mainmem_basicrom, 0xff, 0x7c00 * sizeof(uint8));
-
- read_table[i].memory = fm7_mainmem_basicrom;
-#if !defined(_FM8)
- if(read_bios("FBASIC302.ROM", fm7_mainmem_basicrom, 0x7c00) == 0x7c00) {
- diag_load_basicrom = true;
- } else if(read_bios("FBASIC300.ROM", fm7_mainmem_basicrom, 0x7c00) == 0x7c00) {
- diag_load_basicrom = true;
- } else if(read_bios("FBASIC30.ROM", fm7_mainmem_basicrom, 0x7c00) == 0x7c00) {
- diag_load_basicrom = true;
- }
-
-#else // FM8
- if(read_bios("FBASIC10.ROM", fm7_mainmem_basicrom, 0x7c00) == 0x7c00) diag_load_basicrom = true;
-#endif
- emu->out_debug_log("BASIC ROM READING : %s", diag_load_basicrom ? "OK" : "NG");
-
- i = FM7_MAINMEM_BIOSWORK;
- memset(fm7_mainmem_bioswork, 0x00, 0x80 * sizeof(uint8));
- read_table[i].memory = fm7_mainmem_bioswork;
- write_table[i].memory = fm7_mainmem_bioswork;
-#if defined(CAPABLE_DICTROM)
- diag_load_dictrom = false;
- i = FM7_MAINMEM_DICTROM;
- memset(fm7_mainmem_dictrom, 0xff, 0x40000 * sizeof(uint8));
- read_table[i].memory = fm7_mainmem_dictrom;
- if(read_bios("DICROM.ROM", fm7_mainmem_dictrom, 0x40000) == 0x40000) diag_load_dictrom = true;
- emu->out_debug_log("DICTIONARY ROM READING : %s", diag_load_dictrom ? "OK" : "NG");
- dictrom_connected = diag_load_dictrom;
-
- i = FM7_MAINMEM_BACKUPED_RAM;
- diag_load_learndata = false;
- memset(fm7_mainmem_learndata, 0x00, 0x2000 * sizeof(uint8));
- read_table[i].memory = fm7_mainmem_learndata;
- write_table[i].memory = fm7_mainmem_learndata;
- if(read_bios("USERDIC.DAT", read_table[i].memory, 0x2000) == 0x2000) diag_load_learndata = true;
- emu->out_debug_log("DICTIONARY BACKUPED RAM READING : %s", diag_load_learndata ? "OK" : "NG");
- if(!diag_load_learndata) write_bios("USERDIC.DAT", fm7_mainmem_learndata, 0x2000);
-#endif
-
- i = FM7_MAINMEM_77AV40_EXTRAROM;
-#if defined(_FM77AV40SX) || defined(_FM77AV40EX)
- diag_load_extrarom = false;
- memset(fm7_mainmem_extrarom, 0xff, sizeof(fm7_mainmem_extrarom));
- read_table[i].memory = fm7_mainmem_extrarom;
- if(read_bios("EXTSUB.ROM", read_table[i].memory, 0xc000) == 0xc000) diag_load_extrarom = true;
- emu->out_debug_log("AV40SX/EX EXTRA ROM READING : %s", diag_load_extrarom ? "OK" : "NG");
-#endif
-}
-
-void FM7_MAINMEM::release()
-{
-# if defined(_FM77AV40) || defined(_FM77AV40SX) || defined(_FM77AV40EX) || \
- defined(_FM77_VARIANTS)
- if(fm7_mainmem_extram != NULL) free(fm7_mainmem_extram);
-#endif
-#if !defined(_FM77AV_VARIANTS)
- int i;
- for(i = 0; i < 4; i++) {
- if(fm7_bootroms[i] != NULL) free(fm7_bootroms[i]);
- fm7_bootroms[i] = NULL;
- }
-#endif
-#if defined(CAPABLE_DICTROM)
- write_bios("USERDIC.DAT", fm7_mainmem_learndata, 0x2000);
-#endif
-// MEMORY::release();
-}
-
-#define STATE_VERSION 2
-void FM7_MAINMEM::save_state(FILEIO *state_fio)
-{
- state_fio->FputUint32_BE(STATE_VERSION);
- state_fio->FputInt32_BE(this_device_id);
-
- // V1
- state_fio->FputBool(ioaccess_wait);
- state_fio->FputInt32_BE(waitfactor);
- state_fio->FputInt32_BE(waitcount);
-
- state_fio->FputBool(sub_halted);
-
- state_fio->FputBool(diag_load_basicrom);
- state_fio->FputBool(diag_load_bootrom_bas);
- state_fio->FputBool(diag_load_bootrom_dos);
- state_fio->FputBool(diag_load_bootrom_mmr);
- state_fio->Fwrite(fm7_mainmem_omote, sizeof(fm7_mainmem_omote), 1);
- state_fio->Fwrite(fm7_mainmem_ura, sizeof(fm7_mainmem_ura), 1);
- state_fio->Fwrite(fm7_mainmem_basicrom, sizeof(fm7_mainmem_basicrom), 1);
- state_fio->Fwrite(fm7_mainmem_bioswork, sizeof(fm7_mainmem_bioswork), 1);
- state_fio->Fwrite(fm7_mainmem_bootrom_vector, sizeof(fm7_mainmem_bootrom_vector), 1);
- state_fio->Fwrite(fm7_mainmem_reset_vector, sizeof(fm7_mainmem_reset_vector), 1);
-
- state_fio->Fwrite(fm7_mainmem_null, sizeof(fm7_mainmem_null), 1);