--- xmil/pccore.c 2004/08/01 05:31:29 1.1 +++ xmil/pccore.c 2004/08/08 17:45:52 1.17 @@ -4,52 +4,42 @@ #include "soundmng.h" #include "sysmng.h" #include "timemng.h" +#include "xmilver.h" #include "z80core.h" #include "pccore.h" #include "iocore.h" -#include "x1_io.h" -#include "x1_crtc.h" -#include "x1_vram.h" -#include "x1_fdc.h" -#include "draw.h" +#include "timing.h" +#include "calendar.h" +#include "keystat.h" +#include "palettes.h" +#include "makescrn.h" #include "sound.h" #include "sndctrl.h" -#include "menu.h" #include "font.h" -#include "juliet.h" -#include "xmilver.h" #include "fddfile.h" -#include "calendar.h" -#include "timing.h" #include "defrom.res" -#include "keystat.h" const OEMCHAR xmilversion[] = OEMTEXT(XMILVER_CORE); - XMILCFG xmilcfg = { 0, 0, 1, 0, 1, 2, 0, 1, - 22050, 1000, 0, 80, - 0, 0, - 0, 0, - 0, 0, 0, - 1, - 1, 0}; + XMILCFG xmilcfg = { 2, 0, 1, + 1, 0, 0, 0, + 22050, 500, 0, 0, 80, + 0, 0, 0, 0}; - PCCORE pccore = {250, 0, 1, 1, 0}; + PCCORE pccore = {250, 0, 1, 0}; + CORESTAT corestat; BYTE mMAIN[0x10000]; BYTE mBIOS[0x8000]; - BYTE mBANK[16][0x8000]; -// BYTE KNJ_FNT[0x4bc00]; - BYTE GRP_RAM[0x20000]; - BYTE TXT_RAM[0x01800]; - WORD v_cnt; - int s_cnt; +#if defined(SUPPORT_EMS) + UINT8 mBANK[16][0x8000]; +#endif + UINT v_cnt; + UINT s_cnt; BYTE *RAM0r; BYTE *RAM0w; - BYTE lastmem; DWORD h_cntbase; - BRESULT soundrenewal; @@ -57,21 +47,21 @@ const OEMCHAR xmilversion[] = OEMTEXT(XM IPL-ROM LOAD ***********************************************************************/ -void ipl_load(void) { +static void ipl_load(void) { FILEH hdl; ZeroMemory(mBIOS, sizeof(mBIOS)); - memcpy(mBIOS, DEFROM, sizeof(DEFROM)); + CopyMemory(mBIOS, DEFROM, sizeof(DEFROM)); if (pccore.ROM_TYPE >= 2) { - if ((hdl = file_open_c("IPLROM.X1T")) != FILEH_INVALID) { + if ((hdl = file_open_c(OEMTEXT("IPLROM.X1T"))) != FILEH_INVALID) { file_read(hdl, mBIOS, 0x8000); file_close(hdl); } } else if (pccore.ROM_TYPE == 1) { - if ((hdl = file_open_c("IPLROM.X1")) != FILEH_INVALID) { + if ((hdl = file_open_c(OEMTEXT("IPLROM.X1"))) != FILEH_INVALID) { file_read(hdl, mBIOS, 0x8000); file_close(hdl); } @@ -80,23 +70,12 @@ void ipl_load(void) { /*********************************************************************** - FONT-ROM LOAD -***********************************************************************/ - -void fnt_load(void) { - - font_load(NULL, TRUE); -} - - -/*********************************************************************** ½é´ü²½ ***********************************************************************/ -BYTE reset_x1(BYTE ROM_TYPE, BYTE SOUND_SW, BYTE DIP_SW) { +static BRESULT reset_x1(BYTE ROM_TYPE, BYTE SOUND_SW, BYTE DIP_SW) { pccore.HSYNC_CLK = 250; - pccore.ROM_SW = 1; pccore.ROM_TYPE = ROM_TYPE; pccore.SOUND_SW = SOUND_SW; pccore.DIP_SW = DIP_SW; @@ -111,12 +90,11 @@ BYTE reset_x1(BYTE ROM_TYPE, BYTE SOUND_ scrnmng_setcolormode(FALSE); } - textdrawproc_renewal(); ipl_load(); Z80_RESET(); + iocore_reset(); - lastmem = 0x78; RAM0r = mBIOS; RAM0w = mMAIN; h_cntbase = 0; @@ -124,20 +102,22 @@ BYTE reset_x1(BYTE ROM_TYPE, BYTE SOUND_ calendar_initialize(); - init_fdc(); - subcpu_reset(); - ppi_reset(); - init_crtc(); - init_vram(); - cgrom_reset(); cmt_reset(); + crtc_reset(); ctc_reset(); dmac_reset(); + fdc_reset(); + memio_reset(); pcg_reset(); + ppi_reset(); sio_reset(); sndboard_reset(); + subcpu_reset(); + vramio_reset(); + pal_reset(); + makescrn_reset(); timing_reset(); return(SUCCESS); } @@ -149,33 +129,29 @@ BYTE reset_x1(BYTE ROM_TYPE, BYTE SOUND_ ***********************************************************************/ static BYTE keyintcnt = 0; -static BYTE flame = 0; -static BYTE inttiming = 0; void pccore_initialize(void) { sndctrl_initialize(); + makescrn_initialize(); - init_draw(); - fnt_load(); + font_load(NULL, TRUE); + crtc_initialize(); pcg_initialize(); ppi_initialize(); - - reset_x1(xmilcfg.ROM_TYPE, xmilcfg.SOUND_SW, xmilcfg.DIP_SW); - -// keystat_initialize(); -// keystat_reset(); } void pccore_reset(void) { soundmng_stop(); - if (soundrenewal) { - soundrenewal = 0; + if (corestat.soundrenewal) { + corestat.soundrenewal = 0; sndctrl_deinitialize(); sndctrl_initialize(); } + sound_reset(); + reset_x1(xmilcfg.ROM_TYPE, xmilcfg.SOUND_SW, xmilcfg.DIP_SW); soundmng_play(); } @@ -226,20 +202,20 @@ void iptrace_out(void) { } #endif +void pccore_exec(BRESULT draw) { + REG8 inttiming; -void x1r_exec(void) { - -extern BYTE disp_flashscreen; + corestat.drawframe = draw; + soundmng_sync(); v_cnt = 0; s_cnt = 0; - xmilcfg.DISPSYNC &= 1; inttiming = xmilcfg.CPU8MHz & 1; while(s_cnt < 266) { while(h_cnt < pccore.HSYNC_CLK) { -#if IPTRACE +#if defined(TRACE) && IPTRACE treip[trpos & (IPTRACE - 1)] = Z80_PC; trpos++; #endif @@ -250,10 +226,10 @@ extern BYTE disp_flashscreen; h_cntbase += pccore.HSYNC_CLK; inttiming ^= 2; if (inttiming != 3) { - if (xmilcfg.SOUNDPLY) { - sound_makesample(pcmbufsize[s_cnt]); - juliet2_exec(); - } + sound_makesample(pcmbufsize[s_cnt]); +// if (xmilcfg.SOUNDPLY) { +// juliet2_exec(); +// } s_cnt++; x1_ctc_int(); if (!((++keyintcnt) & 15)) { @@ -264,23 +240,15 @@ extern BYTE disp_flashscreen; } } v_cnt++; - if (crtc.CRT_YL == v_cnt) { + if (crtc.s.CRT_YL == v_cnt) { pcg.r.vsync = 1; - if (xmilcfg.DISPSYNC == 1) { - xmilcfg.DISPSYNC |= 0x80; + if (xmilcfg.DISPSYNC & 1) { scrnupdate(); } } } - if (++flame >= 60) { - flame = 0; - calendar_inc(); - } - if (!xmilcfg.SOUNDPLY) { - sound_makesample(framesoundcnt); - } - if (!(xmilcfg.DISPSYNC & 0x80)) { - scrnupdate(); - } + scrnupdate(); + calendar_inc(); + sound_sync(); }