Diff for /np2/pccore.c between versions 1.1 and 1.19

version 1.1, 2003/10/16 17:57:06 version 1.19, 2003/11/21 06:51:10
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
 #include        "dosio.h"  
 #include        "scrnmng.h"  
 #include        "soundmng.h"  #include        "soundmng.h"
 #include        "sysmng.h"  #include        "sysmng.h"
 #include        "timemng.h"  #include        "timemng.h"
   
 #include        "i286.h"  #include        "i286.h"
 #include        "memory.h"  #include        "memory.h"
   #include        "np2ver.h"
 #include        "pccore.h"  #include        "pccore.h"
   
 #include        "iocore.h"  #include        "iocore.h"
 #include        "cbuscore.h"  #include        "cbuscore.h"
   #include        "pc9861k.h"
   #include        "mpu98ii.h"
   #include        "bios.h"
   #include        "biosmem.h"
 #include        "vram.h"  #include        "vram.h"
 #include        "scrndraw.h"  #include        "scrndraw.h"
   #include        "dispsync.h"
 #include        "palettes.h"  #include        "palettes.h"
 #include        "maketext.h"  #include        "maketext.h"
 #include        "maketgrp.h"  #include        "maketgrp.h"
 #include        "makegrph.h"  #include        "makegrph.h"
   
 #include        "sound.h"  #include        "sound.h"
 #include        "beep.h"  
 #include        "fmboard.h"  #include        "fmboard.h"
 #include        "bios.h"  #include        "beep.h"
 #include        "timing.h"  #include        "font.h"
 #include        "dialog.h"  #include        "diskdrv.h"
 #include        "fddfile.h"  #include        "fddfile.h"
 #include        "fdd_mtr.h"  #include        "fdd_mtr.h"
   #include        "sxsi.h"
 #include        "calendar.h"  #include        "calendar.h"
 #include        "font.h"  #include        "timing.h"
 #include        "dispsync.h"  
 //#include      "hostdrv.h"  //#include      "hostdrv.h"
 #include        "mpu98ii.h"  #include        "debugsub.h"
 #include        "diskdrv.h"  
 #include        "sxsi.h"  
   
 #include        "keydisp.h"  
 #include        "pc9861k.h"  
   
           const char      np2version[] = NP2VER_CORE;
   
         const char      np2version[] = "ver.0.36";          NP2CFG  np2cfg = {
                                   0, 1, 0, 32, 0, 0, 0x40,
         NP2CFG          np2cfg = {                                  0, 0, 0, 0,
                                 PCBASECLOCK25, 4, 0,                                  {0x3e, 0x63, 0x7a}, 0,
                                 {0x3e, 0x63, 0x7a},                                  0, 0, {1, 1, 6, 1, 8, 1},
                                 {0x48, 0x05, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x6E},  
                                 {0x0c, 0x08, 0x0c, 0x06, 0x03, 0x0c},                           // ver0.27                                  "VX", PCBASECLOCK25, 4,
                                 {1, 1, 6, 1, 8, 1},                                  {0x48, 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, 0x6e},
                                 0, 4, 32, 22050, 800, 0, 1, 1, 0,                                  1, 1, 2, 1, 0x000000, 0xffffff,
                                 0, 0,                                  22050, 800, 4, 0,
 //                              0, 0, {1, 2, 2, 1},                                                     // ver0.28                                  {0, 0, 0}, 0xd1, 0x7f, 0xd1, 0, 0, 1,
                                 0, {0, 0, 0}, 0xd1, 0x7f, 0xd1, 0, 0, 1, 0x82,          // ver0.30                                  3, {0x0c, 0x0c, 0x08, 0x06, 0x03, 0x0c}, 64, 64, 64, 64, 64,
                                 1, 80, 3, 1, 1, 0, 0x000000, 0xffffff,                                  1, 0x82,
                                 0, 0, 0, 0x40, 0,  
                                 64, 64, 64, 64, 64,                                                                     // ver0.27  
                                 0, {0x17, 0x04, 0x1f}, {0x0c, 0x0c, 0x02, 0x10, 0x3f, 0x3f},                                  0, {0x17, 0x04, 0x1f}, {0x0c, 0x0c, 0x02, 0x10, 0x3f, 0x3f},
                                 2, 1, 0, 0,                                  1, 80, 0,
                                 "", "", ""};                                  {"", ""}, ""};
   
         PCCORE  pc = {  PCBASECLOCK25,          PCCORE  pc = {  PCBASECLOCK25,
                                                         4,                                          4,
                                                         4 * PCBASECLOCK25,                                          4 * PCBASECLOCK25,
                                                         4 * PCBASECLOCK25 * 50 / 3104,                                          4 * PCBASECLOCK25 * 50 / 3104,
                                                         4 * PCBASECLOCK25 * 5 / 3104,                                          4 * PCBASECLOCK25 * 5 / 3104,
                                                         4 * PCBASECLOCK25 / 120,                                          4 * PCBASECLOCK25 / 120,
                                                         4 * PCBASECLOCK25 / 200,                                          4 * PCBASECLOCK25 / 1920,
                                                         4 * PCBASECLOCK25 / 100,                                          4 * PCBASECLOCK25 / 3125,
                                                         4 * PCBASECLOCK25 / 1920,                                          4 * PCBASECLOCK25 / 56400,
                                                         4 * PCBASECLOCK25 / 3125,                                          100, 20, 0, PCMODEL_VX};
                                                         (4 * PCBASECLOCK25 / 22050) + 1,  
                                                         (4 * PCBASECLOCK25 / 56400),  
                                                         100, 20,  
                                                         0};  
   
                                                                         // on=0, off=1                                                                          // on=0, off=1
         BYTE    dip_default[3] = {0x3e, 0x63, 0x7a};  //      BYTE    dip_default[3] = {0x3e, 0x63, 0x7a};
         BYTE    msw_default[8] = {0x48, 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, 0x6E};  static const BYTE msw_default[8] =
                                                           {0x48, 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, 0x6e};
   
         BYTE    screenupdate = 3;          BYTE    screenupdate = 3;
         int             screendispflag = 1;          int             screendispflag = 1;
Line 83 Line 74
         BOOL    drawframe;          BOOL    drawframe;
         UINT    drawcount = 0;          UINT    drawcount = 0;
   
         BYTE    mem[0x200000];                                                          // ver0.28          BYTE    mem[0x200000];
   
   
 // ---------------------------------------------------------------------------  // ---------------------------------------------------------------------------
   
 static void setvsyncclock(void) {                                                               // ver0.28  static void setvsyncclock(void) {
   
         UINT    vfp;          UINT    vfp;
         UINT    vbp;          UINT    vbp;
Line 125  static void setvsyncclock(void) {        Line 116  static void setvsyncclock(void) {       
         pc.vsyncclock = cnt - pc.dispclock;          pc.vsyncclock = cnt - pc.dispclock;
 }  }
   
 static void setpcclock(UINT base, UINT multiple) {                      // ver0.28  static void setpcclock(UINT base, UINT multiple) {
   
           pc.model = PCMODEL_VX;
   
         if (base >= ((PCBASECLOCK25 + PCBASECLOCK20) / 2)) {          if (base >= ((PCBASECLOCK25 + PCBASECLOCK20) / 2)) {
                 pc.baseclock = PCBASECLOCK25;                   // 2.5MHz                  pc.baseclock = PCBASECLOCK25;                   // 2.5MHz
Line 148  static void setpcclock(UINT base, UINT m Line 141  static void setpcclock(UINT base, UINT m
         pc.dispclock = pc.realclock * 50 / 3102;          pc.dispclock = pc.realclock * 50 / 3102;
         pc.vsyncclock = pc.realclock * 5 / 3102;          pc.vsyncclock = pc.realclock * 5 / 3102;
         pc.mouseclock = pc.realclock / 120;          pc.mouseclock = pc.realclock / 120;
         pc.dsoundclock = (pc.realclock) / 200;                          // ver0.28  
         pc.dsoundclock2 = pc.realclock / 100;  
         pc.keyboardclock = pc.realclock / 1920;          pc.keyboardclock = pc.realclock / 1920;
         pc.midiclock = pc.realclock / 3125;          pc.midiclock = pc.realclock / 3125;
         pc.frame1000 = pc.realclock / 56400;          pc.frame1000 = pc.realclock / 56400;
         if (opna_rate) {  
 //              pc.sampleclock = (pc.realclock / opna_rate) + 1;  
                 pc.sampleclock = (pc.realclock / opna_rate);  
         }  
         else {  
                 pc.sampleclock = 0;  
         }  
 }  }
   
   
Line 223  void pccore_init(void) { Line 207  void pccore_init(void) {
   
 void pccore_term(void) {  void pccore_term(void) {
   
           sound_term();
   
         fdd_eject(0);          fdd_eject(0);
         fdd_eject(1);          fdd_eject(1);
         fdd_eject(2);          fdd_eject(2);
         fdd_eject(3);          fdd_eject(3);
   
         extmemmng_clear();                                                                                              // ver0.28          extmemmng_clear();
   
         iocore_destroy();          iocore_destroy();
   
Line 236  void pccore_term(void) { Line 222  void pccore_term(void) {
         rs232c_destruct();          rs232c_destruct();
         mpu98ii_destruct();          mpu98ii_destruct();
   
         sound_term();  
   
         sxsi_trash();          sxsi_trash();
 }  }
   
Line 249  void pccore_cfgupdate(void) { Line 233  void pccore_cfgupdate(void) {
   
         renewal = FALSE;          renewal = FALSE;
         for (i=0; i<8; i++) {          for (i=0; i<8; i++) {
                 if (np2cfg.memsw[i] != mem[0xa3fe2 + i*4]) {                  if (np2cfg.memsw[i] != mem[MEMB_MSW + i*4]) {
                         np2cfg.memsw[i] = mem[0xa3fe2 + i*4];                          np2cfg.memsw[i] = mem[MEMB_MSW + i*4];
                         renewal = TRUE;                          renewal = TRUE;
                 }                  }
         }          }
Line 292  void pccore_reset(void) { Line 276  void pccore_reset(void) {
         }          }
   
         setpcclock(np2cfg.baseclock, np2cfg.multiple);          setpcclock(np2cfg.baseclock, np2cfg.multiple);
           sound_changeclock();
           beep_changeclock();
         nevent_init();          nevent_init();
   
         sound_reset();          sound_reset();
Line 305  void pccore_reset(void) { Line 291  void pccore_reset(void) {
         cbuscore_bind();          cbuscore_bind();
         fmboard_bind();          fmboard_bind();
   
         timing_init();          timing_reset();
         fddmtr_init();          fddmtr_init();
         calendar_init();          calendar_init();
         vram_init();          vram_init();
Line 506  void screenvsync(NEVENTITEM item) { Line 492  void screenvsync(NEVENTITEM item) {
 void pccore_exec(BOOL draw) {  void pccore_exec(BOOL draw) {
   
         drawframe = draw;          drawframe = draw;
           keyext_flash();
         soundmng_sync();          soundmng_sync();
         mouseif_sync();          mouseif_sync();
         pal_eventclear();          pal_eventclear();
Line 532  void pccore_exec(BOOL draw) { Line 519  void pccore_exec(BOOL draw) {
                         i286_resetprefetch();                          i286_resetprefetch();
                 }                  }
   
 #if 1 // ndef TRACE  #ifndef TRACE
                 if (nevent.remainclock > 0) {                  if (I286_REMCLOCK > 0) {
                         if (!(CPUTYPE & CPUTYPE_V30)) {                          if (!(CPUTYPE & CPUTYPE_V30)) {
                                 i286();                                  i286();
                         }                          }
Line 542  void pccore_exec(BOOL draw) { Line 529  void pccore_exec(BOOL draw) {
                         }                          }
                 }                  }
 #else  #else
                 while(nevent.remainclock > 0) {                  while(I286_REMCLOCK > 0) {
 {  #if 0
 static FILEH fh = FILEH_INVALID;                          TRACEOUT(("%.4x:%.4x", I286_CS, I286_IP));
 if (I286_CS == 0x0e14) {  #elif 1
         if (fh == FILEH_INVALID) {                          if ((I286_CS == 0x1c29) && (I286_IP == 0x01E9)) {
                 fh = file_create("log.txt");                                  if (I286_BX) {
         }                                          TRACEOUT(("set %.4x", I286_BX));
 }                                  }
 if (fh != FILEH_INVALID) {                          }
 char buf[32];                          if ((I286_CS == 0x4159) && (I286_IP == 0x02d6)) {
 wsprintf(buf, "%.4x:%.4x\r\n", I286_CS, I286_IP);                                  if (I286_AX) {
 file_write(fh, buf, strlen(buf));                                          TRACEOUT(("get %d", (short)I286_AX));
 }                                  }
 }                          }
   #else
                           if (I286_CS == 0x4159) {
                                   if ((I286_IP >= 0x02d1) && (I286_IP < 0x02e3)) {
                                           TRACEOUT(("%s", debugsub_regs()));
                                   }
                           }
   #endif
                         i286_step();                          i286_step();
                 }                  }
 #endif  #endif

Removed from v.1.1  
changed lines
  Added in v.1.19


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