--- np2/pccore.c 2004/01/25 05:41:28 1.52 +++ 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; @@ -348,6 +350,22 @@ void pccore_reset(void) { 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(); sound_reset(); @@ -375,7 +393,6 @@ void pccore_reset(void) { pal_change(1); bios_init(); - sxsi_open(); if (np2cfg.ITF_WORK) { CS_BASE = 0xf0000;