--- np2/pccore.c 2003/12/21 16:05:25 1.34 +++ np2/pccore.c 2004/01/09 07:27:15 1.43 @@ -31,8 +31,10 @@ #include "sxsi.h" #include "calendar.h" #include "timing.h" -//#include "hostdrv.h" #include "debugsub.h" +#if defined(SUPPORT_HOSTDRV) +#include "hostdrv.h" +#endif const char np2version[] = NP2VER_CORE; @@ -51,8 +53,8 @@ 3, {0x0c, 0x0c, 0x08, 0x06, 0x03, 0x0c}, 64, 64, 64, 64, 64, 1, 0x82, 0, {0x17, 0x04, 0x1f}, {0x0c, 0x0c, 0x02, 0x10, 0x3f, 0x3f}, - 1, 80, 0, - {"", ""}, "", ""}; + 1, 80, 0, 0, + {"", ""}, "", "", ""}; PCCORE pc = { PCBASECLOCK25, 4, @@ -84,8 +86,6 @@ void getbiospath(char *path, const char const char *p; p = np2cfg.biospath; - - p = np2cfg.biospath; if (p[0]) { file_cpyname(path, p, maxlen); file_setseparator(path, maxlen); @@ -187,6 +187,9 @@ static void sound_init(void) { rate = 0; } sound_create(rate, np2cfg.delayms); +#if defined(SUPPORT_WAVEMIX) + wavemix_initialize(rate); +#endif beep_initialize(rate); beep_setvol(np2cfg.BEEP_VOL); tms3631_initialize(rate); @@ -201,11 +204,15 @@ static void sound_init(void) { adpcm_setvol(np2cfg.vol_adpcm); pcm86gen_initialize(rate); pcm86gen_setvol(np2cfg.vol_pcm); + cs4231_initialize(rate); } static void sound_term(void) { soundmng_stop(); +#if defined(SUPPORT_WAVEMIX) + wavemix_deinitialize(); +#endif rhythm_deinitialize(); sound_destroy(); } @@ -234,10 +241,18 @@ void pccore_init(void) { pc9861k_construct(); iocore_create(); + +#if defined(SUPPORT_HOSTDRV) + hostdrv_initialize(); +#endif } void pccore_term(void) { +#if defined(SUPPORT_HOSTDRV) + hostdrv_deinitialize(); +#endif + sound_term(); fdd_eject(0); @@ -278,8 +293,6 @@ void pccore_reset(void) { int i; -// reset_hostdrv(); - ZeroMemory(mem, 0x10fff0); // ver0.28 ZeroMemory(mem + VRAM1_B, 0x18000); ZeroMemory(mem + VRAM1_E, 0x08000); @@ -312,11 +325,19 @@ void pccore_reset(void) { nevent_init(); sound_reset(); +#if defined(SUPPORT_WAVEMIX) + wavemix_bind(); +#endif + + if (pc.model & PCMODEL_EPSON) { // RAM ctrl + CPU_RAM_D000 = 0xffff; + } iocore_reset(); // サウンドでpicを呼ぶので… cbuscore_reset(); fmboard_reset(np2cfg.SOUND_SW); + i286_memorymap((pc.model & PCMODEL_EPSON)?1:0); iocore_build(); iocore_bind(); cbuscore_bind(); @@ -349,6 +370,10 @@ void pccore_reset(void) { sysmng_cpureset(); soundmng_play(); + +#if defined(SUPPORT_HOSTDRV) + hostdrv_reset(); +#endif } static void drawscreen(void) { @@ -551,6 +576,9 @@ void pccore_exec(BOOL draw) { pic_irq(); if (CPU_RESETREQ) { CPU_RESETREQ = 0; +#if 1 + CPU_SHUT(); +#else CPU_CS = 0xf000; CS_BASE = 0xf0000; CPU_IP = 0xfff0; @@ -558,6 +586,7 @@ void pccore_exec(BOOL draw) { CPU_DX = 0x0300; #endif CPU_CLEARPREFETCH(); +#endif } #if 1 // ndef TRACE @@ -587,7 +616,7 @@ void pccore_exec(BOOL draw) { #if defined(TRACE) execcnt++; if (execcnt >= 60) { - TRACEOUT(("resetcnt = %d / pic %d", resetcnt, piccnt)); +// TRACEOUT(("resetcnt = %d / pic %d", resetcnt, piccnt)); execcnt = 0; resetcnt = 0; piccnt = 0;