⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 devvd.lst

📁 MSTARXX.rar
💻 LST
📖 第 1 页 / 共 3 页
字号:
                          if(wCurSyncStatus&VD_HSYNC_LOCKED)// && IsSrcHasSignal())
                              msVD_Patch_004(_ENABLE);
                          else
                              msVD_Patch_004(_DISABLE);
                          #endif
 254   3              }
 255   2          }
 256   1      
 257   1          // Save current status for next mode detect
 258   1          g_wLastSyncStatus = wCurSyncStatus;
 259   1      }
 260          
 261          void vdModeHandler(void)
 262          {
 263   1          if( g_VdInfo.bVideoDoModeSetting )
 264   1          {
 265   2              WORD wStatus = g_VdInfo.wVideoStatus;
 266   2              printMsg("VD setup mode");
 267   2      
 268   2              g_VdInfo.bVideoDoModeSetting = FALSE;
 269   2              if( wStatus& VD_HSYNC_LOCKED ) // Has signal
 270   2              {
 271   3      
 272   3                  // Check signal type
 273   3                  if( wStatus&VD_VSYNC_50HZ )
 274   3                  {
 275   4                      g_VdInfo.ucVideoSystem = SIG_PAL;
 276   4                      g_ucSrcModeIndex = MD_720x576_50I;
 277   4                  }
 278   3                  else
 279   3                  {
 280   4                      g_VdInfo.ucVideoSystem = SIG_NTSC;
 281   4                      g_ucSrcModeIndex = MD_720x480_60I;
 282   4                  }
 283   3      
 284   3                  g_InOutCtl.bInterlace = 1;
 285   3      
 286   3                  if( IsVideoPortInUse())
 287   3                  {
 288   4                      g_VdInfo.ucVideoSystem = msVDGetVideoSystem( wStatus );
 289   4      
 290   4                      if(g_VdInfo.ucVideoSystem!=SIG_SECAM)
 291   4                           msVD_FSM_Reset();
 292   4      
 293   4                      msVDSetupMode( wStatus, g_VdInfo.ucVideoSystem );
 294   4                  }
 295   3      
 296   3                  msCommSetupMode();
 297   3      
 298   3                  SetOutputTimingAndWindow(OUTPUT_SIG); // VD mode change: Has signal
 299   3      
C51 COMPILER V8.18   DEVVD                                                                 09/29/2009 23:58:04 PAGE 6   

 300   3                  #if( ENABLE_MONITOR_SIGNAL )
 301   3                  msMonitorSignal(MONITOR_SIGNAL_INIT);
 302   3                  #endif
 303   3      
 304   3                  msSetBlueScreen( _DISABLE, FR_BLACK);
 305   3      
 306   3                              Clr_AFCDisableFlag();
 307   3                              g_ucAFCTuneCounter=AFCTUNEINITCOUNT;
 308   3              }
 309   2              else // No signal
 310   2                  {
 311   3                          g_VdInfo.ucVideoSystem = SIG_NONE;
 312   3                          g_InOutCtl.bInterlace = 1;
 313   3      
 314   3                      msVDReset();
 315   3      
 316   3                          if( IsVideoPortInUse())
 317   3                          {
 318   4                              // For TV snow
 319   4                          #if( TV_SYSTEM == TV_NTSC )
                                      msVDSetupMode( VD_FSC_3579, SIG_NTSC );
                                  #else
 322   4                              msVDSetupMode( VD_FSC_4433|VD_VSYNC_50HZ, SIG_PAL );
 323   4                          #endif
 324   4                          }
 325   3      
 326   3                      #if TV_ENABLE
 327   3                          if( IsTVInUse()) // For TV snow screen
 328   3                          {
 329   4                              SetOutputTimingAndWindow( OUTPUT_SNOW );
 330   4                              msSetBlueScreen( _DISABLE, FR_BLACK);
 331   4                          g_ucSrcModeIndex = MD_TVsnow;
 332   4                          }
 333   3                          else // av/sv
 334   3                          #endif
 335   3                          {
 336   4                              msProgWindow( OUTPUT_FREERUN ); // For display window
 337   4                              msSetBlueScreen( _ENABLE, FR_BLUE);
 338   4                          g_ucSrcModeIndex = MD_FreeRun;
 339   4                          }
 340   3      
 341   3                          #ifdef VD_PATCH_001
                                  msVD_Patch_001();
                                  #endif
 344   3                  }
 345   2      
 346   2              msSetScaler();
 347   2      
 348   2              if(g_ucMenuPageIndex==RootMenu)
 349   2                      Set_ShowSourceFlag();
 350   2      
 351   2              g_ucSyncMaxStableCounter=0;
 352   2      
 353   2              if (PowerOnFlag)
 354   2              {
 355   3                  Power_TurnOnPanel();
 356   3                  Power_TurnOnGreenLed();
 357   3              }
 358   2          }
 359   1      }
 360          
 361          XDATA BYTE g_ucDetectInterlace_StableCounter;
C51 COMPILER V8.18   DEVVD                                                                 09/29/2009 23:58:04 PAGE 7   

 362          void msDetectInterlace( BYTE ucFlag )
 363          {
 364   1          BYTE ucBank = msReadByte( BK0_00_REGBK);
 365   1          bit bInterlace;
 366   1      
 367   1          msWriteByte( BK0_00_REGBK, REG_BANK_SCALER );
 368   1      
 369   1          // Read scaler report status
 370   1          bInterlace = msGetInterlaceBit();
 371   1      
 372   1          if( bInterlace != g_bDetectInterlace_LastInterlaceFlag )
 373   1              ++ g_ucDetectInterlace_StableCounter;
 374   1          else
 375   1              g_ucDetectInterlace_StableCounter = 0;
 376   1      
 377   1          if( (ucFlag&_BIT0) || (g_ucDetectInterlace_StableCounter>20) )
 378   1          {
 379   2              g_ucDetectInterlace_StableCounter = 0;
 380   2              g_bDetectInterlace_LastInterlaceFlag = bInterlace;
 381   2      
 382   2              if( bInterlace )
 383   2              {
 384   3                  msWriteBit( BK0_0E_INTLX, 1, _BIT3 ); // to be checked!!
 385   3                  msWriteByteMask( BK0_36_VDSUSG, 0x0C, 0x0C );
 386   3                  //putstr("\r\nInterlace");
 387   3              }
 388   2              else // Non-interlace
 389   2              {
 390   3                  msWriteBit( BK0_0E_INTLX, 0, _BIT3 );
 391   3                  msWriteByteMask( BK0_36_VDSUSG, 0x00, 0x0C );
 392   3                  //putstr("\r\nNon-Interlace");
 393   3              }
 394   2      
 395   2              msLineBufferDelayCtl( bInterlace ); // For detect interlace
 396   2          }
 397   1          msWriteByte( BK0_00_REGBK, ucBank );
 398   1      }
 399          
 400          
 401          BOOL msGetInterlaceBit(void)
 402          {
 403   1          BOOL bInterlace = 0;
 404   1          BYTE ucBank = msReadByte( BK0_00_REGBK);
 405   1      
 406   1          msWriteByte( BK0_00_REGBK, REG_BANK_SCALER );
 407   1          if( msReadByte( BK0_EF_STATUS2)&_BIT3 )
 408   1              bInterlace = 1;
 409   1      
 410   1          msWriteByte( BK0_00_REGBK, ucBank );
 411   1          return bInterlace;
 412   1      }
 413          
 414          
 415          void msFieldDetectCtl(void)
 416          {
 417   1          BYTE ucBank;
 418   1      
 419   1          ucBank = msReadByte( BK0_00_REGBK);
 420   1          msWriteByte(BK0_00_REGBK, REG_BANK_SCALER );
 421   1      
 422   1      #if VGA_ENABLE
 423   1          if( IsVGAInUse()) // VGA
C51 COMPILER V8.18   DEVVD                                                                 09/29/2009 23:58:04 PAGE 8   

 424   1          {
 425   2              /*
 426   2              if(StandardModeFlag&bInterlaceMode)
 427   2                  msWriteByte(BK0_E4_ISOVRD, 0x03);
 428   2              else
 429   2              */
 430   2              msWriteByte(BK0_E4_ISOVRD, 0x00);
 431   2      
 432   2              msWriteByte(BK0_E5_MDCTRL, 0x00);
 433   2          }
 434   1          else
 435   1      #endif
 436   1      
 437   1          {
 438   2              msWriteByte(BK0_E4_ISOVRD, 0x03);
 439   2      #if (ENABLE_VD_DSP)
 440   2              msWriteByte(BK0_E5_MDCTRL, 0x04); // 20051114
 441   2      #elif(ENABLE_SW_FILED)
                      msWriteByte(BK0_E5_MDCTRL, 0x04); // 20060116
              #else
                      msWriteByte(BK0_E5_MDCTRL, 0x00);
              #endif
 446   2          }
 447   1      
 448   1          msWriteByte( BK0_00_REGBK, ucBank );
 449   1      }
 450          
 451          void msLPFCtl( BYTE ucLPFParaIdx )
 452          {
 453   1          BYTE ucBank;
 454   1          BYTE code tLPFPara[][5] = {
 455   1              //{   0x7F,   0x03,   0x3C,   0x05,   0x1A    }, // VD 443
 456   1              //{   0x7E,   0x04,   0x3C,   0x04,   0x1C    }, // VD 358
 457   1              //{   0x7F,   0x03,   0x3B,   0x06,   0x1A    }, // PC, YPbPr
 458   1              {   0x42,   0x01,   0x3C,   0x07,   0x14    }, // TV, Strong
 459   1              //{   0x3F,   0x03,   0x3C,   0x05,   0x1A    }, // TV, Normal
 460   1              {   0x7F,   0x04,   0x3C,   0x04,   0x1A    }, // AV
 461   1          };
 462   1      
 463   1          BYTE i;
 464   1      
 465   1          ucBank = msReadByte( BK0_00_REGBK);
 466   1          msWriteByte( BK0_00_REGBK, 1 );
 467   1      
 468   1          if( ucLPFParaIdx == LPF_CTL_TURN_OFF )
 469   1              msWriteBit(BK1_55_LPF_CTL, 0, _BIT6);
 470   1          else
 471   1          {
 472   2              for( i = 0; i < 5; ++ i )
 473   2                 msWriteByte( BK1_50_LPF_TAP1+i, tLPFPara[ucLPFParaIdx][i]);
 474   2      
 475   2              if( ucLPFParaIdx == LPF_CTL_TV_STRONG)
 476   2                   msWriteBit(BK1_55_LPF_CTL, 1, _BIT6);
 477   2              else
 478   2                   msWriteBit(BK1_55_LPF_CTL, 0, _BIT6);
 479   2          }
 480   1      
 481   1          msWriteByte( BK0_00_REGBK, ucBank );
 482   1      }
 483          
 484          
 485          BYTE code tFreeRunColor[][2] =
C51 COMPILER V8.18   DEVVD                                                                 09/29/2009 23:58:04 PAGE 9   

 486          {   // BK0_5C,  BK0_5D
 487              { 0x00      , 0x00, }, // FREE_RUN_COLOR_BLACK
 488              { 0xFE|_BIT0, 0xFF, }, // FREE_RUN_COLOR_WHITE
 489              { 0x3E|_BIT0, 0x00, }, // FREE_RUN_COLOR_BLUE
 490          };
 491          
 492          void msSetBlueScreen( BOOL bEnable, BYTE ucColor )
 493          {
 494   1          BYTE ucBank;
 495   1          ucBank=msReadByte(BK0_00_REGBK);
 496   1          msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
 497   1          if( bEnable )
 498   1          {
 499   2              //msFPLLCtl( FPLL_STOP );
 500   2              msWriteBit(BK0_02_ISELECT, _ENABLE, _BIT7);
 501   2              msSetupFreeRunMode(DEFAULT_OUTPUT_V_FREQ);
 502   2      
 503   2              // Set screen color
 504   2              msWriteByte( BK0_5C_FRAME_COLOR_1, tFreeRunColor[ucColor][0] );
 505   2              msWriteByte( BK0_5D_FRAME_COLOR_2, tFreeRunColor[ucColor][1] );
 506   2          }
 507   1          else // Disable blue screen
 508   1          {
 509   2              #if VGA_ENABLE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -