📄 devvd.lst
字号:
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 + -