--- np2/pccore.c 2004/01/23 16:57:20 1.51 +++ np2/pccore.c 2004/01/27 03:24:18 1.55 @@ -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,16 @@ 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; } - pccore.hddif |= PCHDD_SCSI; // サウンドボードの接続 pccore.sound = np2cfg.SOUND_SW; @@ -284,8 +286,6 @@ void pccore_term(void) { fdd_eject(2); fdd_eject(3); - extmemmng_clear(); - iocore_destroy(); pc9861k_destruct(); @@ -326,32 +326,45 @@ 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; } + // HDDセット + sxsi_open(); +#if defined(SUPPORT_SASI) + if (sxsi_issasi()) { + pccore.hddif &= ~PCHDD_IDE; + pccore.hddif |= PCHDD_SASI; + TRACEOUT(("supported SASI")); + } +#endif +#if defined(SUPPORT_SCSI) + if (sxsi_isscsi()) { + pccore.hddif |= PCHDD_SCSI; + TRACEOUT(("supported SCSI")); + } +#endif sound_changeclock(); beep_changeclock(); @@ -360,6 +373,8 @@ void pccore_reset(void) { wavemix_bind(); #endif + fddfile_reset2dmode(); + bios0x18_16(0x20, 0xe1); iocore_reset(); // サウンドでpicを呼ぶので… cbuscore_reset(); @@ -378,7 +393,6 @@ void pccore_reset(void) { pal_change(1); bios_init(); - sxsi_open(); if (np2cfg.ITF_WORK) { CS_BASE = 0xf0000;