Diff for /np2/bios/bios18.c between versions 1.22 and 1.23

version 1.22, 2004/02/21 00:25:33 version 1.23, 2004/02/21 04:48:35
Line 231  void bios0x18_41(void) { Line 231  void bios0x18_41(void) {
         mem[MEMB_PRXCRT] &= 0x7f;          mem[MEMB_PRXCRT] &= 0x7f;
 }  }
   
   void bios0x18_42(REG8 mode) {
   
 #define SWAPU16(a, b) { UINT16 tmp; tmp = (a); (a) = (b); (b) = tmp; }          BOOL    b;
   
           gdc_forceready(GDCWORK_SLAVE);
           ZeroMemory(&gdc.s.para[GDC_SCROLL], 8);
           if ((mode & 0xc0) == 0xc0) {            // ALL
                   b = FALSE;
                   if ((mem[MEMB_PRXDUPD] & 0x24) == 0x20) {
                           mem[MEMB_PRXDUPD] ^= 4;
                           gdc.clock |= 3;
                           CopyMemory(gdc.s.para + GDC_SYNC, sync400m, 8);
                           gdc.s.para[GDC_PITCH] = 80;
                           gdcs.grphdisp |= GDCSCRN_EXT;
                           mem[MEMB_PRXDUPD] |= 0x08;
                   }
           }
           else {
                   b = TRUE;
                   if ((mem[MEMB_PRXDUPD] & 0x24) == 0x24) {
                           mem[MEMB_PRXDUPD] ^= 4;
                           gdc.clock &= ~3;
                           CopyMemory(gdc.s.para + GDC_SYNC,
                                                   (mem[MEMB_PRXCRT] & 0x40)?sync200m:sync200l, 8);
                           gdc.s.para[GDC_PITCH] = 40;
                           gdcs.grphdisp |= GDCSCRN_EXT;
                           mem[MEMB_PRXDUPD] |= 0x08;
                   }
                   if (mode & 0x40) {                              // UPPER
                           gdc.s.para[GDC_SCROLL+0] = (200*40) & 0xff;
                           gdc.s.para[GDC_SCROLL+1] = (200*40) >> 8;
                   }
           }
           if ((!b) || (!(mem[MEMB_PRXCRT] & 0x40))) {
                   gdc.mode1 &= ~(0x10);
                   gdc.s.para[GDC_CSRFORM] = 0;
           }
           else {
                   gdc.mode1 |= 0x10;
                   gdc.s.para[GDC_CSRFORM] = 1;
           }
           gdcs.disp = (mode >> 4) & 1;
           if (!(mode & 0x20)) {
                   gdc.mode1 &= ~0x04;
           }
           else {
                   gdc.mode2 |= 0x04;
           }
           gdcs.grphdisp |= GDCSCRN_ALLDRAW2;
           screenupdate |= 2;
   }
   
 static void setbiosgdc(UINT32 csrw, const GDCVECT *vect, UINT8 ope) {  static void setbiosgdc(UINT32 csrw, const GDCVECT *vect, UINT8 ope) {
   
Line 659  void bios0x18(void) { Line 708  void bios0x18(void) {
                         break;                          break;
   
                 case 0x42:                                              // 表示領域の設定                  case 0x42:                                              // 表示領域の設定
                         gdc_forceready(GDCWORK_SLAVE);                          bios0x18_42(CPU_CH);
   
                         ZeroMemory(&gdc.s.para[GDC_SCROLL], 8);  
                         if ((CPU_CH & 0xc0) == 0xc0) {          // ALL  
                                 tmp.b = FALSE;  
                                 if ((mem[MEMB_PRXDUPD] & 0x24) == 0x20) {  
                                         mem[MEMB_PRXDUPD] ^= 4;  
                                         gdc.clock |= 3;  
                                         CopyMemory(gdc.s.para + GDC_SYNC, sync400m, 8);  
                                         gdc.s.para[GDC_PITCH] = 80;  
                                         gdcs.grphdisp |= GDCSCRN_EXT;  
                                         mem[MEMB_PRXDUPD] |= 0x08;  
                                 }  
                         }  
                         else {  
                                 tmp.b = TRUE;  
                                 if ((mem[MEMB_PRXDUPD] & 0x24) == 0x24) {  
                                         mem[MEMB_PRXDUPD] ^= 4;  
                                         gdc.clock &= ~3;  
                                         CopyMemory(gdc.s.para + GDC_SYNC,  
                                                 (mem[MEMB_PRXCRT] & 0x40)?sync200m:sync200l, 8);  
                                         gdc.s.para[GDC_PITCH] = 40;  
                                         gdcs.grphdisp |= GDCSCRN_EXT;  
                                         mem[MEMB_PRXDUPD] |= 0x08;  
                                 }  
                                 if (CPU_CH & 0x40) {                    // UPPER  
                                         gdc.s.para[GDC_SCROLL+0] = (200*40) & 0xff;  
                                         gdc.s.para[GDC_SCROLL+1] = (200*40) >> 8;  
                                 }  
                         }  
                         if ((!tmp.b) || (!(mem[MEMB_PRXCRT] & 0x40))) {  
                                 gdc.mode1 &= ~(0x10);  
                                 gdc.s.para[GDC_CSRFORM] = 0;  
                         }  
                         else {  
                                 gdc.mode1 |= 0x10;  
                                 gdc.s.para[GDC_CSRFORM] = 1;  
                         }  
                         gdcs.disp = (CPU_CH >> 4) & 1;  
                         gdcs.grphdisp |= GDCSCRN_ALLDRAW2;  
                         screenupdate |= 2;  
                         break;                          break;
   
                 case 0x43:                                              // パレットの設定                  case 0x43:                                              // パレットの設定

Removed from v.1.22  
changed lines
  Added in v.1.23


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