dispinfo.lst

来自「显示屏驱动源代码」· LST 代码 · 共 602 行 · 第 1/2 页

LST
602
字号
 284   1              extern CODE BYTE *MuteOnStr[];
 285   1      
 286   1              ClearOSDInfo();
 287   1              InitOSDWindow(Init_Osd_DisplayMuteInfo);
 288   1      
 289   1              Str = MuteOnStr[GetOSDLang()];
 290   1              len = strlen(Str);
 291   1              WriteStringToAddr(MUTEINFO_ADDR, Str, len);  
 292   1              DrawAttrCnt(MUTEINFO_ADDR, BACK_COLOR|CH_COLOR_RED, len );       
 293   1      
 294   1              ShowOSDWindow(TVINFO_OSDWIN,TRUE);
 295   1              ShowOSDWindowAll(1);
 296   1              DisplayedOSD |= MUTE;
 297   1      }
 298          
 299          void ClearMuteInfo(void)
 300          {
 301   1              ShowOSDWindow(TVINFO_OSDWIN,FALSE);
 302   1              DisplayedOSD &= (~(MUTE));
C51 COMPILER V7.06   DISPINFO                                                              02/21/2008 14:00:25 PAGE 6   

 303   1      }
 304          
 305          BYTE CheckAndClearOSD(void)
 306          {
 307   1              WORD    ctime,  stime, diff;
 308   1              BYTE    dt;
 309   1              BYTE    Result=0;
 310   1      
 311   1              //return 1;
 312   1              dt = GetDisplayedOSD();
 313   1              if ( dt & ( MENU | INPUTINFO | TVCHN | TVVOL /*| LOGO*/ ) ) {
 314   2      
 315   2                      if( dt & MENU ) { 
 316   3                              stime = GetOSDLastKeyInTime();  
 317   3                              diff =  20 * 100; //GetOSDDuration()
 318   3                      }
 319   2                      else { 
 320   3                              stime = OSDDisplayedTime;       
 321   3                              diff = 2 * 100; 
 322   3                              #ifdef SUPPORT_TV
                                      if( TVChManual ) diff = 150; //100              
                                      #endif
 325   3                      }
 326   2              
 327   2                      ctime = GetTime_ms();                   
 328   2      
 329   2                      if( DiffTime_ms( stime, ctime ) >= diff ) {
 330   3      
 331   3                              #ifdef DEBUG_OSD
                                      if( !(dt & MENU) ) {
                                              dPrintf("\r\n(CheckAndClearOSD)DisplayedOSD:0x%x, ", (WORD)dt);
                                              dPrintf("starttime:%d, currtime:%d", stime, ctime);
                                      }
                                      #endif
 337   3      
 338   3                              //if( dt & LOGO )                       ClearLogo();
 339   3                              if( !DisplayInputHold )
 340   3                                      if( dt & INPUTINFO )    Result = ClearInput();
 341   3                              if( dt & TVVOL )                Result = ClearTVInfo();
 342   3      
 343   3                              if( dt & MENU )                 Result = CloseOSDMenu();  
 344   3      
 345   3                              #ifdef SUPPORT_TV
                                      if( dt & TVCHN ){ 
                                              if(TVChManual)
                                              ChangeTVChannel( DummyChannel );
                                              else
                                              Result = ClearTVInfo();
                                      }
                                      #endif
 353   3      
 354   3                              if( Result == 1){
 355   4                                      if( DisplayInputHold ) DisplayInput();
 356   4                                      else {
 357   5      
 358   5                                              if( IsAudioMuteOn() )   DisplayMuteInfo();
 359   5                                      }
 360   4                              }
 361   3                              return 1;
 362   3                      }
 363   2              }
 364   1      
C51 COMPILER V7.06   DISPINFO                                                              02/21/2008 14:00:25 PAGE 7   

 365   1              return 0;
 366   1      }
 367          
 368          #if defined( SUPPORT_PC ) || defined (SUPPORT_TV)
 369          
 370          void SetWindowStart(WORD x, WORD y)
 371          {
 372   1              WriteDecoder(TW88_WINSTART_HI, (x>>8) | ((y>>8)<<4));
 373   1              WriteDecoder(TW88_WINXSTART, (BYTE)x);
 374   1              WriteDecoder(TW88_WINYSTART, (BYTE)y);
 375   1      }
 376          #endif
 377          
 378          #if defined( SUPPORT_PC ) || defined( SUPPORT_DTV )
 379          
 380          void SetWindowWidth(BYTE width)
 381          {
 382   1              WriteDecoder(TW88_WINWIDTH, width);
 383   1      }
 384          
 385          void DisplayPCInfo(BYTE CODE *ptr)
 386          {
 387   1              WORD xstart, ystart;
 388   1              BYTE len;
 389   1      
 390   1              #ifdef DEBUG_PC
                      dPrintf("\r\n==== DisplayPCInfo (%s) ====", ptr);
                      #endif
 393   1      
 394   1              Clear_bypass();                                                         // HHY 1.52
 395   1      
 396   1              AutoPHPCalDisable();
 397   1              SetPHP( GetPHR() + 0x100 ); // for Sharp-NoTicon by RYU-101205  // Set PHP
 398   1      
 399   1              PanelFreeRun(1);                                                        // FreeRun
 400   1              WriteDecoder(0x06, 0x80);               // Soft Reset
 401   1      
 402   1              ClearOSDInfo();
 403   1      
 404   1              len  = strlen(ptr);
 405   1      
 406   1              xstart = ( PHR_ - len*PCINFO_ZOOM*FONT_WIDTH ) / 2;
 407   1              ystart =  PVR_ / 3;
 408   1              
 409   1              InitOSDWindow(Init_Osd_DisplayPCInfo);
 410   1              SetWindowStart(xstart, ystart);
 411   1              SetWindowWidth(len);
 412   1      
 413   1              ClearDataCnt(PCMEASUREINFO_ADDR, len);
 414   1              DrawAttrCnt(PCMEASUREINFO_ADDR, CH_COLOR_RED,len);       
 415   1      
 416   1              WriteStringToAddr(PCMEASUREINFO_ADDR, (BYTE CODE *)ptr, len);
 417   1              ShowOSDWindow(PCINFO_OSDWIN,TRUE);
 418   1              ShowOSDWindowAll(1);
 419   1              
 420   1              DisplayedOSD |=PCINFO;
 421   1      
 422   1      }
 423          
 424          void ClearPCInfo(void)
 425          {
 426   1              if( !(DisplayedOSD & PCINFO) )          return;                 //ljy070803
C51 COMPILER V7.06   DISPINFO                                                              02/21/2008 14:00:25 PAGE 8   

 427   1      
 428   1              DisplayedOSD &= (~(PCINFO));
 429   1              ShowOSDWindow(PCINFO_OSDWIN,FALSE);
 430   1              dPuts("\r\n== ClearPCInfo ==");
 431   1      
 432   1      //      PanelMute(0);                                                           // HHY 1.63
 433   1      }
 434          
 435          extern CODE BYTE AutoAdjustInfo[]; 
 436          
 437          void DisplayAutoAdjust(void)
 438          {
 439   1              InitOSDWindow(Init_Osd_BarWindow);
 440   1              ClearDataCnt(OSDMENU_BARADDR, 50); // Total 25*2 Char.
 441   1              DrawAttrCnt(OSDMENU_BARADDR, BG_COLOR_CYAN | CH_COLOR_WHITE, 50 );       
 442   1              WriteStringToAddr(OSDMENU_BARADDR, AutoAdjustInfo, 25);
 443   1      
 444   1              ShowOSDWindow(OSDBARWINDOW,TRUE);
 445   1              ShowOSDWindowAll(1);
 446   1      }
 447          void ClearAutoAdjust(void)
 448          {
 449   1              ShowOSDWindow(OSDBARWINDOW,FALSE);
 450   1      }
 451          
 452          #endif  // SUPPORT_PC
 453          
 454          //==================================================================
 455          //                                              TV Info
 456          //==================================================================
 457          #ifdef SUPPORT_TV
              
              #define TVCHN_WIDTH     3
              
              void DisplayTVChannel(BYTE chn, BYTE Chcolorflag )
              {
                      extern CODE BYTE Init_Osd_DisplayTVChannel[];
              
                      BYTE len, str[5];
                      BYTE Char_Color = CH_COLOR_GREEN;
                      WORD xstart, ystart;
              
                      DisplayedOSD &= ~TVCHN;
                      ClearOSDInfo();
              
                      if     ( chn <10 )   len = 1;
                      else if( chn <100 )  len = 2;
                      else                 len = 3;
              
                      if( (IsSavedCurChn()==0) && (Chcolorflag)) Char_Color = CH_COLOR_RED;  // Not Saved Channel
              
                      utoa( (WORD)chn, str, 10);
                      len = strlen(str);
              
                      xstart = PHR_ - len*TVCHN_ZOOM*FONT_WIDTH-10;
                      ystart =  0;
                      
                      InitOSDWindow(Init_Osd_DisplayTVChannel);
                      ClearDataCnt(TVCHINFO_ADDR, TVCHN_WIDTH);
                      DrawAttrCnt(TVCHINFO_ADDR, BACK_COLOR|Char_Color, TVCHN_WIDTH );         
                      
                      SetWindowStart(xstart, ystart);
C51 COMPILER V7.06   DISPINFO                                                              02/21/2008 14:00:25 PAGE 9   

              
                      WriteStringToAddr(TVCHINFO_ADDR, str, len);  
              
                      ShowOSDWindow(TVINFO_OSDWIN,TRUE);
                      ShowOSDWindowAll(1);
              
                      DisplayedOSD |= TVCHN;
                      OSDDisplayedTime = GetTime_ms();                        //GetTic();
              }
              
                                                                      //012345678901234
              CODE BYTE ScanTVInfo1[]=        {"Auto Scanning ...        "};
              CODE BYTE ScanTVInfo2[]=        {"Press MENU button to stop"};
              
              #define SCANTV_CHN_POS           21
              
              void DisplayScanTV(void)
              {
                      InitOSDWindow(Init_Osd_BarWindow);
              
                      DrawAttrCnt(OSDMENU_BARADDR, BG_COLOR_CYAN | CH_COLOR_WHITE, 25 );       // All Line Attr clear by default col
             -or.
                      DrawAttrCnt(OSDMENU_BARADDR+25, BG_COLOR_WHITE | CH_COLOR_CYAN, 25 );    // All Line Attr clear by default 
             -color.
              
                      WriteStringToAddr(OSDMENU_BARADDR, ScanTVInfo1, 25);  // 25: width
                      WriteStringToAddr(OSDMENU_BARADDR+25, ScanTVInfo2, 25);  // 25: width
              
                      ShowOSDWindow(OSDBARWINDOW,TRUE);
                      ShowOSDWindowAll(1);
              }
              
              void DisplayScanTVChannel(BYTE *ptr)
              {
                      BYTE len;
                      len = strlen(ptr);
                      WriteStringToAddr(OSDMENU_BARADDR+SCANTV_CHN_POS, ptr, len);
              }
              
              #ifdef PAL_TV
              void DisplayManualScanTVProg(BYTE flag)
              {
                      CODE BYTE PlusDirection[] = { 0x1c, 0x1c, 0x1c, 0 };
                      CODE BYTE MinusDirection[] = { 0x1b, 0x1b, 0x1b, 0 };
              
                      WriteStringToAddr(OSDMENU_BARADDR+SCANTV_CHN_POS, (flag==UP? PlusDirection:MinusDirection), 3);
              }
              #endif
              
              void ClearScanTV(void)
              {
                      ShowOSDWindow(OSDBARWINDOW,FALSE);
              }
              
              #endif
 542          
 543          BYTE ClearTVInfo(void)
 544          {
 545   1              
 546   1              if( DisplayedOSD & TVVOL )
 547   1              {       ShowOSDWindow(OSDBARWINDOW, FALSE);
 548   2                      DisplayedOSD &= (~(TVVOL));
C51 COMPILER V7.06   DISPINFO                                                              02/21/2008 14:00:25 PAGE 10  

 549   2              }
 550   1              else
 551   1              {
 552   2                      ShowOSDWindow(TVINFO_OSDWIN, FALSE);
 553   2                      DisplayedOSD &= (~(TVCHN));
 554   2              }
 555   1              return 1;
 556   1      }
 557          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1268    ----
   CONSTANT SIZE    =    166    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----      32
   DATA SIZE        =      3    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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