Diff for /np2/pccore.c between versions 1.32 and 1.39

version 1.32, 2003/12/15 11:26:04 version 1.39, 2004/01/05 14:16:34
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
   #include        "strres.h"
 #include        "dosio.h"  #include        "dosio.h"
 #include        "soundmng.h"  #include        "soundmng.h"
 #include        "sysmng.h"  #include        "sysmng.h"
Line 83  void getbiospath(char *path, const char  Line 84  void getbiospath(char *path, const char 
 const char      *p;  const char      *p;
   
         p = np2cfg.biospath;          p = np2cfg.biospath;
   
         p = np2cfg.biospath;  
         if (p[0]) {          if (p[0]) {
                 file_cpyname(path, p, maxlen);                  file_cpyname(path, p, maxlen);
                 file_setseparator(path, maxlen);                  file_setseparator(path, maxlen);
Line 135  static void setvsyncclock(void) { Line 134  static void setvsyncclock(void) {
         pc.vsyncclock = cnt - pc.dispclock;          pc.vsyncclock = cnt - pc.dispclock;
 }  }
   
 static void setpcclock(UINT base, UINT multiple) {  static void setpcclock(const char *modelstr, UINT base, UINT multiple) {
   
         pc.model = PCMODEL_VX;          UINT8   model;
   
           model = PCMODEL_VX;
           if (!milstr_cmp(modelstr, str_VM)) {
                   model = PCMODEL_VM;
           }
           else if (!milstr_cmp(modelstr, str_EPSON)) {
                   model = PCMODEL_EPSON | PCMODEL_VM;
           }
           pc.model = model;
   
         if (base >= ((PCBASECLOCK25 + PCBASECLOCK20) / 2)) {          if (base >= ((PCBASECLOCK25 + PCBASECLOCK20) / 2)) {
                 pc.baseclock = PCBASECLOCK25;                   // 2.5MHz                  pc.baseclock = PCBASECLOCK25;                   // 2.5MHz
Line 191  static void sound_init(void) { Line 199  static void sound_init(void) {
         adpcm_setvol(np2cfg.vol_adpcm);          adpcm_setvol(np2cfg.vol_adpcm);
         pcm86gen_initialize(rate);          pcm86gen_initialize(rate);
         pcm86gen_setvol(np2cfg.vol_pcm);          pcm86gen_setvol(np2cfg.vol_pcm);
           cs4231_initialize(rate);
 }  }
   
 static void sound_term(void) {  static void sound_term(void) {
Line 296  void pccore_reset(void) { Line 305  void pccore_reset(void) {
                 sound_init();                  sound_init();
         }          }
   
         setpcclock(np2cfg.baseclock, np2cfg.multiple);          setpcclock(np2cfg.model, np2cfg.baseclock, np2cfg.multiple);
         sound_changeclock();          sound_changeclock();
         beep_changeclock();          beep_changeclock();
         nevent_init();          nevent_init();
Line 307  void pccore_reset(void) { Line 316  void pccore_reset(void) {
         cbuscore_reset();          cbuscore_reset();
         fmboard_reset(np2cfg.SOUND_SW);          fmboard_reset(np2cfg.SOUND_SW);
   
           i286_memorymap((pc.model & PCMODEL_EPSON)?1:0);
         iocore_build();          iocore_build();
         iocore_bind();          iocore_bind();
         cbuscore_bind();          cbuscore_bind();
Line 490  void screendisp(NEVENTITEM item) { Line 500  void screendisp(NEVENTITEM item) {
   
 void screenvsync(NEVENTITEM item) {  void screenvsync(NEVENTITEM item) {
   
         vramop.tramwait = np2cfg.wait[1];          MEMWAIT_TRAM = np2cfg.wait[1];
         vramop.vramwait = np2cfg.wait[3];          MEMWAIT_VRAM = np2cfg.wait[3];
         vramop.grcgwait = np2cfg.wait[5];          MEMWAIT_GRCG = np2cfg.wait[5];
         gdc_work(GDCWORK_MASTER);          gdc_work(GDCWORK_MASTER);
         gdc.vsync = 0x20;          gdc.vsync = 0x20;
         if (gdc.vsyncint) {          if (gdc.vsyncint) {
Line 527  void pccore_exec(BOOL draw) { Line 537  void pccore_exec(BOOL draw) {
   
         gdc.vsync = 0;          gdc.vsync = 0;
         screendispflag = 1;          screendispflag = 1;
         vramop.tramwait = np2cfg.wait[0];          MEMWAIT_TRAM = np2cfg.wait[0];
         vramop.vramwait = np2cfg.wait[2];          MEMWAIT_VRAM = np2cfg.wait[2];
         vramop.grcgwait = np2cfg.wait[4];          MEMWAIT_GRCG = np2cfg.wait[4];
         nevent_set(NEVENT_FLAMES, pc.dispclock, screenvsync, NEVENT_RELATIVE);          nevent_set(NEVENT_FLAMES, pc.dispclock, screenvsync, NEVENT_RELATIVE);
   
 //      nevent_get1stevent();  //      nevent_get1stevent();
Line 541  void pccore_exec(BOOL draw) { Line 551  void pccore_exec(BOOL draw) {
                 pic_irq();                  pic_irq();
                 if (CPU_RESETREQ) {                  if (CPU_RESETREQ) {
                         CPU_RESETREQ = 0;                          CPU_RESETREQ = 0;
   #if 1
                           CPU_SHUT();
   #else
                         CPU_CS = 0xf000;                          CPU_CS = 0xf000;
                         CS_BASE = 0xf0000;                          CS_BASE = 0xf0000;
                         CPU_IP = 0xfff0;                          CPU_IP = 0xfff0;
Line 548  void pccore_exec(BOOL draw) { Line 561  void pccore_exec(BOOL draw) {
                         CPU_DX = 0x0300;                          CPU_DX = 0x0300;
 #endif  #endif
                         CPU_CLEARPREFETCH();                          CPU_CLEARPREFETCH();
   #endif
                 }                  }
   
 #if 1 //ndef TRACE  #if 1 // ndef TRACE
                 if (CPU_REMCLOCK > 0) {                  if (CPU_REMCLOCK > 0) {
                         if (!(CPU_TYPE & CPUTYPE_V30)) {                          if (!(CPU_TYPE & CPUTYPE_V30)) {
                                 CPU_EXEC();                                  CPU_EXEC();
Line 562  void pccore_exec(BOOL draw) { Line 576  void pccore_exec(BOOL draw) {
 #else  #else
                 while(CPU_REMCLOCK > 0) {                  while(CPU_REMCLOCK > 0) {
                         TRACEOUT(("%.4x:%.4x", CPU_CS, CPU_IP));                          TRACEOUT(("%.4x:%.4x", CPU_CS, CPU_IP));
                         i286_step();                          i286x_step();
                 }                  }
 #endif  #endif
                 nevent_progress();                  nevent_progress();
Line 577  void pccore_exec(BOOL draw) { Line 591  void pccore_exec(BOOL draw) {
 #if defined(TRACE)  #if defined(TRACE)
         execcnt++;          execcnt++;
         if (execcnt >= 60) {          if (execcnt >= 60) {
                 TRACEOUT(("resetcnt = %d / pic %d", resetcnt, piccnt));  //              TRACEOUT(("resetcnt = %d / pic %d", resetcnt, piccnt));
                 execcnt = 0;                  execcnt = 0;
                 resetcnt = 0;                  resetcnt = 0;
                 piccnt = 0;                  piccnt = 0;

Removed from v.1.32  
changed lines
  Added in v.1.39


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