Diff for /xmil/pccore.c between versions 1.20 and 1.25

version 1.20, 2004/08/11 12:08:16 version 1.25, 2004/08/12 17:57:36
Line 24 Line 24
   
 const OEMCHAR xmilversion[] = OEMTEXT(XMILVER_CORE);  const OEMCHAR xmilversion[] = OEMTEXT(XMILVER_CORE);
   
         XMILCFG         xmilcfg = { 2, 0, 1,          XMILCFG         xmilcfg = { 2, 1, 0x03,
                                                         1, 0, 0, 0,                                                          1, 0, 0, 0,
                                                         22050, 500, 0, 0, 80,                                                          22050, 500, 0, 0, 80,
                                                         0, 0, 0, 0};                                                          0, 0, 0, 0};
   
         PCCORE          pccore;          PCCORE          pccore;
         CORESTAT        corestat;          CORESTAT        corestat;
         BYTE            mMAIN[0x10000];          UINT8           mMAIN[0x10000];
         BYTE            mBIOS[0x8000];          UINT8           mBIOS[0x8000];
 #if defined(SUPPORT_BANKMEM)  #if defined(SUPPORT_BANKMEM)
         UINT8           mBANK[16][0x8000];          UINT8           mBANK[16][0x8000];
 #endif  #endif
Line 40  const OEMCHAR xmilversion[] = OEMTEXT(XM Line 40  const OEMCHAR xmilversion[] = OEMTEXT(XM
         BYTE            *RAM0w;          BYTE            *RAM0w;
   
   
 /***********************************************************************  // ----
         IPL-ROM LOAD  
 ***********************************************************************/  
   
 static void ipl_load(void) {  static void ipl_load(void) {
   
Line 66  static void ipl_load(void) { Line 64  static void ipl_load(void) {
 }  }
   
   
 /***********************************************************************  // ----
         初期化  
 ***********************************************************************/  
   
 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;  
   
         // スクリーンモードの変更...  
         if (pccore.ROM_TYPE >= 3) {  
                 if (scrnmng_setcolormode(TRUE) != SUCCESS) {  
                         pccore.ROM_TYPE = 2;  
                 }  
         }  
         else {  
                 scrnmng_setcolormode(FALSE);  
         }  
         sound_changeclock();  
   
         ipl_load();  
   
         Z80_RESET();  
         iocore_reset();  
   
         RAM0r = mBIOS;  
         RAM0w = mMAIN;  
         sysmng_cpureset();  
   
         calendar_initialize();  
   
         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);  
 }  
   
   
   
 /***********************************************************************  
         実行/終了  
 ***********************************************************************/  
   
 void pccore_initialize(void) {  void pccore_initialize(void) {
   
Line 141  void pccore_initialize(void) { Line 79  void pccore_initialize(void) {
         ppi_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) {  void pccore_reset(void) {
   
         soundmng_stop();          soundmng_stop();
Line 149  void pccore_reset(void) { Line 97  void pccore_reset(void) {
                 sndctrl_deinitialize();                  sndctrl_deinitialize();
                 sndctrl_initialize();                  sndctrl_initialize();
         }          }
   
           pccore.baseclock = 2000000;
           pccore.multiple = 2;
           pccore.realclock = pccore.baseclock * pccore.multiple;
   
           pccore.ROM_TYPE = xmilcfg.ROM_TYPE;
           pccore.SOUND_SW = xmilcfg.SOUND_SW;
           pccore.DIP_SW = xmilcfg.DIP_SW;
   
           // スクリーンモードの変更...
           if (pccore.ROM_TYPE >= 3) {
                   if (scrnmng_setcolormode(TRUE) != SUCCESS) {
                           pccore.ROM_TYPE = 2;
                   }
           }
           else {
                   scrnmng_setcolormode(FALSE);
           }
   
           sysmng_cpureset();
   
           sound_changeclock();
         sound_reset();          sound_reset();
   
           Z80_RESET();
         nevent_allreset();          nevent_allreset();
         ievent_reset();          ievent_reset();
         reset_x1(xmilcfg.ROM_TYPE, xmilcfg.SOUND_SW, xmilcfg.DIP_SW);          calendar_reset();
         soundmng_play();          iocore_reset();
 }  
   
 void pccore_deinitialize(void) {          ipl_load();
   
         sndctrl_deinitialize();          RAM0r = mBIOS;
           RAM0w = mMAIN;
   
 //      keyboard_term();          pal_reset();
           makescrn_reset();
           timing_reset();
   
         fddfile_eject(0);          soundmng_play();
         fddfile_eject(1);  
         fddfile_eject(2);  
         fddfile_eject(3);  
 }  }
   
   
Line 204  void iptrace_out(void) { Line 174  void iptrace_out(void) {
 #endif  #endif
   
   
 #if 0  
 void nvitem_raster(UINT id) {  
   
         nevent_repeat(id);  
         sound_makesample(pcmbufsize[v_cnt]);  
 //      x1_ctc_int();  
         if (!((++keyintcnt) & 15)) {  
                 x1_sub_int();  
                 if (xmilcfg.MOUSE_SW) {  
                         sio_int();  
                 }  
         }  
         v_cnt++;  
         if (crtc.s.CRT_YL == v_cnt) {  
                 pcg.r.vsync = 1;  
                 if (xmilcfg.DISPSYNC & 1) {  
                         scrnupdate();  
                 }  
         }  
 }  
 #endif  
   
 UINT pccore_getraster(UINT *h) {  UINT pccore_getraster(UINT *h) {
   
         SINT32  work;          SINT32  work;
Line 242  UINT pccore_getraster(UINT *h) { Line 190  UINT pccore_getraster(UINT *h) {
         return(vl);          return(vl);
 }  }
   
 void nvitem_vdisp(UINT id) {  void neitem_disp(UINT id) {
   
         corestat.vsync = 1;          corestat.vsync = 1;
         pcg.r.vsync = 1;          pcg.r.vsync = 1;
         if (xmilcfg.DISPSYNC & 1) {          if (xmilcfg.DISPSYNC & 1) {
                 scrnupdate();                  scrnupdate();
         }          }
         nevent_set(NEVENT_FRAMES, (corestat.tl - corestat.vl) * 250,          nevent_set(id, (corestat.tl - corestat.vl) * 250,
                                                                                         nvitem_vsync, NEVENT_RELATIVE);                                                                                          neitem_vsync, NEVENT_RELATIVE);
 }  }
   
 void nvitem_vsync(UINT id) {  void neitem_vsync(UINT id) {
   
         corestat.vsync = 2;          corestat.vsync = 2;
           (void)id;
 }  }
   
   
Line 267  void pccore_exec(BRESULT draw) { Line 216  void pccore_exec(BRESULT draw) {
         soundmng_sync();          soundmng_sync();
   
         corestat.tl = 266 * pccore.multiple / 2;          corestat.tl = 266 * pccore.multiple / 2;
         corestat.vl = min(corestat.tl, crtc.s.CRT_YL);          corestat.vl = min(corestat.tl, crtc.e.dl);
         corestat.vsync = 0;          corestat.vsync = 0;
         nevent_set(NEVENT_FRAMES, corestat.vl * 250,          nevent_set(NEVENT_FRAMES, corestat.vl * 250,
                                                                                         nvitem_vdisp, NEVENT_RELATIVE);                                                                                          neitem_disp, NEVENT_RELATIVE);
         do {          do {
 #if !defined(SINGLESTEPONLY)  #if !defined(SINGLESTEPONLY)
                 if (CPU_REMCLOCK > 0) {                  if (CPU_REMCLOCK > 0) {
Line 291  void pccore_exec(BRESULT draw) { Line 240  void pccore_exec(BRESULT draw) {
         } while(corestat.vsync < 2);          } while(corestat.vsync < 2);
   
         scrnupdate();          scrnupdate();
         calendar_inc();  
         sound_sync();          sound_sync();
 }  }
   

Removed from v.1.20  
changed lines
  Added in v.1.25


RetroPC.NET-CVS <cvs@retropc.net>