Diff for /np2/bios/bios18.c between versions 1.27 and 1.30

version 1.27, 2004/02/29 03:10:02 version 1.30, 2004/03/04 15:20:13
Line 284  void bios0x18_16(REG8 chr, REG8 atr) { Line 284  void bios0x18_16(REG8 chr, REG8 atr) {
 // ---- 31khz  // ---- 31khz
   
 #if defined(SUPPORT_CRT31KHZ)  #if defined(SUPPORT_CRT31KHZ)
 static REG8 bios0x18_30(REG8 mode, REG8 scrn) {  static REG8 bios0x18_30(REG8 rate, REG8 scrn) {
   
         int                     crt;          int                     crt;
         int                     master;          int                     master;
         int                     slave;          int                     slave;
 const CRTDATA   *p;  const CRTDATA   *p;
   
         if (((mode & 0xf8) != 0x08) || (scrn & (~0x33)) || ((scrn & 3) == 3)) {          if (((rate & 0xf8) != 0x08) || (scrn & (~0x33)) || ((scrn & 3) == 3)) {
                 return(1);                  return(0);
         }          }
         if ((scrn & 0x30) == 0x30) {                            // 640x480          if ((scrn & 0x30) == 0x30) {                            // 640x480
 #if defined(SUPPORT_PC9821)  #if defined(SUPPORT_PC9821)
                 if (mode & 4) {                  if (rate & 4) {
                         gdc_analogext(TRUE);                          gdc_analogext(TRUE);
                         mem[MEMB_PRXDUPD] |= 0x80;                          mem[MEMB_PRXDUPD] |= 0x80;
                         crt = 4;                          crt = 4;
                         master = 3;                          master = 3 + (scrn & 3);
                         slave = 1;                          slave = 1;
                         gdc.display |= 0x10;                          gdc.analog |= (1 << GDCANALOG_256E);
                 }                  }
                 else                  else
 #endif  #endif
                 return(1);                  return(0);
         }          }
         else {          else {
                 if ((scrn & 3) >= 2) {                  if ((scrn & 3) >= 2) {
                         return(1);                          return(0);
                 }                  }
                 if (mode & 4) {                                                 // 31khz                  if (rate & 4) {                                                 // 31khz
                         crt = 2;                          crt = 2;
                         master = 2;                          master = 2;
                         slave = 4;                          slave = 4;
Line 335  const CRTDATA *p; Line 335  const CRTDATA *p;
                         gdc_analogext(FALSE);                          gdc_analogext(FALSE);
                         mem[MEMB_PRXDUPD] &= ~0x80;                          mem[MEMB_PRXDUPD] &= ~0x80;
                 }                  }
                   gdc.analog &= ~(1 << (GDCANALOG_256E));
 #endif  #endif
         }          }
         crt += (scrn & 3);          crt += (scrn & 3);
         master += (scrn & 3);  
   
         if (mode & 4) {          if (rate & 4) {
                 gdc.display |= (1 << GDCDISP_31);                  gdc.display |= (1 << GDCDISP_31);
         }          }
         else {          else {
Line 389  const CRTDATA *p; Line 389  const CRTDATA *p;
   
         gdcs.textdisp &= ~GDCSCRN_ENABLE;          gdcs.textdisp &= ~GDCSCRN_ENABLE;
         gdcs.textdisp |= GDCSCRN_EXT | GDCSCRN_ALLDRAW2;          gdcs.textdisp |= GDCSCRN_EXT | GDCSCRN_ALLDRAW2;
         gdcs.grphdisp &= ~GDCSCRN_ENABLE;  
         gdcs.grphdisp |= GDCSCRN_EXT | GDCSCRN_ALLDRAW2;          gdcs.grphdisp |= GDCSCRN_EXT | GDCSCRN_ALLDRAW2;
         screenupdate |= 2;          screenupdate |= 2;
   
Line 402  const CRTDATA *p; Line 401  const CRTDATA *p;
         if (scrn & 2) {          if (scrn & 2) {
                 mem[MEMB_CRT_STS_FLAG] |= 0x10;                  mem[MEMB_CRT_STS_FLAG] |= 0x10;
         }          }
         return(0);          return(5);                      // 最後にGDCへ送ったデータ…
 }  }
   
 static REG8 bios0x18_31al(void) {  static REG8 bios0x18_31al(void) {
   
         UINT8   mode;          UINT8   rate;
   
         mode = 0x08 + ((gdc.display >> (GDCDISP_31 - 5)) & 4);          rate = 0x08 + ((gdc.display >> (GDCDISP_31 - 5)) & 4);
         return(mode);          return(rate);
 }  }
   
 static REG8 bios0x18_31bh(void) {  static REG8 bios0x18_31bh(void) {
Line 454  void bios0x18_41(void) { Line 453  void bios0x18_41(void) {
 void bios0x18_42(REG8 mode) {  void bios0x18_42(REG8 mode) {
   
         UINT8   crtmode;          UINT8   crtmode;
   #if defined(SUPPORT_CRT31KHZ)
           UINT8   rate;
           UINT8   scrn;
   #endif
           int             slave;
   
         gdc_forceready(GDCWORK_MASTER);          gdc_forceready(GDCWORK_MASTER);
         gdc_forceready(GDCWORK_SLAVE);          gdc_forceready(GDCWORK_SLAVE);
   
         crtmode = modenum[mode >> 6];          crtmode = modenum[mode >> 6];
 #if defined(SUPPORT_CRT31KHZ)  #if defined(SUPPORT_CRT31KHZ)
         if (mem[MEMB_CRT_BIOS] & 0x80) {          rate = bios0x18_31al();
                 bios0x18_30(bios0x18_31al(), (crtmode << 4) + (bios0x18_31bh() & 3));          scrn = bios0x18_31bh();
           if ((mem[MEMB_CRT_BIOS] & 0x80) &&
                   (((scrn & 0x30) == 0x30) || (crtmode == 3))) {
                   bios0x18_30(rate, (crtmode << 4) + 1);
         }          }
         else {          else {
                 mem[MEMB_CRT_BIOS] &= ~3;  
                 mem[MEMB_CRT_BIOS] |= crtmode;  
 #endif  #endif
                 ZeroMemory(gdc.s.para + GDC_SCROLL, 8);                  ZeroMemory(gdc.s.para + GDC_SCROLL, 8);
                 if (crtmode == 2) {                                                     // ALL                  if (crtmode == 2) {                                                     // ALL
Line 473  void bios0x18_42(REG8 mode) { Line 478  void bios0x18_42(REG8 mode) {
                         if ((mem[MEMB_PRXDUPD] & 0x24) == 0x20) {                          if ((mem[MEMB_PRXDUPD] & 0x24) == 0x20) {
                                 mem[MEMB_PRXDUPD] ^= 4;                                  mem[MEMB_PRXDUPD] ^= 4;
                                 gdc.clock |= 3;                                  gdc.clock |= 3;
                                 CopyMemory(gdc.s.para + GDC_SYNC, sync400m, 8);                                  CopyMemory(gdc.s.para + GDC_SYNC, gdcslavesync[3], 8);
                                 gdc.s.para[GDC_PITCH] = 80;                                  gdc.s.para[GDC_PITCH] = 80;
                                 gdcs.grphdisp |= GDCSCRN_EXT;                                  gdcs.grphdisp |= GDCSCRN_EXT;
                                 mem[MEMB_PRXDUPD] |= 0x08;                                  mem[MEMB_PRXDUPD] |= 0x08;
                         }                          }
                 }                  }
                 else {                  else {
                         crtmode &= 1;  
                         if ((mem[MEMB_PRXDUPD] & 0x24) == 0x24) {                          if ((mem[MEMB_PRXDUPD] & 0x24) == 0x24) {
                                 mem[MEMB_PRXDUPD] ^= 4;                                  mem[MEMB_PRXDUPD] ^= 4;
                                 gdc.clock &= ~3;                                  gdc.clock &= ~3;
                                 CopyMemory(gdc.s.para + GDC_SYNC,  #if defined(SUPPORT_CRT31KHZ)
                                                         (mem[MEMB_PRXCRT] & 0x40)?sync200m:sync200l, 8);                                  if (rate & 4) slave = 4;
                                   else
   #endif
                                   slave = (mem[MEMB_PRXCRT] & 0x40)?2:0;
                                   CopyMemory(gdc.s.para + GDC_SYNC, gdcslavesync[slave], 8);
                                 gdc.s.para[GDC_PITCH] = 40;                                  gdc.s.para[GDC_PITCH] = 40;
                                 gdcs.grphdisp |= GDCSCRN_EXT;                                  gdcs.grphdisp |= GDCSCRN_EXT;
                                 mem[MEMB_PRXDUPD] |= 0x08;                                  mem[MEMB_PRXDUPD] |= 0x08;
                         }                          }
                         if (crtmode == 1) {                             // UPPER                          if (crtmode & 1) {                              // UPPER
                                 gdc.s.para[GDC_SCROLL+0] = (200*40) & 0xff;                                  gdc.s.para[GDC_SCROLL+0] = (200*40) & 0xff;
                                 gdc.s.para[GDC_SCROLL+1] = (200*40) >> 8;                                  gdc.s.para[GDC_SCROLL+1] = (200*40) >> 8;
                         }                          }
Line 504  void bios0x18_42(REG8 mode) { Line 512  void bios0x18_42(REG8 mode) {
                         gdc.s.para[GDC_CSRFORM] = 1;                          gdc.s.para[GDC_CSRFORM] = 1;
                 }                  }
 #if defined(SUPPORT_CRT31KHZ)  #if defined(SUPPORT_CRT31KHZ)
                   mem[MEMB_CRT_BIOS] &= ~3;
                   mem[MEMB_CRT_BIOS] |= crtmode;
         }          }
 #endif  #endif
         if (crtmode != 3) {          if (crtmode != 3) {
Line 737  void bios0x18(void) { Line 747  void bios0x18(void) {
   
         union {          union {
                 BOOL    b;                  BOOL    b;
                   REG8    r8;
                 UINT16  w;                  UINT16  w;
                 UINT32  d;                  UINT32  d;
                 UINT8   col[4];                  UINT8   col[4];
Line 924  void bios0x18(void) { Line 935  void bios0x18(void) {
                         if (mem[MEMB_CRT_BIOS] & 0x80) {                          if (mem[MEMB_CRT_BIOS] & 0x80) {
                                 gdc_forceready(GDCWORK_MASTER);                                  gdc_forceready(GDCWORK_MASTER);
                                 gdc_forceready(GDCWORK_SLAVE);                                  gdc_forceready(GDCWORK_SLAVE);
                                 CPU_AL = bios0x18_30(CPU_AL, CPU_BH);                                  tmp.r8 = bios0x18_30(CPU_AL, CPU_BH);
                                   CPU_AH = tmp.r8;
                                   if (tmp.r8 == 0x05) {
                                           CPU_AL = 0;
                                           CPU_BH = 0;
                                           TRACEOUT(("success"));
                                   }
                                   else {
                                           CPU_AL = 1;
                                           CPU_BH = 1;
                                           TRACEOUT(("failure"));
                                   }
                         }                          }
                         break;                          break;
   

Removed from v.1.27  
changed lines
  Added in v.1.30


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