?? msosd.lst
字號:
C51 COMPILER V8.01 MSOSD 11/28/2006 08:08:09 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE MSOSD
OBJECT MODULE PLACED IN ..\..\1out\msOSD.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\msFunc\msOSD.c BROWSE INCDIR(..\..\inc;..\..\mslib;..\..\Device;..\..
-\kernal;..\..\msFunc;..\..\pc;..\..\tv) 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"
*** WARNING C322 IN LINE 93 OF ..\..\INC\MSTAR.H: unknown identifier
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
C51 COMPILER V8.01 MSOSD 11/28/2006 08:08:09 PAGE 2
54 1 msWriteByte(BK0_A0_OSDIOA, 0x9E);
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);
*** ERROR C202 IN LINE 100 OF ..\..\MSFUNC\MSOSD.C: 'PanelWidth': undefined identifier
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;
*** ERROR C202 IN LINE 110 OF ..\..\MSFUNC\MSOSD.C: 'PanelHeight': undefined identifier
111 1 #endif
C51 COMPILER V8.01 MSOSD 11/28/2006 08:08:09 PAGE 3
112 1
113 1 //posValue=posValue/4;;
114 1 msWriteOSDByte(OSD_04_OVSTA_L, posValue&0xFF);
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)
C51 COMPILER V8.01 MSOSD 11/28/2006 08:08:09 PAGE 4
174 {
175 1 WORD tempValue;
176 1 BYTE drawCode=TRUE;
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;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -