source: svn/newcon3bcm2_21bu/dst/dmw/src/cc/cc_exec_608.c

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 13.7 KB
Line 
1
2#include "cc_config.h"
3#include "cc_type.h"
4#include "cc_def.h"
5#include "cc_private.h"
6
7
8#define MAX_CC_POPON_BUF 1024
9
10static struct {
11        UINT8 mode; //ÇöÀç mode //rollup, popon, painton.text
12       
13        UINT8 prev_d1;
14        UINT8 prev_d2;
15       
16        tDCC_DefWin dfw;
17        tDCC_WinAttr wa;
18        tDCC_PenAttr pa;
19       
20        BOOL bpopon_toggle;
21       
22        BOOL base_row; //base row
23       
24} p_608_exec_attr;
25
26#define ATTR(i) p_608_exec_attr.i
27
28
29// Special Character, Extended Character Map
30static UINT16 p_special_char_table[16]={
31        0x00ae, 0x00b0, 0x00bd, 0x00bf, 0x139, 0x00a2, 0x00a3, 0x007F,
32        0x00e0, 0x0120, 0x00e8, 0x00e2, 0x00ea, 0x00ee, 0x00f4, 0x00fb 
33};
34       
35static UINT16 p_ext_char1_table[32]={
36        0x00c1, 0x00c9, 0x00d3, 0x00da, 0x00dc, 0x00fc, 0x0131, 0x00a1,
37        0x002a, 0x0027, 0x017d/*0x05f*/, 0x00a9, 0x013d, 0x135/*0x003f*/, 0x0133, 0x0134, 
38        0x00c0, 0x00c2, 0x00c7, 0x00c8, 0x00ca, 0x00cb, 0x00eb, 0x00ce,
39        0x00cf, 0x00ef, 0x00d4, 0x00d9, 0x00f9, 0x00db, 0x00ab, 0x00bb 
40};
41       
42static UINT16 p_ext_char2_table[32]={
43        0x00c3, 0x00e3, 0x00cd, 0x00cc, 0x00ec, 0x00d2, 0x00f2, 0x00d5,
44        0x00f5, 0x007b, 0x007d, 0x005c, 0x005e, 0x005f, 0x007c, 0x007e,
45        0x00c4, 0x00e4, 0x00d6, 0x00f6, 0x00df, 0x00a5, 0x00a4, 0x017a/*0x00a6*/,
46        0x00c5, 0x00e5, 0x00d8, 0x00f8, 0x017f, 0x017b, 0x017c, 0x017e
47};     
48
49static void p_init_608_pen()
50{
51        //Ãß°¡ : pen styleÀ» 3À¸·Î º¯°æÇÔ.
52        ATTR(pa).fc=eDCC_C_WHITE;
53        ATTR(pa).fs=eDCC_FS_ANALOG; //analog
54        ATTR(pa).s=eDCC_S_STANDARD;
55}
56
57static void p_init_608_win(UINT8 x, UINT8 y, UINT8 w, UINT8 h, UINT8 ws)
58{
59        ATTR(dfw).id=0;
60        ATTR(dfw).p=0;
61        ATTR(dfw).cl=0;
62        ATTR(dfw).rl=0;
63       
64        ATTR(dfw).v=1;
65        ATTR(dfw).ah=x*99/DCC_608_WIN_WIDTH;
66        ATTR(dfw).av=y*99/DCC_608_WIN_HEIGHT;
67        ATTR(dfw).rp=1;
68       
69        ATTR(dfw).cc=w;
70        ATTR(dfw).rc=h;
71       
72        ATTR(dfw).ws=ws;
73        ATTR(dfw).ps=4;
74}
75
76
77static void p_proc_pac(UINT8 d1, UINT8 d2)
78{
79        BOOL is_first;
80        int start_row, start_col=0; 
81        UINT8 row_table[15]=
82                {0x11, 0x11, 0x12, 0x12, 0x15, 0x15, 0x16, 0x16,
83                        0x17, 0x17, 0x10, 0x13, 0x13, 0x14, 0x14};
84       
85        CCPRINT("pac", "PAC code(0x%x, 0x%x)\n", d1, d2);
86       
87        //if(ATTR(mode)==eDCC_M_TEXT) return;
88                //TEXT ¸ðµå¿¡¼­´Â µ¿ÀÛ ¾ÈÇÔ.
89               
90        d1=d1&(~0x8);
91        is_first=d2&0x20?FALSE:TRUE;
92        d2=(d2&(~0x20))-0x40;
93       
94        for(start_row=0; start_row<15; start_row++) {
95                if(d1==row_table[start_row]) break;
96        }
97       
98        if(!is_first) start_row++;
99               
100        if(start_row>=15) return; //ÀÌ¿Í °°ÀÌ returnµÇ´Â °æ¿ì´Â ¾øÀ» °Í.
101       
102        ATTR(pa).fo=eDCC_O_SOLID;
103       
104        if(d2==0xe) {
105                //white italic
106                ATTR(pa).fc=eDCC_C_WHITE;
107                ATTR(pa).i=1;
108                ATTR(pa).u=0;
109        }
110        else if(d2==0xf) {
111                //white italic underline
112                ATTR(pa).fc=eDCC_C_WHITE;
113                ATTR(pa).i=1;
114                ATTR(pa).u=1;
115               
116        }
117        else if(d2<=0xd) {
118                switch(d2>>1) {
119                        case 0 : ATTR(pa).fc=eDCC_C_WHITE; break;
120                        case 1 : ATTR(pa).fc=eDCC_C_GREEN; break;
121                        case 2 : ATTR(pa).fc=eDCC_C_BLUE; break;
122                        case 3 : ATTR(pa).fc=eDCC_C_CYAN; break;
123                        case 4 : ATTR(pa).fc=eDCC_C_RED; break;
124                        case 5 : ATTR(pa).fc=eDCC_C_YELLOW; break;
125                        case 6 : ATTR(pa).fc=eDCC_C_MAGENTA; break;
126                }
127               
128                ATTR(pa).u=d2&0x1?1:0;
129                ATTR(pa).i=0;
130        }
131        else {
132                ATTR(pa).fc=eDCC_C_WHITE; //default color is white
133               
134                d2-=0x10;
135                switch(d2>>1) {
136                        case 0 : start_col=0; break;
137                        case 1 : start_col=4; break;
138                        case 2 : start_col=8; break;
139                        case 3 : start_col=12; break;
140                        case 4 : start_col=16; break;
141                        case 5 : start_col=20; break;
142                        case 6 : start_col=24; break;
143                        case 7 : start_col=28; break;
144                }
145               
146                ATTR(pa).u=d2&0x1?1:0;
147                ATTR(pa).i=0;
148        }
149       
150        DCCExec_ProcessMsg(eCMD_SPA, 0, (UINT32)&ATTR(pa), 0);
151        DCCExec_ProcessMsg(eCMD_SPC, 0, (UINT32)&ATTR(pa), 0);
152       
153        if(ATTR(mode)>=eDCC_M_ROLLUP2 && ATTR(mode)<=eDCC_M_ROLLUP4) {
154                int num_row=ATTR(mode)-eDCC_M_ROLLUP2+2;
155//              DHL_OS_Printf("base row(%d), num_row(%d), start_row(%d)\n", ATTR(base_row), num_row, start_row);
156#if 0
157                if(start_row<ATTR(base_row)-num_row+1) {
158                        ATTR(base_row)=start_row+num_row-1;
159                       
160                        p_init_608_win(0, ATTR(base_row)-num_row+1, DCC_608_WIN_WIDTH, num_row-1, 5);
161                       
162                        DCCExec_ProcessMsg(eCMD_DFX, 0, (UINT32)&ATTR(dfw), 0);
163                       
164                        DCCExec_ProcessMsg(eCMD_SPL, eDCC_OPT_COL_LOC_MODE,
165                                start_row-((ATTR(base_row))-num_row+1), start_col);
166                }
167                else if(start_row>ATTR(base_row)) {
168                        ATTR(base_row)=start_row;
169                       
170                        p_init_608_win(0, ATTR(base_row)-num_row+1, DCC_608_WIN_WIDTH, num_row-1, 5);
171                       
172                        DCCExec_ProcessMsg(eCMD_DFX, 0, (UINT32)&ATTR(dfw), 0);
173                       
174                        DCCExec_ProcessMsg(eCMD_SPL, eDCC_OPT_COL_LOC_MODE,
175                                start_row-((ATTR(base_row))-num_row+1), start_col);
176                }
177#else
178                if(start_row!=ATTR(base_row)) {
179                        ATTR(base_row)=start_row;
180                       
181                        p_init_608_win(0, ATTR(base_row)-num_row+1, DCC_608_WIN_WIDTH, num_row-1, 5);
182                        DCCExec_ProcessMsg(eCMD_DFX, 0, (UINT32)&ATTR(dfw), 0);
183                }
184#endif
185               
186                DCCExec_ProcessMsg(eCMD_SPL, eDCC_OPT_COL_LOC_MODE, 
187                        start_row-((ATTR(base_row))-num_row+1), start_col);
188               
189                //DCCExec_ProcessMsg(eCMD_SPL, eDCC_OPT_IS608,
190                //      start_row-(DCC_608_WIN_HEIGHT-(ATTR(mode)-eDCC_M_ROLLUP2+2)), start_col);
191        }
192        else {
193                if(ATTR(mode)==eDCC_M_TEXT)
194                        DCCExec_ProcessMsg(eCMD_SPL, eDCC_OPT_ROW_LOC_MODE|eDCC_OPT_COL_LOC_MODE, 0, start_col);
195                else
196                        DCCExec_ProcessMsg(eCMD_SPL, eDCC_OPT_COL_LOC_MODE, start_row, start_col);
197        }
198}
199
200static void p_proc_608_mid_row(UINT8 d1, UINT8 d2)
201{
202        CCPRINT("mid_row", "MID-ROW code(0x%x, 0x%x)\n", d1, d2);
203       
204        d2-=0x20;
205       
206        ATTR(pa).fo=eDCC_O_SOLID;
207       
208        if(d2==0xe) {
209                //white italic
210                //ATTR(pa).fc=eDCC_C_WHITE;
211                ATTR(pa).i=1;
212                ATTR(pa).u=0;
213        }
214        else if(d2==0xf) {
215                //white italic underline
216                //ATTR(pa).fc=eDCC_C_WHITE;
217                ATTR(pa).i=1;
218                ATTR(pa).u=1;
219               
220        }
221        else {
222                switch(d2>>1) {
223                        case 0 : ATTR(pa).fc=eDCC_C_WHITE; break;
224                        case 1 : ATTR(pa).fc=eDCC_C_GREEN; break;
225                        case 2 : ATTR(pa).fc=eDCC_C_BLUE; break;
226                        case 3 : ATTR(pa).fc=eDCC_C_CYAN; break;
227                        case 4 : ATTR(pa).fc=eDCC_C_RED; break;
228                        case 5 : ATTR(pa).fc=eDCC_C_YELLOW; break;
229                        case 6 : ATTR(pa).fc=eDCC_C_MAGENTA; break;
230                }
231               
232                ATTR(pa).u=d2&0x1?1:0;
233                ATTR(pa).i=0;
234        }
235       
236        DCCExec_ProcessMsg(eCMD_SPA, 0, (UINT32)&ATTR(pa), 0);
237        DCCExec_ProcessMsg(eCMD_SPC, 0, (UINT32)&ATTR(pa), 0);
238        DCCExec_ProcessMsg(eCMD_GX, eDCC_OPT_IS608, 0x20, 0); //space Ãß°¡
239}
240
241static void p_proc_international_code(UINT8 d1, UINT8 d2)
242{
243        UINT16 code;
244       
245        CCPRINT("intl_code", "INTERNATIONAL code(0x%x, 0x%x)\n", d1, d2);
246       
247        d2-=0x20;
248       
249        //back space
250        DCCExec_ProcessMsg(eCMD_C0, eDCC_OPT_IS608, eDCC_C0_BS, 0);
251       
252        if(d1==0x12 || d1==0x1a) {
253                code=p_ext_char1_table[d2];
254        }
255        else { //0x13, 0x1b
256                code=p_ext_char2_table[d2];
257        }
258       
259        DCCExec_ProcessMsg(eCMD_GX, eDCC_OPT_IS608, code, 0);
260}
261
262static void p_proc_special_char(UINT8 d1, UINT8 d2)
263{
264        CCPRINT("spc_ch", "SPECIAL CHAR code(0x%x, 0x%x)\n", d1, d2);
265        DCCExec_ProcessMsg(eCMD_GX, eDCC_OPT_IS608, p_special_char_table[d2-0x30], 0);
266}
267
268
269
270static void p_proc_ctrl_code(UINT8 d1, UINT8 d2)
271{
272        CCPRINT("ctrl_code", "CONTROL code(0x%x, 0x%x)\n", d1, d2);
273       
274        if(d1==0x17 || d1==0x1f) {
275               
276                //if(ATTR(mode)==eDCC_M_TEXT) return;
277               
278                DCCExec_ProcessMsg(eCMD_SPL, eDCC_OPT_ROW_LOC_MODE|eDCC_OPT_COL_LOC_MODE, 0, d2-eDCC_C_TO1+1);
279                return;
280        }       
281       
282        switch(d2) {
283                               
284                case eDCC_C_RU2 :
285                        if(ATTR(mode)==eDCC_M_ROLLUP2 && ((tDCC_DefWin *)(DCCWin_GetWin(ATTR(dfw).id)))->bcreated) break;
286                               
287                        if(ATTR(mode)!=eDCC_M_ROLLUP3 && ATTR(mode)!=eDCC_M_ROLLUP4)
288                                DCCExec_ProcessMsg(eCMD_CLW, 0, 0x1, 0);
289                       
290                        p_init_608_win(0, DCC_608_WIN_HEIGHT-1, DCC_608_WIN_WIDTH, 1, 5); //14,15
291                               
292                        DCCExec_ProcessMsg(eCMD_DFX, 0, (UINT32)&ATTR(dfw), 0);
293                        DCCExec_ProcessMsg(eCMD_SPL, 0, 1, 0);
294                       
295                        ATTR(mode)=eDCC_M_ROLLUP2;
296                        ATTR(base_row)=14;
297                       
298                        break;
299               
300                case eDCC_C_RU3 :
301                        if(ATTR(mode)==eDCC_M_ROLLUP3 && ((tDCC_DefWin *)(DCCWin_GetWin(ATTR(dfw).id)))->bcreated) break;
302                       
303                        if(ATTR(mode)!=eDCC_M_ROLLUP2 && ATTR(mode)!=eDCC_M_ROLLUP4)
304                                DCCExec_ProcessMsg(eCMD_CLW, 0, 0x1, 0);
305                       
306                        p_init_608_win(0, DCC_608_WIN_HEIGHT-2, DCC_608_WIN_WIDTH, 2, 5);
307
308                        DCCExec_ProcessMsg(eCMD_DFX, 0, (UINT32)&ATTR(dfw), 0);
309                        DCCExec_ProcessMsg(eCMD_SPL, 0, 2, 0);
310                       
311                        ATTR(mode)=eDCC_M_ROLLUP3;
312                        ATTR(base_row)=14;
313                        break;
314                       
315                case eDCC_C_RU4 :
316                        if(ATTR(mode)==eDCC_M_ROLLUP4 && ((tDCC_DefWin *)(DCCWin_GetWin(ATTR(dfw).id)))->bcreated) break;
317               
318                        if(ATTR(mode)!=eDCC_M_ROLLUP2 && ATTR(mode)!=eDCC_M_ROLLUP3)
319                                DCCExec_ProcessMsg(eCMD_CLW, 0, 0x1, 0);
320               
321                        p_init_608_win(0, DCC_608_WIN_HEIGHT-3, DCC_608_WIN_WIDTH, 3, 5);
322                        DCCExec_ProcessMsg(eCMD_DFX, 0, (UINT32)&ATTR(dfw), 0);
323                        DCCExec_ProcessMsg(eCMD_SPL, 0, 3, 0);
324                       
325                        ATTR(mode)=eDCC_M_ROLLUP4;
326                        ATTR(base_row)=14;
327                        break;
328                       
329                case eDCC_C_RCL :
330                        //RCL ÀÌÈÄ¿¡ ¿À´Â text´Â ÀúÀåÇØ³õ¾Ò´Ù°¡ EOC°¡ ¿À¸é flushingÇÔ.
331                        //if(ATTR(mode)==eDCC_M_POPON) break;--> RCLÀº ¹ÞÀ» ¶§¸¶´Ù ó¸®ÇÔ.
332                       
333                        ATTR(mode)=eDCC_M_POPON;
334                       
335                        //Àüü¸¦ Áö¿ö¾ß ÇÔ.
336                        // ¾Æ·¡ÁÙÀÇ Äڵ带 ¸·Áö ¾ÊÀ¸¸é AT27 ½ºÆ®¸²¿¡¼­ µÎ ÁÙÀÌ ³ª¿Í¾ß ÇÏ´Â ±¸°£¿¡¼­ ÇÑ ÁÙ¸¸ ³ª¿Â´Ù.
337                        //DCCExec_ProcessMsg(eCMD_CLW, 0, 0x1, 0); // remove for AT27 stream. 2012.12.15 megakiss
338                        p_init_608_win(0, 0, DCC_608_WIN_WIDTH, DCC_608_WIN_HEIGHT, 2);
339                        //ATTR(dfw).v=0; //visibleµÇÁö ¾Ê°Ô ÇÔ.-->v°¡ µÇ¾î¾ß ÇÔ.
340                       
341                        DCCExec_ProcessMsg(eCMD_DFX, eDCC_OPT_IS608, (UINT32)&ATTR(dfw), 0);
342                        DCCExec_ProcessMsg(eCMD_SPL, 0, 0, 0);
343                       
344                        ATTR(bpopon_toggle)=TRUE;
345                       
346                        break;
347               
348                case eDCC_C_EOC :
349                       
350                        if(ATTR(mode)!=eDCC_M_POPON) break;
351                       
352                        if(ATTR(bpopon_toggle))
353                                DCCExec_ProcessMsg(eCMD_DSW, 0, 0x1, 0);
354                        else {
355                                DCCExec_ProcessMsg(eCMD_HDW, 0, 0x1, 0);
356                                DCCExec_ProcessMsg(eCMD_SPL, 0, 0, 0);
357                        }
358                       
359                        ATTR(bpopon_toggle)=ATTR(bpopon_toggle)?FALSE:TRUE;
360                       
361                        break;
362               
363                case eDCC_C_RDC :
364                        ATTR(mode)=eDCC_M_PAINTON;
365                       
366                        p_init_608_win(0, 0, DCC_608_WIN_WIDTH, DCC_608_WIN_HEIGHT, 2);
367                        DCCExec_ProcessMsg(eCMD_DFX, eDCC_OPT_IS608, (UINT32)&ATTR(dfw), 0);
368                        DCCExec_ProcessMsg(eCMD_SPL, eDCC_OPT_IS608, 0, 0);
369                        break;
370                       
371                case eDCC_C_TR :
372                       
373                        //if(ATTR(mode)==eDCC_M_TEXT) break;
374                       
375                        DCCExec_ProcessMsg(eCMD_CLW, 0, 0x1, 0);
376                       
377                        p_init_608_win(0, DCC_608_TEXT_START_ROW, 
378                                DCC_608_WIN_WIDTH-1, DCC_608_WIN_HEIGHT-DCC_608_TEXT_START_ROW, 1);
379                        DCCExec_ProcessMsg(eCMD_DFX, 0, (UINT32)&ATTR(dfw), 0);
380                        DCCExec_ProcessMsg(eCMD_SPL, 0, 0, 0);
381                       
382                        ATTR(mode)=eDCC_M_TEXT;
383                       
384                        break;
385                       
386                case eDCC_C_RTD :
387                       
388                        p_init_608_win(0, DCC_608_TEXT_START_ROW,
389                                DCC_608_WIN_WIDTH-1, DCC_608_WIN_HEIGHT-DCC_608_TEXT_START_ROW, 1);
390                        DCCExec_ProcessMsg(eCMD_DFX, 0, (UINT32)&ATTR(dfw), 0);
391                       
392                        ATTR(mode)=eDCC_M_TEXT;
393                       
394                        break;
395               
396                case eDCC_C_ENM : //non-displayed
397                       
398                        if(ATTR(mode)!=eDCC_M_POPON) break;
399                       
400                        DCCExec_ProcessMsg(eCMD_DLW, eDCC_OPT_IS608, 0x1, 0);
401                       
402                        break;
403                       
404                case eDCC_C_EDM : //displayed
405                       
406                        if(ATTR(mode)!=eDCC_M_TEXT)
407                                DCCExec_ProcessMsg(eCMD_CLW, eDCC_OPT_IS608, 0x1, 0);
408                       
409                        break;
410               
411                case eDCC_C_AOF : //flashing
412                        //TODO :
413                        break;
414                       
415                case eDCC_C_AON :
416                        //TODO :
417                        break;
418                       
419                case eDCC_C_FON :
420                        ATTR(pa).fo=eDCC_O_FLASH;
421                        DCCExec_ProcessMsg(eCMD_SPC, 0, (UINT32)&ATTR(pa), 0);
422                        break;
423               
424                case eDCC_C_BS :
425                        DCCExec_ProcessMsg(eCMD_C0, eDCC_OPT_IS608, eDCC_C0_BS, 0);
426                        break;
427                       
428                case eDCC_C_CR :
429                        DCCExec_ProcessMsg(eCMD_C0, 0, eDCC_C0_CR, 0);
430                        break;
431                       
432                case eDCC_C_DER :
433                        //708¿¡ Àû´çÇÑ command°¡ ¾øÀ½. command¸¦ ÀÓÀÇ·Î ¸¸µå´Â °ÍÀÌ ÁÁÀ»µí.
434                        DCCExec_ProcessMsg(eCMD_C0, eDCC_OPT_IS608, eDCC_C0_HCR, 0);
435                        break;
436               
437        }
438       
439}
440
441static UINT16 p_iso8859_to_eia608_char(char ch)
442{
443        UINT16 uc;
444        switch(ch)
445        {
446                case 0x2a: uc=0xe1; break;
447                case 0x5c: uc=0xe9; break;
448                case 0x5e: uc=0xed; break;
449                case 0x5f: uc=0xf3; break;
450                case 0x60: uc=0xfa; break;
451                case 0x7b: uc=0xe7; break;
452                case 0x7c: uc=0xf7; break;
453                case 0x7d: uc=0xd1; break;
454                case 0x7e: uc=0xf1; break;
455                case 0x7f: uc=0x130; break;
456                default:   uc=(UINT32)ch;
457        }
458        return uc;
459}
460
461static void p_proc_608_text(UINT8 d1, UINT8 d2)
462{
463        d1=p_iso8859_to_eia608_char(d1);
464        d2=p_iso8859_to_eia608_char(d2);
465       
466        CCPRINT("608text", "TEXT code(0x%x-%c, 0x%x-%c)\n", d1, d1, d2, d2);
467       
468        if(d1!=0x0) DCCExec_ProcessMsg(eCMD_GX, eDCC_OPT_IS608, d1, 0);
469        if(d2!=0x0) DCCExec_ProcessMsg(eCMD_GX, eDCC_OPT_IS608, d2, 0);
470}
471
472
473void DCCExec_Process608(UINT8 d1, UINT8 d2)
474{
475        if(d1<0x20) {
476                if(d1==ATTR(prev_d1) && d2==ATTR(prev_d2)) {
477                        ATTR(prev_d1)=0;
478                        return;
479                }
480                ATTR(prev_d1)=d1;
481                ATTR(prev_d2)=d2;
482        }
483        else {
484                ATTR(prev_d1)=0;
485        }
486       
487        switch(d1) {
488                case 0x14:
489                case 0x15:
490                case 0x1c:
491                case 0x1d:
492                        if(d2>=0x20 && d2<0x30) p_proc_ctrl_code(d1, d2);
493                        else if(d2>=0x40 && d2<0x80) p_proc_pac(d1, d2);
494                        break;
495               
496                case 0x10:
497                case 0x18:
498                        if(d1==0x10 && (d2>=0x40 && d2<0x60)) p_proc_pac(d1, d2);
499                        //TODO : background color
500                        break;
501               
502                case 0x11:
503                case 0x19:
504                        if(d2>=0x20 && d2<0x30) p_proc_608_mid_row(d1, d2);
505                        else if(d2>=0x30 && d2<0x40) p_proc_special_char(d1, d2);
506                        else if(d2>=0x40 && d2<0x80) p_proc_pac(d1, d2);
507                        break;
508               
509                case 0x12:
510                case 0x1a:
511                        if(d2>=0x20 && d2<0x40) p_proc_international_code(d1, d2);
512                        else if(d2>=0x40 && d2<0x80) p_proc_pac(d1, d2);
513                        break;
514                       
515                case 0x13:
516                case 0x1b:
517                        if(d2>=0x20 && d2<0x40) p_proc_international_code(d1, d2);
518                        else if(d2>=0x40 && d2<0x80) p_proc_pac(d1, d2);
519                        break;
520                       
521                case 0x17:
522                case 0x1f:
523                        if(d2>=eDCC_C_TO1 && d2<=eDCC_C_TO3) p_proc_ctrl_code(d1, d2);
524                        break;
525               
526                default :
527                        if((d1>=0x10 && d1<0x20) && (d2>=0x40 && d2<0x80)) 
528                                p_proc_pac(d1, d2);
529                        else if(d1>=0x20)       
530                                p_proc_608_text(d1, d2);
531        }
532}
533
534
535void DCCExec_Reset608Attr()
536{
537        ATTR(mode)=eDCC_M_NONE;
538        ATTR(bpopon_toggle)=FALSE;
539        ATTR(prev_d1)=0;
540        ATTR(prev_d2)=0;
541       
542        p_init_608_pen();
543        DCCExec_ProcessMsg(eCMD_SPA, 0, (UINT32)&ATTR(pa), 0);
544        DCCExec_ProcessMsg(eCMD_SPC, 0, (UINT32)&ATTR(pa), 0);
545}
Note: See TracBrowser for help on using the repository browser.