--- np2/pccore.c 2004/01/23 16:57:20 1.51 +++ np2/pccore.c 2004/01/25 07:53:08 1.54 @@ -140,6 +140,7 @@ static void pccore_set(void) { UINT8 model; UINT32 multiple; + UINT8 extsize; ZeroMemory(&pccore, sizeof(pccore)); model = PCMODEL_VX; @@ -176,15 +177,19 @@ static void pccore_set(void) { pccore.midiclock = pccore.realclock / 3125; // 拡張メモリ + extsize = 0; if (!(np2cfg.dipsw[2] & 0x80)) { - pccore.extmem = np2cfg.EXTMEM; + extsize = min(np2cfg.EXTMEM, 13); } + pccore.extmem = extsize; // HDDの接続 (I/Oの使用状態が変わるので.. if (np2cfg.dipsw[1] & 0x20) { pccore.hddif |= PCHDD_IDE; } +#if defined(SUPPORT_SCSI) pccore.hddif |= PCHDD_SCSI; +#endif // サウンドボードの接続 pccore.sound = np2cfg.SOUND_SW; @@ -284,8 +289,6 @@ void pccore_term(void) { fdd_eject(2); fdd_eject(3); - extmemmng_clear(); - iocore_destroy(); pc9861k_destruct(); @@ -326,33 +329,30 @@ void pccore_reset(void) { sound_init(); } - ZeroMemory(mem, 0x10fff0); // ver0.28 + ZeroMemory(mem, 0x110000); // ver0.28 ZeroMemory(mem + VRAM1_B, 0x18000); ZeroMemory(mem + VRAM1_E, 0x08000); ZeroMemory(mem + FONT_ADRS, 0x08000); - CPU_RESET(); - CPU_TYPE = 0; - if (np2cfg.dipsw[2] & 0x80) { - CPU_TYPE = CPUTYPE_V30; - } - //メモリスイッチ for (i=0; i<8; i++) { mem[0xa3fe2 + i*4] = np2cfg.memsw[i]; } - fddfile_reset2dmode(); - bios0x18_16(0x20, 0xe1); - pccore_set(); nevent_init(); - CPU_SETEXTMEM(pccore.extmem); + + CPU_RESET(); + CPU_SETEXTSIZE((UINT32)pccore.extmem); + + CPU_TYPE = 0; + if (np2cfg.dipsw[2] & 0x80) { + CPU_TYPE = CPUTYPE_V30; + } if (pccore.model & PCMODEL_EPSON) { // RAM ctrl CPU_RAM_D000 = 0xffff; } - sound_changeclock(); beep_changeclock(); sound_reset(); @@ -360,6 +360,8 @@ void pccore_reset(void) { wavemix_bind(); #endif + fddfile_reset2dmode(); + bios0x18_16(0x20, 0xe1); iocore_reset(); // サウンドでpicを呼ぶので… cbuscore_reset();