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

📄 msosd.lst

📁 MSTARXX.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.18   MSOSD                                                                 09/29/2009 23:58:03 PAGE 1   


C51 COMPILER V8.18, COMPILATION OF MODULE MSOSD
OBJECT MODULE PLACED IN ..\..\1out\msOSD.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ..\..\msFunc\msOSD.c BROWSE INCDIR(..\..\inc) DEBUG OBJECTEXTEND PRINT(..\.
                    -.\1out\msOSD.lst) OBJECT(..\..\1out\msOSD.obj)

line level    source

   1          #define _MSOSD_C_
   2          
   3          #include <stdlib.h>
   4          #include "types.h"
   5          #include "ms_reg.h"
   6          #include "board.h"
   7          #include "global.h"
   8          #include "DEBUG.h"
   9          #include "panel.h"
  10          #include "mstar.h"
  11          #include "misc.h"
  12          #include "menudef.h"
  13          #include "font.h"
  14          #include "extlib.h"
  15          #include "ms_rwreg.h"
  16          #include "msOSD.h"
  17          
  18          #define DoubleXSize     0
  19          #define DoubleYSize     0
  20          
  21          
  22          #define ColorFontStart          200
  23          
  24          //==================================================================================
  25          // variable declaration
  26          //
  27          BYTE OsdWindowWidth=10;
  28          BYTE OsdWindowHeight=10;
  29          BYTE OsdFontColor=0x01;
  30          
  31          //==================================================================================
  32          // Code start
  33          void Osd_InitOSD(void)
  34          { // Osd transparency control
  35   1          BYTE ucBank;
  36   1          ucBank=msReadByte(BK0_00_REGBK);
  37   1          msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
  38   1      
  39   1          msSoftwareReset(OSDR_B, 1);
  40   1      
  41   1          msWriteByte( BK0_A0_OSDIOA, 0x9E|_BIT6 ); // enable all OSD I/O channel and Clear OSD code&attr
  42   1      
  43   1          msWriteOSDByte(OSD_0C_IOSDC1, 0x00);
  44   1      
  45   1          msWriteByte(BK0_62_DITHCTL1, 0x03);//for OSD Blending
  46   1          msWriteByte(BK0_63_OSD_CTL, 0x03);//New Blending Level
  47   1          msWriteOSDByte(OSD_01_OSDDBC, 0x5); // enable double
  48   1          msWriteOSDByte(OSD_12_OCBUFO, 0x00); // disable OSD code buffer Base/Offset address
  49   1          msWriteOSDByte(OSD_0E_IOSDC3, 0x00);//0x0F); // shadow function control
  50   1      
  51   1          msWriteOSDByte(OSD_10_IOSDC4, 0x1B);
  52   1          msWriteOSDByte(OSD_42_UNDERLINE, 0x0C);
  53   1      
  54   1          msWriteByte(BK0_A0_OSDIOA, 0x9E);
C51 COMPILER V8.18   MSOSD                                                                 09/29/2009 23:58:03 PAGE 2   

  55   1          //Osd_LoadFont(0, &tOSDFont0, sizeof(tOSDFont0)); // load osd fonts
  56   1          #ifdef Multi_language
                  if(g_VideoSetting.Language==LANG_SChinese)
                      Osd_LoadInvertFont(InvertDRAM_MONO_FONT_BUS|InvertCOMPRESS_DATA, 0, &tCompressChinaFontData, sizeof(t
             -CompressChinaFontData));
                  else
                  #endif              
  61   1          Osd_LoadInvertFont(InvertDRAM_MONO_FONT_BUS|InvertCOMPRESS_DATA, 0,&tCompressMonoFontData,sizeof(tComp
             -ressMonoFontData));
  62   1      
  63   1          WatchDogClear();
  64   1          Osd_LoadFont(ColorFontStart, &tOSDFont1, sizeof(tOSDFont1)); // load osd fonts
  65   1          msWriteOSDByte(OSD_46_OSD4CFFA,ColorFontStart);
  66   1          Osd_LoadColor(&tOSDColorPalette0, sizeof(tOSDColorPalette0));   // load osd color
  67   1          msWriteByte( BK0_00_REGBK, ucBank);
  68   1      }
  69          
  70          
  71          // setup osd window size
  72          void Osd_SetWindowSize(BYTE width, BYTE height)
  73          {
  74   1          BYTE ucBank;
  75   1          ucBank=msReadByte(BK0_00_REGBK);
  76   1          msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
  77   1      
  78   1      
  79   1          OsdWindowWidth=width&0x3F;
  80   1          OsdWindowHeight=height&0x1F;
  81   1          msWriteOSDByte(OSD_06_OSDW, OsdWindowWidth-1);
  82   1          msWriteOSDByte(OSD_07_OSDH, OsdWindowHeight-1);
  83   1      
  84   1          msWriteByte(BK0_A0_OSDIOA, 0xDE); // clear osd content
  85   1          ForceDelay1ms(3);
  86   1          msWriteByte(BK0_A0_OSDIOA, 0x9E);
  87   1          msWriteByte( BK0_00_REGBK, ucBank);
  88   1      }
  89          
  90          // setup
  91          void Osd_SetPosition(BYTE xPos, BYTE yPos)
  92          {
  93   1          WORD posValue;
  94   1          BYTE ucBank;
  95   1          ucBank=msReadByte(BK0_00_REGBK);
  96   1      
  97   1      #if DoubleXSize
                  posValue=((DWORD)xPos*(PanelWidth-(WORD)OsdWindowWidth*12*2))/100+(PanelHStart-48);
              #else
 100   1          posValue=((DWORD)xPos*(PanelWidth-(WORD)OsdWindowWidth*12))/100+(PanelHStart-48);
 101   1      #endif
 102   1          msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
 103   1          //posValue=posValue/4;
 104   1          msWriteOSDByte(OSD_02_OHSTA_L, posValue&0xFF);
 105   1          msWriteOSDByte(OSD_03_OHSTA_H, posValue>>8);
 106   1      
 107   1      #if DoubleYSize
                  posValue=((DWORD)yPos*(PanelHeight-(WORD)OsdWindowHeight*18*2))/100;
              #else
 110   1          posValue=((DWORD)yPos*(PanelHeight-(WORD)OsdWindowHeight*18))/100;
 111   1      #endif
 112   1      
 113   1          //posValue=posValue/4;;
 114   1          msWriteOSDByte(OSD_04_OVSTA_L, posValue&0xFF);
C51 COMPILER V8.18   MSOSD                                                                 09/29/2009 23:58:03 PAGE 3   

 115   1          msWriteOSDByte(OSD_05_OVSTA_H, posValue>>8);
 116   1          msWriteByte( BK0_00_REGBK, ucBank);
 117   1      }
 118          
 119          
 120          void Osd_LoadFont(BYTE addr, BYTE *fontPtr, WORD num)
 121          {
 122   1          BYTE ucBank;
 123   1          ucBank=msReadByte(BK0_00_REGBK);
 124   1          msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
 125   1      
 126   1              msWriteByte(BK0_A3_RAMFA, addr);
 127   1      
 128   1              msWriteTBL(BK0_A4_RAMFD, fontPtr, num, 0);
 129   1          msWriteByte( BK0_00_REGBK, ucBank);
 130   1      }
 131          
 132          void Osd_LoadColor(BYTE *colorPtr, BYTE num)
 133          {
 134   1          BYTE ucBank;
 135   1          ucBank=msReadByte(BK0_00_REGBK);
 136   1          msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
 137   1      
 138   1          msWriteByte(BK0_A1_OSDRA, OSD_28_CLR0R);
 139   1          msWriteTBL(BK0_A2_OSDRD, colorPtr, num, 0);
 140   1          msWriteByte( BK0_00_REGBK, ucBank);
 141   1      }
 142          
 143          void Osd_SetTextColor(BYTE foreColor, BYTE backColor)
 144          {
 145   1              OsdFontColor=(foreColor&0xF)<<4|(backColor&0xF);
 146   1      }
 147          
 148          void Osd_DrawChar(BYTE xPos, BYTE yPos, BYTE ch)
 149          {
 150   1          WORD tempValue;
 151   1          BYTE drawCode=TRUE;
 152   1          BYTE ucBank;
 153   1      
 154   1          ucBank=msReadByte(BK0_00_REGBK);
 155   1      
 156   1          msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
 157   1      
 158   1          if (yPos&_BIT7)
 159   1              drawCode=FALSE;
 160   1          yPos&=0x3F;//~(_BIT7|_BIT6);
 161   1      
 162   1          tempValue=(WORD)yPos*OsdWindowWidth+xPos; // get real address
 163   1          msWriteWord(BK0_A9_DISPAA_H, tempValue); // display font attribute
 164   1          msWriteByte(BK0_AA_DISPAD, OsdFontColor);
 165   1          if (drawCode)
 166   1          {
 167   2              msWriteWord(BK0_A6_DISPCA_H, tempValue); // dispaly font code
 168   2              msWriteByte(BK0_A7_DISPCD, tASCII2FONT[ch]);
 169   2          }
 170   1          msWriteByte(BK0_00_REGBK, ucBank);
 171   1      }
 172          
 173          void Osd_DrawStr(BYTE xPos, BYTE yPos, BYTE *str)
 174          {
 175   1          WORD tempValue;
 176   1          BYTE drawCode=TRUE;
C51 COMPILER V8.18   MSOSD                                                                 09/29/2009 23:58:03 PAGE 4   

 177   1          BYTE ucBank;
 178   1      
 179   1          if (yPos&_BIT7)
 180   1              drawCode=FALSE;
 181   1          yPos&=0x3F;//~(_BIT7|_BIT6);
 182   1      
 183   1          #define dispChar    xPos
 184   1          #define dispPtr             yPos
 185   1      
 186   1          ucBank = msReadByte( BK0_00_REGBK);
 187   1      
 188   1          tempValue=(WORD)yPos*OsdWindowWidth+xPos; // get real address
 189   1          dispPtr=0;
 190   1          msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
 191   1          msWriteWord(BK0_A9_DISPAA_H, tempValue);
 192   1          while (dispChar=*(str+dispPtr))  // display string font index
 193   1          {
 194   2              msWriteByte(BK0_AA_DISPAD, OsdFontColor);
 195   2              dispPtr++;
 196   2          }
 197   1          if (drawCode==TRUE)
 198   1          {
 199   2              dispPtr=0;
 200   2              msWriteWord(BK0_A6_DISPCA_H, tempValue);
 201   2              while (dispChar=*(str+dispPtr))  // display string font index
 202   2              {
 203   3                  msWriteByte(BK0_A7_DISPCD, tASCII2FONT[dispChar]);
 204   3                  dispPtr++;
 205   3              }
 206   2          }
 207   1      
 208   1          msWriteByte(BK0_00_REGBK, ucBank);
 209   1      
 210   1          #undef dispChar
 211   1          #undef dispPtr
 212   1      }
 213          
 214          #define Num2ASCII(Num) (Num+0x30)
 215          void DrawNum(BYTE xPos, BYTE yPos, char len, WORD value)//int value)
 216          {
 217   1          char _minus=0;
 218   1      
 219   1          if (value<0)
 220   1          {
 221   2              value=0-value;
 222   2              _minus=1;
 223   2          }
 224   1          if (value==0)
 225   1              Osd_DrawChar(xPos+(len--), yPos, (BYTE)Num2ASCII(0));
 226   1          else
 227   1          {
 228   2              while (value && len) // translate integer to string
 229   2              {
 230   3                  Osd_DrawChar(xPos+(len--), yPos, (BYTE)Num2ASCII(value%10));
 231   3                  value/=10;
 232   3              }
 233   2          }
 234   1      
 235   1          if (_minus && len>=0)// add sign
 236   1              Osd_DrawChar(xPos+(len--), yPos, (BYTE)'-');
 237   1      
 238   1          _minus=(_minus)?(0):(1);
C51 COMPILER V8.18   MSOSD                                                                 09/29/2009 23:58:03 PAGE 5   

⌨️ 快捷键说明

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