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

📄 osdbasic.lst

📁 车载DVD osdIC TW8816原厂代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 252   2                WriteTW88( 0x94, 0x0C );              //0000 1100 ROM Font select with same attribute
 253   2                Puts("\r\nIf you'd like to exit, press any Key....");
 254   2                while ( !RS_ready() ){
 255   3                  WriteTW88( 0x94, 0x0C );            //0000 1100 ROM Font select with same attribute
 256   3                      WriteTW88( 0x96, 0 );                   // set start position of RAM
 257   3                      WriteTW88( 0x98, 0x47 );                // different color with upper
 258   3                      i = 0;
 259   3                      do {
 260   4                              WriteTW88( 0x97, i++ );
 261   4                              WriteTW88( 0x97, i++ );
 262   4                              WriteTW88( 0x97, i++ );
 263   4                              WriteTW88( 0x97, i++ );
 264   4                              WriteTW88( 0x97, i++ );
 265   4                              WriteTW88( 0x97, i++ );
 266   4                              WriteTW88( 0x97, i++ );
 267   4                              WriteTW88( 0x97, i++ );
 268   4                      } while ( i != 0 );
 269   3                }
 270   2              }
 271   1              WriteTW88( 0x9f, 0x17 );                        // enable Window #2
 272   1              WriteTW88( 0x9c, 0x0f);                 // turn ON
 273   1      }
 274          void DisplayRAMFont(BYTE scode)
 275          {
 276   1      BYTE    i, j;
 277   1      
 278   1              WriteTW88( 0x94, 0x02 );                // clear OSD RAM clear
 279   1              WriteTW88( 0x9e, 1 );                   // window #1
 280   1              for ( i=0; i<(sizeof(FontTestWindow)/2); i++ )
 281   1                      WriteTW88(FontTestWindow[i*2], FontTestWindow[i*2+1]);
 282   1              if ( scode == 0 ) {
 283   2                      WriteTW88( 0x94, 0x80 );                //0000 1101 RAM Font select with same attribute
 284   2                      for ( i=0; i<0xfe; i++ ) {
 285   3                              WriteTW88( 0x96, i );
 286   3                              WriteTW88( 0x97, i );
 287   3                              WriteTW88( 0x98, 0x97 );
 288   3                      }
 289   2              }
 290   1              else if ( scode == 1 ) {
 291   2                Puts("\r\nIf you'd like to exit, press any Key....");
 292   2                j = 0;
 293   2                while ( !RS_ready() ){
 294   3                      WriteTW88( 0x94, 0x8C );                //0000 1101 RAM Font select with same attribute
 295   3                      WriteTW88( 0x96, 0 );                   // set start position of RAM
 296   3                      WriteTW88( 0x98, 0x47 );                // different color with upper
 297   3                      i = 0;
 298   3                      do {
 299   4                              WriteTW88( 0x97, i++ );
 300   4                              WriteTW88( 0x97, i++ );
 301   4                              WriteTW88( 0x97, i++ );
 302   4                              WriteTW88( 0x97, i++ );
C51 COMPILER V7.50   OSDBASIC                                                              04/01/2008 15:02:22 PAGE 6   

 303   4                              WriteTW88( 0x97, i++ );
 304   4                              WriteTW88( 0x97, i++ );
 305   4                              WriteTW88( 0x97, i++ );
 306   4                              WriteTW88( 0x97, i++ );
 307   4                      } while ( i != 0 );
 308   3                }
 309   2              }
 310   1              else {
 311   2                      DownloadUDFont();               
 312   2              }
 313   1              WriteTW88( 0x9f, 0x17 );                        // enable Window #2
 314   1              WriteTW88( 0x9c, 0x0f);                 // turn ON
 315   1      }
 316          
 317          
 318          //*****************************************************************************
 319          //
 320          //      Functions for only CC.
 321          //
 322          //*****************************************************************************
 323          //ljy052903: Only In CC 
 324          
 325          //*****************************************************************************
 326          
 327               // Move to CC by Harry
 328          
 329          //===============================================================================
 330          //  Used OSD Menu 
 331          //===============================================================================
 332          //------------------------------------------------------------
 333          void WriteStringToAddr(WORD addr, BYTE *str, BYTE cnt)
 334          {
 335   1              //if( I2CAutoIncFlagOn==0 )
 336   1              WriteTW88(TW88_ENABLERAM, 0x04); // OSD RAM Auto Access Enable, ROMFONT Start Enable
 337   1      
 338   1              WriteTW88(TW88_OSDRAMADDRLO, addr);
 339   1              WriteI2Cn( TW88I2CAddress, TW88_OSDRAMDATAHI, str, cnt );
 340   1      
 341   1      //      if( I2CAutoIncFlagOn==0 )
 342   1              WriteTW88(TW88_ENABLERAM, 0x00); // OSD RAM Auto Access Disable
 343   1      }
 344          #ifdef PAL_TV
 345          void DrawAttrString(WORD addr, BYTE *Str, BYTE cnt)
 346          {
 347   1      //      if( I2CAutoIncFlagOn==0 )
 348   1              WriteTW88(TW88_ENABLERAM, 0x04); // OSD RAM Auto Access Enable
 349   1              WriteTW88(TW88_OSDRAMADDRLO, addr);
 350   1              WriteI2Cn( TW88I2CAddress, TW88_OSDRAMDATALO, Str, cnt );       // Attr
 351   1      
 352   1      //      if( I2CAutoIncFlagOn==0 )
 353   1              WriteTW88(TW88_ENABLERAM, 0x00); // OSD RAM Auto Access Disable
 354   1      }
 355          #endif
 356          void DrawAttrCnt(WORD addr, BYTE color, BYTE cnt)
 357          {
 358   1              WriteTW88(TW88_ENABLERAM, 0x04);                // OSD RAM Auto Access Enable
 359   1              WriteTW88(TW88_OSDRAMADDRLO, addr);
 360   1              WriteI2CnD( TW88I2CAddress, TW88_OSDRAMDATALO, color, cnt );
 361   1      
 362   1              WriteTW88(TW88_ENABLERAM, 0x00);                // OSD RAM Auto Access Disable
 363   1      }
 364          
C51 COMPILER V7.50   OSDBASIC                                                              04/01/2008 15:02:22 PAGE 7   

 365          void ClearDataCnt(WORD addr, BYTE cnt)
 366          {
 367   1      //      if( I2CAutoIncFlagOn==0 )
 368   1              WriteTW88(TW88_ENABLERAM, 0x04);                // OSD RAM Auto Access Enable
 369   1              WriteTW88(TW88_OSDRAMADDRLO, addr);
 370   1              WriteI2CnD( TW88I2CAddress, TW88_OSDRAMDATAHI, ' ', cnt );
 371   1      
 372   1      //      if( I2CAutoIncFlagOn==0 )
 373   1              WriteTW88(TW88_ENABLERAM, 0x00);                // OSD RAM Auto Access Disable
 374   1      }
 375          //*****************************************************************************
 376          //
 377          //      Conversion Functions.
 378          //
 379          //*****************************************************************************
 380          BYTE utoa(WORD value, BYTE *str, BYTE radix)
 381          {
 382   1              BYTE cnt, *str1;
 383   1              WORD i, div;
 384   1      
 385   1              #ifdef DEBUG_OSD
                      dPrintf("\r\n++(utoa):0x%x__", value);
                      #endif
 388   1      
 389   1              str1 = str;
 390   1              cnt=0;
 391   1              if( radix==10) {
 392   2                      for(div = 10000; div>=10; div/=10) {
 393   3                              i = value/div;
 394   3                              if( i ) {
 395   4                                      *str++ = i+'0';
 396   4                                      cnt++;
 397   4                              }
 398   3                              else if( cnt )          // 100, 200, 20,,,,
 399   3                                      *str++ = '0';
 400   3      
 401   3                              value%=div;
 402   3                      }
 403   2                      *str++ = value+'0';
 404   2                      *str = 0;
 405   2              }
 406   1              else if( radix==16) {
 407   2                      for(div = 0x1000; div>=0x10; div/=0x10) {
 408   3                              i = value/div;
 409   3                              if( i ) {
 410   4                                      if( i>=0xa ) 
 411   4                                              *str++ = i-0xa+'A';
 412   4                                      else
 413   4                                              *str++ = i+'0';
 414   4                                      value%=div;
 415   4                              }
 416   3                      }
 417   2                      if( value>=0xa ) 
 418   2                              *str++ = value-0xa+'A';
 419   2                      else
 420   2                              *str++ = value+'0';
 421   2                      *str = 0;
 422   2              }
 423   1              return 1;
 424   1      }
 425          
 426          BYTE ltoa_K(long value, BYTE *str, BYTE i_part)
C51 COMPILER V7.50   OSDBASIC                                                              04/01/2008 15:02:22 PAGE 8   

 427          {
 428   1              BYTE  j;
 429   1              long  divider;
 430   1      
 431   1              #ifdef DEBUG_OSD
                      dPrintf("\r\n++(ltoa_K):%ld__", value);
                      #endif
 434   1      
 435   1              j=0;
 436   1              for( divider = 100000000L; divider >= 1000; divider /=10) {
 437   2                      if( ( value/ divider ) || j ) {
 438   3                              *str++ = value/divider + '0';
 439   3                              j++;
 440   3                      }
 441   2                      value %= divider;
 442   2              }
 443   1              *str++ = '.';
 444   1              j++;
 445   1              for( ; divider >= 10; divider /=10) {
 446   2                      if( value/ divider  || j) {
 447   3                              *str++ = value/divider + '0';
 448   3                              j++;
 449   3                              i_part--;
 450   3                      }
 451   2                      if( i_part==0 ) {
 452   3                              *str = 0;
 453   3                              return j;
 454   3                      }
 455   2      
 456   2                      value %= divider;
 457   2              }
 458   1              if( value ) {
 459   2                      *str++ = value + '0';
 460   2                      j++;
 461   2              }
 462   1              *str = 0;
 463   1              return j;
 464   1      }
 465          
 466          BYTE strlen( BYTE *str )
 467          {
 468   1              BYTE i=0;
 469   1      
 470   1              while( *str++ ) i++;
 471   1              return i;
 472   1      }
 473          //=============================================================================
 474          //                      Init Menu Window Data initialize 
 475          //=============================================================================
 476          #include "OsdInitTable.c"
 477          
 478          void InitOSDWindow(BYTE *ptr)
 479          {
 480   1              BYTE i, page;
 481   1                      
 482   1              page = ReadTW88(0xff);
 483   1              WriteTW88( 0xff, (page&0xfe));
 484   1              WriteTW88(0xe0, ReadTW88(0xe0) & 0xef);
 485   1      
 486   1          i = 0;
 487   1          while(ptr[i]) {
 488   2                      WriteI2Cn_(TW88I2CAddress, &ptr[i+1], ptr[i]);
C51 COMPILER V7.50   OSDBASIC                                                              04/01/2008 15:02:22 PAGE 9   

 489   2                      WriteI2Cn_(TW88I2CAddress, &ptr[i+1], 5);               // To set position LSB...
 490   2      
 491   2              i += ptr[i] + 1;
 492   2          };
 493   1      
 494   1              WriteTW88(0xe0, ReadTW88(0xe0) | 0x10);
 495   1              WriteTW88( 0xff, page );
 496   1      }
 497          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1922    ----
   CONSTANT SIZE    =    310    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----      52
   DATA SIZE        =      8    ----
   IDATA SIZE       =   ----    ----
   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 + -