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

📄 devvd.lst

📁 MSTARXX.rar
💻 LST
📖 第 1 页 / 共 3 页
字号:
 510   2              if( IsVGAInUse() ) // PC/YPbPr
 511   2              {
 512   3                  msWriteBit(BK0_5E_PATTERN, 1, _BIT1); // Let screen black
 513   3                  msWriteBit(BK0_02_ISELECT, _DISABLE, _BIT7); // Disable freerun
 514   3                  Delay1ms(300);
 515   3                  msWriteBit(BK0_5E_PATTERN, 0, _BIT1); // Disable screen black
 516   3              }
 517   2              else
 518   2              #endif
 519   2                  msWriteBit(BK0_02_ISELECT, _DISABLE, _BIT7); // Disable freerun
 520   2      
 521   2          }
 522   1          msWriteByte(BK0_00_REGBK, ucBank);
 523   1      }
 524          
 525          #if( ENABLE_MONITOR_SIGNAL )
 526          XDATA BYTE g_ucMonitorSignal_ChangeCounter;
 527          void msMonitorSignal(BYTE ucFlag)
 528          {
 529   1          XDATA WORD wInHP;
 530   1          XDATA WORD wInVT;
 531   1          XDATA DWORD dwInHF;
 532   1      
 533   1          bit bHSyncChange = 0;
 534   1          bit bVTotalChange = 0;
 535   1      
 536   1      
 537   1          if( ucFlag&MONITOR_SIGNAL_INIT )
 538   1          {
 539   2              g_ucMonitorSignal_ChangeCounter = 0;
 540   2              return;
 541   2          }
 542   1      
 543   1          if( g_wMonitorSignal_Timer )
 544   1              return;
 545   1      
 546   1          g_wMonitorSignal_Timer = 100;
 547   1      
C51 COMPILER V8.18   DEVVD                                                                 09/29/2009 23:58:04 PAGE 10  

 548   1      
 549   1          wInHP = msGetVideoHPeriod(0);
 550   1          if( wInHP == 0 ) // H invalid
 551   1              return;
 552   1      
 553   1          wInVT = msVDGetVTotal();
 554   1          if( abs(g_InOutCtl.inHPeriod - wInHP)>=20 )  // Nelson Modify 2006-05-15
 555   1          {
 556   2              bHSyncChange = 1;
 557   2              bVTotalChange = 1;
 558   2          }
 559   1          else if( ( abs(g_InOutCtl.inVTotal - wInVT)>=50))  // Nelson Modify 2006-05-15
 560   1          {
 561   2              bVTotalChange = 1;
 562   2          }
 563   1      
 564   1      
 565   1          if( bHSyncChange || bVTotalChange )
 566   1          {
 567   2              ++ g_ucMonitorSignal_ChangeCounter;
 568   2              if( g_ucMonitorSignal_ChangeCounter >= 10 )
 569   2              {
 570   3                  g_ucMonitorSignal_ChangeCounter = 0;
 571   3              }
 572   2              else
 573   2              {
 574   3                  bHSyncChange = 0;
 575   3                  bVTotalChange = 0;
 576   3              }
 577   2          }
 578   1          else
 579   1          {
 580   2              g_ucMonitorSignal_ChangeCounter = 0;
 581   2          }
 582   1      
 583   1          if( bHSyncChange || bVTotalChange )
 584   1          {
 585   2              if( bHSyncChange )
 586   2              {
 587   3                  g_InOutCtl.inHPeriod = wInHP;
 588   3                  g_InOutCtl.inHFreq = dwInHF;
 589   3              }
 590   2              g_InOutCtl.inVTotal = wInVT;
 591   2      
 592   2              msProgWindow(OUTPUT_FREERUN);
 593   2              SetOutputClock(OUTPUT_FREERUN);
 594   2          }
 595   1      }
 596          #endif
 597          
 598          #if TV_ENABLE
 599          BOOL msVDGetSyncStable( BYTE ucStableCount, WORD wMaxTime )
 600          {
 601   1          WORD wCurrentStatus;
 602   1          BYTE ucStatusCount = 0;
 603   1          do
 604   1          {
 605   2              VD_DSP();
 606   2              wCurrentStatus = msVDGetSyncStatus(); //& (VD_HSYNC_LOCKED | VD_COLOR_LOCKED )//| VD_INTERLACED | 
             -VD_VSYNC_50HZ | VD_RESET_ON ); // check status
 607   2              if( wCurrentStatus & VD_HSYNC_LOCKED ) // check stable
 608   2              {
C51 COMPILER V8.18   DEVVD                                                                 09/29/2009 23:58:04 PAGE 11  

 609   3                  ucStatusCount ++;
 610   3      
 611   3                  if( ucStatusCount >= ucStableCount ) // stable counter
 612   3                  {
 613   4                      g_VdInfo.wVideoStatus=wCurrentStatus;
 614   4                      return TRUE;
 615   4                  }
 616   3              }
 617   2              Delay1ms(1);
 618   2          }while( wMaxTime -- ); // while
 619   1      
 620   1      return FALSE;
 621   1      }
 622          
 623          #endif
 624          
 625          #if 0
              void PrintVDStatus(WORD wStatus)
              {
              /*
                  WORD wTmp;
                  BYTE ucStatus2;
              
                  putstr("\r\n===============================");
                  printf("\r\nScaler_HPeriod=%d", msGetHorizontalPeriod() );
                  wTmp = msCalculateHFreqX10(msGetHorizontalPeriod());
                  printf("\r\nScaler_Freq=%d", wTmp/10);
                  printf(".%dKHz", wTmp%10);
                  printf("\r\nScaler_VTotal=%d", msGetVerticalTotal() );
                  wTmp = msCalculateVFreqX10(wTmp, msGetVerticalTotal())*2;
                  printf("\r\nScaler_VFreq=%d", wTmp/10 );
                  printf(".%dHz", wTmp%10 );
              
                  ucStatus2 = msVDCheckScalerStatus( CHECK_V_TOTAL|CHECK_V_FREQ );
                  if( ucStatus2&VD_H_PERIOD_INVALID )  putstr("\r\nVD_H_PERIOD_INVALID");
                  if( ucStatus2&VD_H_FREQ_INVALID )    putstr("\r\nVD_H_FREQ_INVALID");
                  if( ucStatus2&VD_V_TOTAL_INVALID )   putstr("\r\nVD_V_TOTAL_INVALID");
                  if( ucStatus2&VD_V_FREQ_INVALID )    putstr("\r\nVD_V_FREQ_INVALID");
              
              */
                      printf("msDSP_Std_GetNoiseMag====%x", msDSP_Std_GetNoiseMag());
              
                      printf("msDSP_Std_GetBurstMag====%x", msDSP_Std_GetBurstMag());
              
                      printf("msDSP_Std_GetPhaseError====%x", msDSP_Std_GetPhaseError());
                      printMsg("-----------------------------");
                      printf("g_bEnableVDColorBurst====%x", g_bEnableVDColorBurst);
              
                  printf( "\r\nVD_VTotal=%d", msVDGetVTotal() );
              
                  printf( "\r\nSync ctl state=%x", msVDSpecialRead( 0x00, BK2_01 )&0xF0 );
              
                  printf("\r\nVD status=%x", wStatus );
                  if( wStatus&VD_HSYNC_LOCKED )
                      putstr("\r\nVD_HSYNC_LOCKED");
                  if( wStatus&VD_INTERLACED )
                      putstr("\r\nVD_INTERLACED");
                  if( wStatus&VD_VSYNC_50HZ )
                      putstr("\r\nVD_VSYNC_50HZ");
              
                  if( msVDGetColorLockBit() )
                      putstr("\r\nSW VD color lock");
C51 COMPILER V8.18   DEVVD                                                                 09/29/2009 23:58:04 PAGE 12  

                  if( wStatus&VD_COLOR_LOCKED )
                      putstr("\r\nVD_COLOR_LOCKED");
              
                  //if( wStatus&VD_PAL_SWITCH )
                  if( msVDSpecialRead( 0x00, BK2_03 )&_BIT5 )
                      putstr("\r\nVD_PAL_SWITCH");
              //    switch( wStatus&VD_COLOUR_STD )
              //    {
              //        case VD_CSTD_NONE:  putstr("\r\nVD_CSTD_NONE"); break;
              //        case VD_CSTD_NTSC:  putstr("\r\nVD_CSTD_NTSC"); break;
              //        case VD_CSTD_PAL:   putstr("\r\nVD_CSTD_PAL");  break;
              //        case VD_CSTD_SECAM: putstr("\r\nVD_CSTD_SECAM");break;
              //    }
              
                  switch( wStatus&VD_FSC_TYPE )
                  {
                      case VD_FSC_4433:   putstr("\r\nVD_FSC_4433");  break;
                      case VD_FSC_3579:   putstr("\r\nVD_FSC_3579");  break;
                      case VD_FSC_3575:   putstr("\r\nVD_FSC_3575");  break;
                      case VD_FSC_3582:   putstr("\r\nVD_FSC_3582");  break;
                      case VD_FSC_4285:   putstr("\r\nVD_FSC_4285");  break;
                  }
              
                  //if( wStatus&VD_MACROVISION )    putstr("\r\nVD_MACROVISION");
              
                  putstr("\r\n");
                  msVDGetVideoSystem( wStatus );
              
                  // Read status from comb
                  {
                      BYTE ucTmp;
                      BYTE ucBank = msReadByte( BK0_00_REGBK);
                      msWriteByte( BK0_00_REGBK, 3 );
                      putstr("\r\n===== COMB status =====");
                      ucTmp = msReadByte( BK3_72_COMB_STSC);
                      if( ucTmp&_BIT7 )   putstr("\r\n525 lines");
                      if( ucTmp&_BIT6 )   putstr("\r\n625 lines");
                      if( ucTmp&_BIT5 )   putstr("\r\n3.58MHz");
                      if( ucTmp&_BIT4 )   putstr("\r\n4.43MHz");
                      if( ucTmp&_BIT3 )   putstr("\r\nNo input");
                      switch(ucTmp&7)
                      {
                          case 0: putstr("\r\nNTSC(M)"); break;
                          case 1: putstr("\r\nNTSC(443)"); break;
                          case 2: putstr("\r\nPAL(M)"); break;
                          case 3: putstr("\r\nPAL(B,D,G,H,I,N)"); break;
                          case 4: putstr("\r\nPAL(Nc)"); break;
                          case 5: putstr("\r\nPAL(60)"); break;
                          case 6: putstr("\r\nInput without Burst"); break;
                          case 7: putstr("\r\nUnknown"); break;
                      }
                      putstr("\r\n=======================");
                      msWriteByte( BK0_00_REGBK, ucBank );
                  }
              }
              #endif
 727          
 728          #if 0
              void SetColorSystem(StuChannelData ChannelData)
              {
                      BYTE temp;
              
C51 COMPILER V8.18   DEVVD                                                                 09/29/2009 23:58:04 PAGE 13  

                      temp = ((ChannelData.ucChannelMisc&ColorSysMask)>>4)%CS_COLORSYS_NUMS;
                      msWriteByte(BK0_00_REGBK,REG_BANK3_COMB);
                      switch(temp)
                      {
                              case CS_NTSC:
                                      msWriteByteMask(BK3_1C_CTRLSWCH, 0x01, 0x03);
                                      break;
              
                              case CS_PAL:
                                      msWriteByteMask(BK3_1C_CTRLSWCH, 0x02, 0x03);
                                      break;
              
                              case CS_AUTO:
                              default:
                                      msWriteByteMask(BK3_1C_CTRLSWCH, 0x03, 0x03);
                                      break;
                      }
                      msWriteByte(BK0_00_REGBK,REG_BANK_SCALER);
              }
              #endif
 753          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1693    ----
   CONSTANT SIZE    =     30    ----
   XDATA SIZE       =     33       8
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      20
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2       3
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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