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 + -
显示快捷键?