--- xmil/pccore.c 2004/08/11 12:08:16 1.20 +++ xmil/pccore.c 2004/08/12 11:03:08 1.22 @@ -40,9 +40,7 @@ const OEMCHAR xmilversion[] = OEMTEXT(XM BYTE *RAM0w; -/*********************************************************************** - IPL-ROM LOAD -***********************************************************************/ +// ---- static void ipl_load(void) { @@ -66,19 +64,49 @@ static void ipl_load(void) { } -/*********************************************************************** - 初期化 -***********************************************************************/ +// ---- + +void pccore_initialize(void) { + + fddfile_initialize(); + sndctrl_initialize(); + makescrn_initialize(); + + font_load(NULL, TRUE); + + crtc_initialize(); + pcg_initialize(); + ppi_initialize(); +} + +void pccore_deinitialize(void) { + + sndctrl_deinitialize(); + + fddfile_eject(0); + fddfile_eject(1); + fddfile_eject(2); + fddfile_eject(3); +} + +void pccore_reset(void) { + + soundmng_stop(); + if (corestat.soundrenewal) { + corestat.soundrenewal = 0; + sndctrl_deinitialize(); + sndctrl_initialize(); + } + sound_reset(); -static BRESULT reset_x1(BYTE ROM_TYPE, BYTE SOUND_SW, BYTE DIP_SW) { pccore.baseclock = 2000000; pccore.multiple = 2; pccore.realclock = pccore.baseclock * pccore.multiple; - pccore.HSYNC_CLK = 250; - pccore.ROM_TYPE = ROM_TYPE; - pccore.SOUND_SW = SOUND_SW; - pccore.DIP_SW = DIP_SW; + + pccore.ROM_TYPE = xmilcfg.ROM_TYPE; + pccore.SOUND_SW = xmilcfg.SOUND_SW; + pccore.DIP_SW = xmilcfg.DIP_SW; // スクリーンモードの変更... if (pccore.ROM_TYPE >= 3) { @@ -89,18 +117,19 @@ static BRESULT reset_x1(BYTE ROM_TYPE, B else { scrnmng_setcolormode(FALSE); } - sound_changeclock(); - ipl_load(); + sound_changeclock(); + sysmng_cpureset(); Z80_RESET(); + nevent_allreset(); + ievent_reset(); iocore_reset(); + ipl_load(); + RAM0r = mBIOS; RAM0w = mMAIN; - sysmng_cpureset(); - - calendar_initialize(); cgrom_reset(); cmt_reset(); @@ -116,59 +145,14 @@ static BRESULT reset_x1(BYTE ROM_TYPE, B subcpu_reset(); vramio_reset(); + calendar_initialize(); pal_reset(); makescrn_reset(); timing_reset(); - return(SUCCESS); -} - - - -/*********************************************************************** - 実行/終了 -***********************************************************************/ - -void pccore_initialize(void) { - - fddfile_initialize(); - sndctrl_initialize(); - makescrn_initialize(); - - font_load(NULL, TRUE); - - crtc_initialize(); - pcg_initialize(); - ppi_initialize(); -} - -void pccore_reset(void) { - soundmng_stop(); - if (corestat.soundrenewal) { - corestat.soundrenewal = 0; - sndctrl_deinitialize(); - sndctrl_initialize(); - } - sound_reset(); - - nevent_allreset(); - ievent_reset(); - reset_x1(xmilcfg.ROM_TYPE, xmilcfg.SOUND_SW, xmilcfg.DIP_SW); soundmng_play(); } -void pccore_deinitialize(void) { - - sndctrl_deinitialize(); - -// keyboard_term(); - - fddfile_eject(0); - fddfile_eject(1); - fddfile_eject(2); - fddfile_eject(3); -} - // ---- @@ -249,13 +233,14 @@ void nvitem_vdisp(UINT id) { if (xmilcfg.DISPSYNC & 1) { scrnupdate(); } - nevent_set(NEVENT_FRAMES, (corestat.tl - corestat.vl) * 250, + nevent_set(id, (corestat.tl - corestat.vl) * 250, nvitem_vsync, NEVENT_RELATIVE); } void nvitem_vsync(UINT id) { corestat.vsync = 2; + (void)id; }