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

📄 osdbasic.lst

📁 此程序为twell8806驱动程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 453   1      
 454   1              if( I2CAutoIncFlagOn==0 )
 455   1              WriteTW88(TW88_ENABLERAM, 0x00); // OSD RAM Auto Access Disable
 456   1      }
 457          #ifdef PAL_TV
              void DrawAttrString(WORD addr, BYTE *Str, BYTE cnt)
              {
                      if( I2CAutoIncFlagOn==0 )
                      WriteTW88(TW88_ENABLERAM, 0x04); // OSD RAM Auto Access Enable
                      #ifndef TW8806
                      WriteTW88(TW88_OSDRAMADDRHI, addr>>8);
                      #endif
                      WriteTW88(TW88_OSDRAMADDRLO, addr);
                      WriteI2Cn( TW88I2CAddress, TW88_OSDRAMDATALO, Str, cnt );       // Attr
              
                      if( I2CAutoIncFlagOn==0 )
                      WriteTW88(TW88_ENABLERAM, 0x00); // OSD RAM Auto Access Disable
              }
              #endif
 472          void DrawAttrCnt(WORD addr, BYTE color, BYTE cnt)
 473          {
 474   1      //      BYTE val;
 475   1      //      val = ReadTW88(TW88_ENABLERAM);
 476   1      //      WriteTW88(TW88_ENABLERAM, (val&0xf3)|0x04);             // OSD RAM Auto Access Enable
 477   1      
 478   1              WriteTW88(TW88_ENABLERAM, 0x04);                // OSD RAM Auto Access Enable
 479   1              #ifndef TW8806
                      WriteTW88(TW88_OSDRAMADDRHI, addr>>8);
                      #endif
 482   1              WriteTW88(TW88_OSDRAMADDRLO, addr);
 483   1              WriteI2CnD( TW88I2CAddress, TW88_OSDRAMDATALO, color, cnt );
 484   1      
 485   1              WriteTW88(TW88_ENABLERAM, 0x00);                // OSD RAM Auto Access Disable
 486   1      }
C51 COMPILER V7.50   OSDBASIC                                                              08/20/2007 10:23:32 PAGE 9   

 487          
 488          void ClearDataCnt(WORD addr, BYTE cnt)
 489          {
 490   1              if( I2CAutoIncFlagOn==0 )
 491   1              WriteTW88(TW88_ENABLERAM, 0x04);                // OSD RAM Auto Access Enable
 492   1              #ifndef TW8806
                      WriteTW88(TW88_OSDRAMADDRHI, addr>>8);
                      #endif
 495   1              WriteTW88(TW88_OSDRAMADDRLO, addr);
 496   1              WriteI2CnD( TW88I2CAddress, TW88_OSDRAMDATAHI, ' ', cnt );
 497   1      
 498   1              if( I2CAutoIncFlagOn==0 )
 499   1              WriteTW88(TW88_ENABLERAM, 0x00);                // OSD RAM Auto Access Disable
 500   1      }
 501          /*
 502          #ifdef SUPPORT_TW88_CC_DECODER
 503          void CopyStrToOSDWindow(BYTE winno, BYTE xoff, BYTE yoff, BYTE cnt, BYTE attr, BYTE *str)
 504          {
 505                  extern IDATA struct OSDStrInfo OSDStrInfo;
 506          
 507                  OSDStrInfo.cnt = cnt;
 508                  if( !OSDStrInfo.cnt ) OSDStrInfo.cnt = strlen( str );
 509                  OSDStrInfo.addr = xoff;
 510                  OSDStrInfo.str = (DWORD)(str);
 511                  OSDStrInfo.attr = attr;
 512                  CopyStr__(0,winno,yoff); 
 513          }
 514          #endif //SUPPORT_TW88_CC_DECODER
 515          
 516          #ifndef KEILC
 517          void CopyCStrToOSDWindow(BYTE winno, BYTE xoff, BYTE yoff, BYTE cnt, BYTE attr, CODE_P BYTE *str)
 518          {
 519                  extern IDATA struct OSDStrInfo OSDStrInfo;
 520                  OSDStrInfo.cnt = cnt;
 521                  if( !OSDStrInfo.cnt ) OSDStrInfo.cnt = CStrlen( str );
 522                  OSDStrInfo.addr = xoff;
 523                  OSDStrInfo.str = (DWORD)(str);
 524                  OSDStrInfo.attr = attr;
 525                  CopyStr__(1,winno,yoff);
 526          }
 527          #endif
 528          
 529          void CopySpecialCStrToOSDWindow(BYTE winno, BYTE xoff, BYTE yoff, BYTE cnt, BYTE attr, CODE_P WORD *str)
 530          {
 531                  extern IDATA struct OSDStrInfo OSDStrInfo;
 532          
 533                  OSDStrInfo.cnt = cnt;
 534                  if( !OSDStrInfo.cnt )OSDStrInfo.cnt = WCStrlen( str );
 535                  OSDStrInfo.addr = xoff;
 536                  OSDStrInfo.str = (DWORD)(str);
 537                  OSDStrInfo.attr = attr;
 538                  CopyStr__(2,winno,yoff);
 539          }
 540          */
 541          //*****************************************************************************
 542          //
 543          //      Conversion Functions.
 544          //
 545          //*****************************************************************************
 546          BYTE utoa(WORD value, BYTE *str, BYTE radix)
 547          {
 548   1              BYTE cnt, *str1;
C51 COMPILER V7.50   OSDBASIC                                                              08/20/2007 10:23:32 PAGE 10  

 549   1              WORD i, div;
 550   1      
 551   1              #ifdef DEBUG_OSD
                      dPrintf("\r\n++(utoa):0x%x__", value);
                      #endif
 554   1      
 555   1              str1 = str;
 556   1              cnt=0;
 557   1              if( radix==10) {
 558   2                      for(div = 10000; div>=10; div/=10) {
 559   3                              i = value/div;
 560   3                              if( i ) {
 561   4                                      *str++ = i+'0';
 562   4                                      cnt++;
 563   4                              }
 564   3                              else if( cnt )          // 100, 200, 20,,,,
 565   3                                      *str++ = '0';
 566   3      
 567   3                              value%=div;
 568   3                      }
 569   2                      *str++ = value+'0';
 570   2                      *str = 0;
 571   2              }
 572   1              else if( radix==16) {
 573   2                      for(div = 0x1000; div>=0x10; div/=0x10) {
 574   3                              i = value/div;
 575   3                              if( i ) {
 576   4                                      if( i>=0xa ) 
 577   4                                              *str++ = i-0xa+'A';
 578   4                                      else
 579   4                                              *str++ = i+'0';
 580   4                                      value%=div;
 581   4                              }
 582   3                      }
 583   2                      if( value>=0xa ) 
 584   2                              *str++ = value-0xa+'A';
 585   2                      else
 586   2                              *str++ = value+'0';
 587   2                      *str = 0;
 588   2              }
 589   1              return 1;
 590   1      }
 591          
 592          BYTE ltoa_K(long value, BYTE *str, BYTE i_part)
 593          {
 594   1              BYTE  j;
 595   1              long  divider;
 596   1      
 597   1              #ifdef DEBUG_OSD
                      dPrintf("\r\n++(ltoa_K):%ld__", value);
                      #endif
 600   1      
 601   1              j=0;
 602   1              for( divider = 100000000L; divider >= 1000; divider /=10) {
 603   2                      if( ( value/ divider ) || j ) {
 604   3                              *str++ = value/divider + '0';
 605   3                              j++;
 606   3                      }
 607   2                      value %= divider;
 608   2              }
 609   1              *str++ = '.';
 610   1              j++;
C51 COMPILER V7.50   OSDBASIC                                                              08/20/2007 10:23:32 PAGE 11  

 611   1              for( ; divider >= 10; divider /=10) {
 612   2                      if( value/ divider  || j) {
 613   3                              *str++ = value/divider + '0';
 614   3                              j++;
 615   3                              i_part--;
 616   3                      }
 617   2                      if( i_part==0 ) {
 618   3                              *str = 0;
 619   3                              return j;
 620   3                      }
 621   2      
 622   2                      value %= divider;
 623   2              }
 624   1              if( value ) {
 625   2                      *str++ = value + '0';
 626   2                      j++;
 627   2              }
 628   1              *str = 0;
 629   1              return j;
 630   1      }
 631          /*
 632          BYTE WCStrlen(CODE_P WORD *str)
 633          {
 634                  BYTE i=0;
 635          
 636                  while( *str++ ) i++;
 637                  return i;
 638          }
 639          */
 640          BYTE strlen( BYTE *str )
 641          {
 642   1              BYTE i=0;
 643   1      
 644   1              while( *str++ ) i++;
 645   1              return i;
 646   1      }
 647          //=============================================================================
 648          //                      Init Menu Window Data initialize 
 649          //=============================================================================
 650          #include "OsdInitTable.c"
 651          
 652          void InitOSDWindow(BYTE *ptr)
 653          {
 654   1              BYTE i;
 655   1                      
 656   1              WriteTW88(0xff, ReadTW88(0xff) & 0xef);
 657   1      
 658   1          i = 0;
 659   1          while(ptr[i]) {
 660   2                      WriteI2Cn_(TW88I2CAddress, &ptr[i+1], ptr[i]);
 661   2                      WriteI2Cn_(TW88I2CAddress, &ptr[i+1], 5);               // To set position LSB...
 662   2      
 663   2              i += ptr[i] + 1;
 664   2          };
 665   1      
 666   1              WriteTW88(0xff, ReadTW88(0xff) | 0x10);
 667   1      }
 668          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1428    ----
C51 COMPILER V7.50   OSDBASIC                                                              08/20/2007 10:23:32 PAGE 12  

   CONSTANT SIZE    =    229    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----      66
   DATA SIZE        =   ----    ----
   IDATA SIZE       =      8    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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