2440lcd.c
上传用户:zbk8730
上传日期:2017-08-10
资源大小:12168k
文件大小:48k
源码类别:

uCOS

开发平台:

C/C++

  1. //====================================================================
  2. // File Name : LCD.c
  3. // Function  : S3C2440 LCD test code
  4. // Program   : 
  5. // Date      : Apr. 21, 2003
  6. // Version   : 0.0
  7. // History
  8. // -2410
  9. //   0.0 : Programming start  ???
  10. // -2440
  11. //   R0.0 (20030421): Modified for 2440. -> Junon
  12. //====================================================================
  13. #include <string.h>
  14. #include "def.h"
  15. #include "2440addr.h"
  16. #include "2440lib.h"
  17. #include "2440slib.h"
  18. #include "lcdlib.h"
  19. #include "glib.h"
  20. #include "2440lcd.h"
  21. #include "DEMO256.h"
  22. void Lcd_Port_Init(void);
  23. void Lcd_Port_Return(void);
  24. void Lcd_Palette1Bit_Init(void);
  25. void Lcd_Palette8Bit_Init(void);
  26. void __irq Lcd_Int_Frame(void);
  27. void __irq Lcd_Int_Fifo(void);
  28. void __irq Lcd_Int_Fifo_640480(void);
  29. void Select_Tcon(void);
  30. void Test_Lcd_Palette_Ram(void);
  31. void Test_Lcd_Underrun(void);
  32. void Test_Lcd_Tft_16Bit_800600(void);
  33. void Test_Lcd_Tft_16Bit_800600_On(void);
  34. unsigned save_rGPCUP,save_rGPCDAT,save_rGPCCON;
  35. unsigned save_rGPDUP,save_rGPDDAT,save_rGPDCON; 
  36. unsigned lcd_count;
  37. void * func_lcd_test[][2]=
  38. {
  39. //     "0123456789012345" max 15磊 肺茄沥窍咯 comment窍技夸.
  40. //LCD 
  41. (void *)Test_Lcd_Palette_Ram,  "LCD Palette RAM",
  42. (void *)Test_Lcd_Stn_1Bit, "STN 1Bit       ",
  43. (void *)Test_Lcd_Stn_2Bit, "STN 2Bit       ",
  44. (void *)Test_Lcd_Stn_4Bit, "STN 4Bit       ",   
  45. (void *)Test_Lcd_Cstn_8Bit,  "CSTN 8Bit      ",
  46. (void *)Test_Lcd_Cstn_8Bit_On, "CSTN 8Bit On   ",   
  47. (void *)Test_Lcd_Cstn_12Bit, "CSTN 12Bit     ",
  48. (void *)Test_Lcd_Cstn_16Bit, "CSTN 16Bit     ",
  49. (void *)Test_Lcd_Tft_8Bit_240320,  "TFT240320 8Bit ",
  50. (void *)Test_Lcd_Tft_8Bit_240320_On, "TFT240320 8 On ",   
  51. (void *)Test_Lcd_Tft_16Bit_240320, "TFT240320 16Bit",
  52. (void *)Test_Lcd_Tft_8Bit_240320_Bmp,  "TFT240320 Bmp  ",
  53. (void *)Test_Lcd_Tft_8Bit_240320_IntFr, "TFT240320 FrINT",
  54. (void *)Test_Lcd_Tft_8Bit_240320_IntFi, "TFT240320 FiINT",
  55. (void *)Test_Lcd_Tft_1Bit_640480,  "TFT640480 1Bit ",
  56. (void *)Test_Lcd_Tft_8Bit_640480,  "TFT640480 8Bit ",
  57. (void *)Test_Lcd_Tft_16Bit_640480, "TFT640480 16Bit",
  58. (void *)Test_Lcd_Tft_8Bit_640480_Bswp, "TFT640480 BSWP ",
  59. (void *)Test_Lcd_Tft_8Bit_640480_Palette, "TFT640480 Palet",  
  60. (void *)Test_Lcd_Tft_16Bit_640480_Hwswp,"TFT640480 HWSWP",
  61. (void *)Test_Lcd_Tft_1Bit_800600,  "TFT800600 1Bit ",
  62. (void *)Test_Lcd_Tft_8Bit_800600,  "TFT800600 8Bit ",
  63. (void *)Test_Lcd_Tft_16Bit_800600,  "TFT800600 16Bit",
  64. (void *)Test_Lcd_Underrun, "LCD Underrun   ",
  65. 0,0
  66. };
  67. void Lcd_Test(void)
  68. {
  69. int i;
  70. Uart_Printf("n======  LCD Test program start ======n");
  71. while(1)
  72. {
  73. i=0;
  74. Uart_Printf("nn");
  75. while(1)
  76. {   //display menu
  77. Uart_Printf("%2d:%s",i,func_lcd_test[i][1]);
  78. i++;
  79. if((int)(func_lcd_test[i][0])==0)
  80. {
  81. Uart_Printf("n");
  82. break;
  83. }
  84. if((i%4)==0)
  85. Uart_Printf("n");
  86. }
  87. Uart_Printf("nPress only Enter key to exit : ");
  88. i = Uart_GetIntNum();
  89. if(i==-1) break; // return.
  90. if(i>=0 && (i<((sizeof(func_lcd_test)-1)/8)) ) // select and execute...
  91. ( (void (*)(void)) (func_lcd_test[i][0]) )();
  92. }
  93. Uart_Printf("n====== LCD Test program end ======n");
  94. }
  95. void Lcd_Port_Init(void)
  96. {
  97.     save_rGPCCON=rGPCCON;
  98.     save_rGPCDAT=rGPCDAT;
  99.     save_rGPCUP=rGPCUP;
  100.     save_rGPDCON=rGPDCON;
  101.     save_rGPDDAT=rGPDDAT;
  102.     save_rGPDUP=rGPDUP;
  103.     rGPCUP=0xffffffff; // Disable Pull-up register
  104.     rGPCCON=0xaaaaaaaa; //Initialize VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND 
  105.     rGPDUP=0xffffffff; // Disable Pull-up register
  106.     rGPDCON=0xaaaaaaaa; //Initialize VD[23:8]
  107.     Uart_Printf("Initializing GPIO ports..........n");
  108. }
  109. void Lcd_Port_Return(void)
  110. {
  111.     rGPCCON=save_rGPCCON;
  112.     rGPCDAT=save_rGPCDAT;
  113.     rGPCUP=save_rGPCUP;
  114.     rGPDCON=save_rGPDCON;
  115.     rGPDDAT=save_rGPDDAT;
  116.     rGPDUP=save_rGPDUP;
  117. }
  118. void Lcd_Palette1Bit_Init(void)
  119. {
  120.     U32 *palette;
  121.     palette=(U32 *)PALETTE;
  122.     *palette++=0x0; // Black
  123.     *palette=0xffff; // White
  124. }
  125. void Lcd_Palette8Bit_Init(void)
  126. {
  127.     int i;
  128.     U32 *palette;
  129. palette=(U32 *)PALETTE;
  130. if (rLCDCON5&(1<<11)) // if 5:6:5 format
  131. for(i=0;i<256;i++) *palette++=DEMO256pal[i];
  132. else // if 5:5:5:1 format
  133. for(i=0;i<256;i++) *palette++=(DEMO256pal[i]&0xffc1)|((DEMO256pal[i]&0x1f)<<1);
  134. }
  135. void Lcd_Start(U32 mode)
  136. {
  137. // LCD initialize
  138. Lcd_Port_Init();
  139. Lcd_Init(mode);
  140. Glib_Init(mode);
  141. Select_Tcon();
  142. Lcd_PowerEnable(0, 1);
  143. Lcd_EnvidOnOff(1);
  144. Glib_ClearScr(0, mode);
  145. }
  146. //Just interrupt test..
  147. void __irq Lcd_Int_Frame(void)
  148. {
  149.     rLCDINTMSK|=3; // Mask LCD SUB Interrupt
  150.     // GPG4 is LCD_PWREN 
  151.     rGPGDAT&=(~(1<<4)); // GPG4=Low
  152.     Delay(50); // 5ms
  153.     rGPGDAT|=(1<<4); //GPG4=High
  154.     rLCDSRCPND=2; // Clear LCD SUB Interrupt source pending
  155.     rLCDINTPND=2; // Clear LCD SUB Interrupt pending
  156.     rLCDINTMSK&=(~(2)); // Unmask LCD FRAME Interrupt
  157.     ClearPending(BIT_LCD);
  158. }
  159. void __irq Lcd_Int_Fifo(void)
  160. {
  161.     rLCDINTMSK|=3; // Mask LCD SUB Interrupt
  162.     if((lcd_count%20)==0) Uart_Printf("n");
  163.     Uart_Printf(".");
  164.     lcd_count++;
  165.     rLCDSRCPND=1; // Clear LCD SUB Interrupt source pending
  166.     rLCDINTPND=1; // Clear LCD SUB Interrupt pending
  167.     rLCDINTMSK&=(~(1)); // Unmask LCD FRAME Interrupt
  168.     ClearPending(BIT_LCD);
  169. }
  170. void Test_Lcd_Stn_1Bit(void)
  171. {
  172.     int i,j;
  173.     Lcd_Port_Init();
  174.     Lcd_Init(MODE_STN_1BIT);
  175.     Glib_Init(MODE_STN_1BIT);
  176.     Lcd_EnvidOnOff(1); // Enable ENVID Bit
  177.     Uart_Printf("[STN Mono(1bit/1pixel) LCD Test]n");              
  178.     Glib_ClearScr(0, MODE_STN_1BIT);
  179.     for(j=0;j<LCD_YSIZE_STN;j+=16)
  180. for(i=0;i<LCD_XSIZE_STN;i+=16)
  181.     Glib_FilledRectangle(i,j,i+15,j+15,((j+i)/16)%2);
  182.     Uart_Printf("STN Mono test 1. Press any key!n");
  183.     Uart_Getch();  
  184.     Glib_ClearScr(0, MODE_STN_1BIT);
  185.     Glib_FilledRectangle(160,0,319,239,1);    //Half Screen
  186.     Uart_Printf("STN Mono test 2. Press any key!n");
  187.     Uart_Getch();  
  188.     Glib_ClearScr(0, MODE_STN_1BIT); 
  189.     Glib_Rectangle(0,0,319,239,1);   // #0
  190.     Glib_Line(0,0,319,239,1);        // 00
  191.     Glib_Line(0,239,319,0,1);
  192.     Glib_Rectangle(0+320,0,319+320,239,1);   // 0#
  193.     Glib_Line(0+320,0,319+320,239,1);        // 00
  194.     Glib_Line(0+320,239,319+320,0,1);
  195.     Glib_FilledRectangle(50+320,50,269+320,189,1);
  196.     Glib_Rectangle(0,0+240,319,239+240,1);   // 00
  197.     Glib_Line(0,0+240,319,239+240,1);        // #0
  198.     Glib_Line(0,239+240,319,0+240,1);
  199.     Glib_FilledRectangle(50,50+240,269,189+240,1);
  200.     
  201.     Glib_Rectangle(0+320,0+240,319+320,239+240,1);   // 00
  202.     Glib_Line(0+320,0+240,319+320,239+240,1);        // 0#
  203.     Glib_Line(0+320,239+240,319+320,0+240,1);
  204.     Glib_Rectangle(50+320,50+240,269+320,189+240,1);
  205.     Uart_Printf("Virtual Screen Test(STN Mono). Press any key[ijkm\r]!n");
  206.     MoveViewPort(MODE_STN_1BIT);
  207.     Lcd_MoveViewPort(0,0,MODE_STN_1BIT);
  208.     Lcd_EnvidOnOff(0); // Disable ENVID Bit
  209.     Lcd_Port_Return();
  210. }
  211. void Test_Lcd_Stn_2Bit(void)
  212. {
  213.     int i,j,k;
  214.     Lcd_Port_Init();
  215.     Lcd_Init(MODE_STN_2BIT);
  216.     Glib_Init(MODE_STN_2BIT);
  217.     Lcd_EnvidOnOff(1); // Enable ENVID Bit
  218.     Uart_Printf("[STN 4 gray(2bit/1pixel) LCD Test]n");
  219.     Glib_ClearScr(0, MODE_STN_2BIT);
  220.     j=0;
  221.     for(i=0;i<320;i+=80)
  222.         Glib_FilledRectangle(0+i,0,79+i,239,j++);
  223.     Uart_Printf("4 gray mode test 1. Press any key!n");
  224.     Uart_Getch();  
  225.     Glib_ClearScr(0, MODE_STN_2BIT);
  226.     j=0;
  227.     for(i=0;i<320;i+=80)
  228.     {
  229.      Glib_FilledRectangle(0+i,0,79+i,119,j);
  230.      Glib_FilledRectangle(0+i,120,79+i,239,3-j);
  231.      j++;
  232.     }
  233.     Uart_Printf("4 gray mode test 2. Press any key!n");
  234.     Uart_Getch();  
  235.     Glib_ClearScr(0, MODE_STN_2BIT);
  236.     j=0;
  237.     for(i=0;i<240;i+=60)
  238.     {
  239.      Glib_FilledRectangle(i,i,i+59,i+59,j);
  240.      j++;
  241.     }
  242.     Uart_Printf("4 gray mode test 3. Press any key!n");
  243.     Uart_Getch();  
  244.     Glib_ClearScr(0, MODE_STN_2BIT);
  245.     k=0;
  246.     for(i=160;i<480;i+=80)
  247.     {
  248.      for(j=120;j<360;j+=60)
  249.      {
  250.          Glib_FilledRectangle(i,j,i+79,j+59,k%4);
  251.          k++;
  252.      }
  253.      k+=2;;
  254.     }
  255.     // #0
  256.     // 00
  257.     Glib_Rectangle(0,0,319,239,3);   
  258.     Glib_Line(0,0,319,239,3);        
  259.     Glib_Line(0,239,319,0,3);
  260.     // 0#
  261.     // 00
  262.     Glib_Rectangle(0+320,0,319+320,239,3);          
  263.     Glib_Line(0+320,0,319+320,239,3);        
  264.     Glib_Line(0+320,239,319+320,0,3);
  265.     // 00
  266.     // #0
  267.     Glib_Rectangle(0,0+240,319,239+240,3);          
  268.     Glib_Line(0,0+240,319,239+240,3);        
  269.     Glib_Line(0,239+240,319,0+240,3);
  270.     // 00
  271.     // 0#
  272.     Glib_Line(0+320,0+240,319+320,239+240,3);        
  273.     Glib_Line(0+320,239+240,319+320,0+240,3);
  274.     Glib_Rectangle(50+320,50+240,269+320,189+240,3);
  275.     Uart_Printf("Virtual Screen Test(STN 4 gray). Press any key[ijkm\r]!n");
  276.     MoveViewPort(MODE_STN_2BIT);
  277.     Lcd_MoveViewPort(0,0,MODE_STN_2BIT);
  278.     Lcd_EnvidOnOff(0); // Disable ENVID Bit
  279.     Lcd_Port_Return();
  280. }
  281. void Test_Lcd_Stn_4Bit(void)
  282. {
  283.     int i,j,k;
  284.     Lcd_Port_Init();
  285.     Lcd_Init(MODE_STN_4BIT);
  286.     Glib_Init(MODE_STN_4BIT);
  287.     Lcd_EnvidOnOff(1);
  288.     Uart_Printf("[STN 16 gray(4bit/1pixel) LCD Test]n");
  289.     Glib_ClearScr(0, MODE_STN_4BIT);
  290.     j=0;
  291.     for(i=0;i<320;i+=20)
  292.         Glib_FilledRectangle(0+i,0,19+i,239,j++);
  293.     Uart_Printf("16 gray mode test 1. Press any key!n");
  294.     Uart_Getch();  
  295.     Glib_ClearScr(0, MODE_STN_4BIT);
  296.     j=0;
  297.     for(i=0;i<320;i+=20)
  298.     {
  299.      Glib_FilledRectangle(0+i,0,19+i,119,j);
  300.      Glib_FilledRectangle(0+i,120,19+i,239,15-j);
  301.      j++;
  302.     }
  303.     Uart_Printf("16 gray mode test 2. Press any key!n");
  304.     Uart_Getch();  
  305.     Glib_ClearScr(0, MODE_STN_4BIT);
  306.     j=0;
  307.     for(i=0;i<240;i+=30)
  308.     {
  309.      Glib_FilledRectangle(i,i,i+29,i+29,j);
  310.      Glib_FilledRectangle(i+110,i,i+29+110,i+29,j+8);
  311.      j++;
  312.     }
  313.     Uart_Printf("4 gray mode test 3. Press any key!n");
  314.     Uart_Getch();    
  315.     Glib_ClearScr(0, MODE_STN_4BIT);
  316.     k=0;
  317.     for(i=160;i<480;i+=40)
  318.      for(j=120;j<360;j+=30)
  319.      {
  320.          Glib_FilledRectangle(i,j,i+39,j+29,k%16);
  321.          k++;
  322.      }
  323.          
  324.     // #0     
  325.     // 00     
  326.     Glib_Rectangle(0,0,319,239,15);   
  327.     Glib_Line(0,0,319,239,15);        
  328.     Glib_Line(0,239,319,0,15);
  329.     // 0#
  330.     // 00
  331.     Glib_Rectangle(0+320,0,319+320,239,15);
  332.     Glib_Line(0+320,0,319+320,239,15);        
  333.     Glib_Line(0+320,239,319+320,0,15);
  334.     // 00
  335.     // #0
  336.     Glib_Rectangle(0,0+240,319,239+240,15);
  337.     Glib_Line(0,0+240,319,239+240,15);        
  338.     Glib_Line(0,239+240,319,0+240,15);
  339.     // 00
  340.     // 0#
  341.     Glib_Rectangle(0+320,0+240,319+320,239+240,15);
  342.     Glib_Line(0+320,0+240,319+320,239+240,15);     
  343.     Glib_Line(0+320,239+240,319+320,0+240,15);
  344.     Glib_Rectangle(50+320,50+240,269+320,189+240,15);
  345.     Uart_Printf("Virtual Screen Test(STN 16 gray). Press any key[ijkm\r]!n");
  346.     MoveViewPort(MODE_STN_4BIT);
  347.     Lcd_MoveViewPort(0,0,MODE_STN_4BIT);
  348.     Lcd_EnvidOnOff(0);
  349.     Lcd_Port_Return();
  350. }
  351. void Test_Lcd_Cstn_8Bit(void)
  352. {
  353.     int i,j,k;
  354.     Lcd_Port_Init();
  355.     Lcd_Init(MODE_CSTN_8BIT);
  356.     Glib_Init(MODE_CSTN_8BIT);
  357.     Lcd_CstnOnOff(1); // Enable ENVID Bit and GPB5 output
  358.     Uart_Printf("[CSTN 256 COLOR(8bit/1pixel) LCD TEST]n");
  359.     Uart_Printf("     R:0   ...    7 n");
  360.     Uart_Printf("G:0  B0:1 B0:1 B0:1 n");
  361.     Uart_Printf("G:.   2:3  2:3  2:3 n");
  362.     Uart_Printf("G:.  B0:1 B0:1 B0:1 n");
  363.     Uart_Printf("G:.   2:3  2:3  2:3 n");
  364.     Uart_Printf("G:.  B0:1 B0:1 B0:1 n");
  365.     Uart_Printf("G:7   2:3  2:3  2:3 n");
  366.     
  367.     Glib_ClearScr(0, MODE_CSTN_8BIT);
  368.     for(j=0;j<240;j++)
  369. for(i=0;i<320;i++) //RRRGGGBB
  370.     PutPixel(i,j,((i/40)<<5)+((j/30)<<2)+(((j/15)%2)<<1)+((i/20)%2));
  371.     Uart_Printf("CSTN 256 color mode test 1. Press any key!n");
  372.     Uart_Getch();  
  373.   
  374.     Glib_ClearScr(0, MODE_CSTN_8BIT);
  375.     k=0;
  376.     for(i=160;i<480;i+=20)
  377.      for(j=120;j<360;j+=15)
  378.      {
  379.          Glib_FilledRectangle(i,j,i+19,j+14,k);
  380.          k++;
  381.      }
  382.     // #0     
  383.     // 00     
  384.     Glib_Rectangle(0,0,319,239,255);   
  385.     Glib_Line(0,0,319,239,255);        
  386.     Glib_Line(0,239,319,0,255);
  387.     // 0#
  388.     // 00
  389.     Glib_Rectangle(0+320,0,319+320,239,255);
  390.     Glib_Line(0+320,0,319+320,239,255);        
  391.     Glib_Line(0+320,239,319+320,0,255);
  392.     // 00
  393.     // #0
  394.     Glib_Rectangle(0,0+240,319,239+240,255);
  395.     Glib_Line(0,0+240,319,239+240,255);        
  396.     Glib_Line(0,239+240,319,0+240,255);
  397.     // 00
  398.     // 0#
  399.     Glib_Rectangle(0+320,0+240,319+320,239+240,255);
  400.     Glib_Line(0+320,0+240,319+320,239+240,255);     
  401.     Glib_Line(0+320,239+240,319+320,0+240,255);
  402.     Glib_Rectangle(50+320,50+240,269+320,189+240,255);
  403.     Uart_Printf("Virtual Screen Test(CSTN 256 color). Press any key[ijkm\r]!n");
  404.     MoveViewPort(MODE_CSTN_8BIT);
  405.     Lcd_MoveViewPort(0,0,MODE_CSTN_8BIT);
  406.     Lcd_CstnOnOff(0); // Disable ENVID Bit and GPB5 output
  407.     Lcd_Port_Return();
  408. }
  409. void Test_Lcd_Cstn_8Bit_On(void)
  410. {
  411.     int i,j;
  412.     Lcd_Port_Init();
  413.     Lcd_Init(MODE_CSTN_8BIT);
  414.     Glib_Init(MODE_CSTN_8BIT);
  415.     Lcd_CstnOnOff(1); // Enable ENVID Bit and GPB5 output
  416.     Uart_Printf("[CSTN LCD(8bit/1pixel) WILL BE TURNED ON EVEN DURING OTHER TEST]n");
  417.     Uart_Printf("If you'd like to off the CSTN LCD, then excute other LCD test program,n");     
  418.     for(j=0;j<240;j++)
  419. for(i=0;i<320;i++) //RRRGGGBB
  420.     PutPixel(i,j,((i/40)<<5)+((j/30)<<2)+(((j/15)%2)<<1)+((i/20)%2));
  421. }
  422. void Test_Lcd_Cstn_12Bit(void)
  423. {
  424.     int i,j,k;
  425. U32 cMode;
  426.     Uart_Printf("[CSTN 4K COLOR(12bit/1pixel) LCD TEST]n");
  427. Uart_Printf(" Select 12 bpp data format  1. Packed[D]   2. Unpackedn");
  428. if (Uart_Getch() == '2')
  429. cMode = MODE_CSTN_12BIT_UP;
  430. else cMode = MODE_CSTN_12BIT;
  431. Lcd_Port_Init();
  432.     Lcd_Init(cMode);
  433.     Glib_Init(cMode);
  434.     Lcd_CstnOnOff(1); // Enable ENVID Bit and GPB5 output
  435.  
  436.     Glib_ClearScr(0, cMode);
  437.     k=0;
  438.     for(j=0;j<240;j+=80)
  439.         for(i=0;i<320;i+=20)
  440. {   
  441.      if((k<16)|(k>31))
  442.     {
  443.         Glib_FilledRectangle(i,j,i+19,j+79,((k%16)<<(4*(k/16))));
  444.         k++;
  445.     }
  446.     else
  447.     {
  448.         Glib_FilledRectangle(i,j,i+19,j+79,((k-(1+2*(k%16)))<<(4*(k/16))));
  449.         k++;
  450.     }
  451. }
  452.     Uart_Printf("CSTN 4K color mode test 1. Press any key!n");
  453.     Uart_Getch();  
  454. #if 1 // just test
  455. i = 0;
  456. while(1)
  457. {
  458. if (Uart_Getch() == 'r') break;
  459. Lcd_CstnOnOff(0); // Enable ENVID Bit and GPB5 output
  460. Delay(1);
  461. Lcd_CstnOnOff(1); // Enable ENVID Bit and GPB5 output
  462. }
  463. Lcd_Port_Return();
  464. #else
  465.     Glib_ClearScr(0, cMode);
  466.     for(j=0;j<240;j++)
  467. for(i=0;i<320;i++)
  468.     PutPixel(i,j,((i/40)<<9)+((j/30)<<5)+(((j/15)%2)<<1)+((i/20)%2));
  469.     Uart_Printf("CSTN 4K color mode test 2. Press any key!n");
  470.     Uart_Getch();  
  471.     Glib_ClearScr(0, cMode);
  472.     k=0;
  473.     for(i=160;i<480;i+=20)
  474.      for(j=120;j<360;j+=15)
  475.      {
  476.          Glib_FilledRectangle(i,j,i+19,j+14,(((k&0xf)<<8)|((k%4)<<4)|(k&0xf0)) );
  477.          k++;
  478.      }
  479.     // #0     
  480.     // 00     
  481.     Glib_Rectangle(0,0,319,239,0xf00);   
  482.     Glib_Line(0,0,319,239,0x0f0);        
  483.     Glib_Line(0,239,319,0,0x00f);
  484.     // 0#
  485.     // 00
  486.     Glib_Rectangle(0+320,0,319+320,239,0xfff);
  487.     Glib_Line(0+320,0,319+320,239,0xfff);        
  488.     Glib_Line(0+320,239,319+320,0,0xfff);
  489.     // 00
  490.     // #0
  491.     Glib_Rectangle(0,0+240,319,239+240,0xfff);
  492.     Glib_Line(0,0+240,319,239+240,0xfff);        
  493.     Glib_Line(0,239+240,319,0+240,0xfff);
  494.     // 00
  495.     // 0#
  496.     Glib_Rectangle(0+320,0+240,319+320,239+240,0xfff);
  497.     Glib_Line(0+320,0+240,319+320,239+240,0xfff);     
  498.     Glib_Line(0+320,239+240,319+320,0+240,0xfff);
  499.     Glib_Rectangle(50+320,50+240,269+320,189+240,0xfff);
  500.     Uart_Printf("Virtual Screen Test(CSTN 4K color). Press any key[ijkm\r]!n");
  501.     MoveViewPort(cMode);
  502.     Lcd_MoveViewPort(0,0,cMode);
  503.     Lcd_CstnOnOff(0); // Disable ENVID Bit and GPB5 output 
  504.     Lcd_Port_Return();
  505. #endif
  506. }
  507. void Test_Lcd_Cstn_16Bit(void)
  508. {
  509.     int i,j,k,c;
  510.     Lcd_Port_Init();
  511.     Lcd_Init(MODE_CSTN_16BIT);
  512.     Glib_Init(MODE_CSTN_16BIT);
  513.     Lcd_CstnOnOff(1); // Enable ENVID Bit and GPB5 output
  514.     Uart_Printf("[CSTN 4K COLOR 16BPP mode LCD TEST]n");
  515.  
  516.     Glib_ClearScr(0, MODE_CSTN_16BIT);
  517.     k=0;
  518.     for(j=0;j<240;j+=80)
  519.         for(i=0;i<320;i+=20)
  520. {   
  521.      if(j==0)
  522.     {
  523.      c = (k%16)<<1; //blue
  524.     }
  525.  else if (j==80)
  526.  {
  527.  c = (15-k%16)<<7; //green 
  528.  }
  529.       else
  530.     {
  531.      c = (k%16)<<12; //red
  532.     }
  533. Glib_FilledRectangle(i,j,i+19,j+79,c);
  534. k++;
  535. }
  536.     Uart_Printf("CSTN 4K color mode test 1. Press any key!n");
  537.     Uart_Getch();  
  538.     Glib_ClearScr(0, MODE_CSTN_16BIT);
  539.     for(j=0;j<240;j++)
  540. for(i=0;i<320;i++)
  541.     PutPixel(i,j,((i/40)<<13)+((j/30)<<8)+(((j/15)%2)<<2)+((i/20)%2));
  542.     Uart_Printf("CSTN 4K color mode test 2. Press any key!n");
  543.     Uart_Getch();  
  544.     Glib_ClearScr(0, MODE_CSTN_16BIT);
  545.     k=0;
  546.     for(i=160;i<480;i+=20)
  547.      for(j=120;j<360;j+=15)
  548.      {
  549.          Glib_FilledRectangle(i,j,i+19,j+14,(((k&0xf)<<12)|((k%4)<<7)|(k&0x8)) );
  550.          k++;
  551.      }
  552.     // #0     
  553.     // 00     
  554.     Glib_Rectangle(0,0,319,239,0xf00);   
  555.     Glib_Line(0,0,319,239,0x0f0);        
  556.     Glib_Line(0,239,319,0,0x00f);
  557.     // 0#
  558.     // 00
  559.     Glib_Rectangle(0+320,0,319+320,239,0xfff);
  560.     Glib_Line(0+320,0,319+320,239,0xfff);        
  561.     Glib_Line(0+320,239,319+320,0,0xfff);
  562.     // 00
  563.     // #0
  564.     Glib_Rectangle(0,0+240,319,239+240,0xfff);
  565.     Glib_Line(0,0+240,319,239+240,0xfff);        
  566.     Glib_Line(0,239+240,319,0+240,0xfff);
  567.     // 00
  568.     // 0#
  569.     Glib_Rectangle(0+320,0+240,319+320,239+240,0xfff);
  570.     Glib_Line(0+320,0+240,319+320,239+240,0xfff);     
  571.     Glib_Line(0+320,239+240,319+320,0+240,0xfff);
  572.     Glib_Rectangle(50+320,50+240,269+320,189+240,0xfff);
  573.     Uart_Printf("Virtual Screen Test(CSTN 4K color). Press any key[ijkm\r]!n");
  574.     MoveViewPort(MODE_CSTN_16BIT);
  575.     Lcd_MoveViewPort(0,0,MODE_CSTN_16BIT);
  576.     Lcd_CstnOnOff(0); // Disable ENVID Bit and GPB5 output
  577.     Lcd_Port_Return();
  578. }
  579. void Select_Tcon()
  580. {
  581. U8 ch=0;
  582. //Uart_Printf("Select LCD controller type [1-LPC3600  2-LCC3600  3-General TFT] : ");
  583. ch = 3;//Uart_GetIntNum();
  584. switch (ch)
  585. {
  586. case 1 :
  587. Lcd_Lpc3600Enable(); // Enable LPC3600
  588. break;
  589. case 2 :
  590. Lcd_Lcc3600Enable();
  591. break;
  592. case 3 : 
  593. Lcd_TconDisable();
  594. break;
  595. default :
  596. Lcd_Lcc3600Enable(); // Enable LCC3600
  597. break;
  598. }
  599. }
  600. void Test_Lcd_Tft_8Bit_240320(void)
  601. {
  602.     int i,j,k;
  603.     Lcd_Port_Init();
  604.     Lcd_Palette8Bit_Init(); // Initialize 256 palette 
  605.     Lcd_Init(MODE_TFT_8BIT_240320);
  606.     Glib_Init(MODE_TFT_8BIT_240320);
  607. Uart_Printf("[TFT 256 COLOR(8bit/1pixel) LCD TEST]n");
  608. Select_Tcon();
  609.     Lcd_PowerEnable(0, 1);
  610.     rTPAL = (1<<24)|((0xff)<<16); // Enable Temporary Palette : Red
  611.     Lcd_EnvidOnOff(1); // Enable ENVID Bit
  612.     Uart_Printf("nTFT 256 color mode test 1. Press any key!n");
  613.     Uart_Getch(); 
  614.     Glib_ClearScr(0, MODE_TFT_8BIT_240320); // Fill the LCD panel with Black Color
  615.     k=0;
  616.     for(i=0;i<320;i+=20)
  617. for(j=0;j<240;j+=15)
  618.     Glib_FilledRectangle(j,i,j+14,i+19,(k%256));
  619.     k++;
  620. }
  621.     rTPAL = 0; // Disable Temporary Palette
  622.     Uart_Printf("TFT 256 color mode test 2. Press any key!n");
  623.     Uart_Getch();  
  624.     Glib_ClearScr(0, MODE_TFT_8BIT_240320); // Fill the LCD panel with Black Color
  625.     k=0;
  626.     for(i=0;i<320;i+=10)
  627. for(j=0;j<240;j+=10)
  628.     Glib_FilledRectangle(j,i,j+9,i+9,(k%256));
  629.     k+=30;
  630. }
  631.     Uart_Printf("TFT 256 color mode test 3. Press any key!n");
  632.     Uart_Getch();  
  633.     Glib_ClearScr(0, MODE_TFT_8BIT_240320);
  634.     k=0;
  635.     for(i=80;i<240;i+=10)
  636.     {
  637.      for(j=60;j<180;j+=10)
  638.      {
  639.          Glib_FilledRectangle(j,i,j+9,i+9,k);
  640.          k++;
  641.      }
  642.     }
  643.     Glib_Rectangle(0,0,239,319,255);   
  644.     Glib_Line(0,0,239,319,255);        
  645.     Glib_Line(0,319,239,0,255);
  646.     
  647.     Glib_Rectangle(0+240,0,239+240,319,255);
  648.     Glib_Line(0+240,0,239+240,319,255);        
  649.     Glib_Line(0+240,319,239+240,0,255);
  650.     
  651.     Glib_Rectangle(0,0+320,239,319+320,255);
  652.     Glib_Line(0,0+320,239,319+320,255);        
  653.     Glib_Line(0,319+320,239,0+320,255);
  654.     
  655.     Glib_Rectangle(0+240,0+320,239+240,319+320,255);
  656.     Glib_Line(0+240,0+320,239+240,319+320,255);     
  657.     Glib_Line(0+240,319+320,239+240,0+320,255);
  658.     Glib_Rectangle(10+240,10+320,480-11,640-11,255);
  659.     Uart_Printf("Virtual Screen Test(TFT 256 color). Press any key[ijkm\r]!n");
  660.     MoveViewPort(MODE_TFT_8BIT_240320);
  661.     Lcd_MoveViewPort(0,0,MODE_TFT_8BIT_240320);
  662.     Glib_ClearScr(0, MODE_TFT_8BIT_240320);
  663.     Lcd_EnvidOnOff(0);
  664.     Lcd_PowerEnable(0, 0);
  665.     Lcd_Port_Return();
  666. }
  667. void Test_Lcd_Tft_16Bit_240320(void)
  668. {
  669.     int i,j,k;
  670.     Lcd_Port_Init();
  671.     Lcd_Init(MODE_TFT_16BIT_240320);
  672.     Glib_Init(MODE_TFT_16BIT_240320);
  673.     Uart_Printf("[TFT 64K COLOR(16bit/1pixel) LCD TEST]n");
  674. Select_Tcon();
  675.     Lcd_PowerEnable(0, 1);
  676.     Lcd_EnvidOnOff(1);
  677.     Glib_ClearScr(0, MODE_TFT_16BIT_240320);
  678.     Glib_FilledRectangle(0,0,239,159,0xf800);    
  679.     Glib_FilledRectangle(0,160,239,320,0xf800);    
  680.     Uart_Printf("nTFT 64K color mode test 1. Press any key!n");
  681.     Uart_Getch();  
  682.     
  683.     Glib_ClearScr(0, MODE_TFT_16BIT_240320);
  684.     Glib_Rectangle(0,0,239,319,0x07e0);   
  685.     Glib_FilledRectangle(0,0,20,20,65535);   
  686.     Glib_Rectangle(220,300,239,319,65535);   
  687.     Glib_Line(0,0,239,319,0x1f);        
  688.     Glib_Line(239,0,0,319,0xf800);
  689.     Uart_Printf("TFT 64K color mode test 2. Press any key!n");
  690.     Uart_Getch();  
  691.     Glib_ClearScr(0, MODE_TFT_16BIT_240320);
  692.     k=0;
  693.     for(i=80;i<240;i+=10)
  694.     {
  695.      for(j=60;j<180;j+=10)
  696.      {
  697.          Glib_FilledRectangle(j,i,j+9,i+9,k);
  698.          k++;
  699.      }
  700.     }
  701.     Glib_Rectangle(0,0,239,319,65535);   
  702.     Glib_Line(0,0,239,319,65535);        
  703.     Glib_Line(0,319,239,0,65535);
  704.     
  705.     Glib_Rectangle(0+240,0,239+240,319,255);
  706.     Glib_Line(0+240,0,239+240,319,255);        
  707.     Glib_Line(0+240,319,239+240,0,255);
  708.     
  709.     Glib_Rectangle(0,0+320,239,319+320,255);
  710.     Glib_Line(0,0+320,239,319+320,255);        
  711.     Glib_Line(0,319+320,239,0+320,255);
  712.     
  713.     Glib_Rectangle(0+240,0+320,239+240,319+320,255);
  714.     Glib_Line(0+240,0+320,239+240,319+320,255);     
  715.     Glib_Line(0+240,319+320,239+240,0+320,255);
  716.     Glib_Rectangle(40+240,40+320,480-41,640-41,0x1f);
  717.     Uart_Printf("Virtual Screen Test(TFT 64K color). Press any key[ijkm\r]!n");
  718.     MoveViewPort(MODE_TFT_16BIT_240320);
  719.     Lcd_MoveViewPort(0,0,MODE_TFT_16BIT_240320);
  720.     Glib_ClearScr(0, MODE_TFT_16BIT_240320);
  721.     Lcd_EnvidOnOff(0);
  722.     Lcd_PowerEnable(0, 0);
  723.     Lcd_Port_Return();
  724. }
  725. void Test_Lcd_Tft_8Bit_240320_On(void)
  726. {
  727.     int i,j,k=0;
  728.     Lcd_Port_Init();
  729.     Lcd_Palette8Bit_Init();
  730.     Lcd_Init(MODE_TFT_8BIT_240320);
  731.     Glib_Init(MODE_TFT_8BIT_240320);
  732. Select_Tcon();
  733.     Lcd_PowerEnable(0, 1);    
  734.     Uart_Printf("n[TFT LCD(240x320 ,8bpp) WILL BE TURNED ON EVEN DURING OTHER TEST]n");
  735.     Uart_Printf("If you'd like to off the TFT LCD, then excute other LCD test program,n");     
  736.     for(j=0;j<320;j++)
  737.         for(i=0;i<240;i++)
  738.             PutPixel(i,j,((int)DEMO256[k++]));
  739.             
  740.     Lcd_EnvidOnOff(1);
  741. }
  742. void Test_Lcd_Tft_8Bit_240320_Bmp(void)
  743. {
  744.     int i,j,k=0;
  745.     Lcd_Port_Init();
  746.     Lcd_Palette8Bit_Init();
  747.     Lcd_Init(MODE_TFT_8BIT_240320);
  748.     Glib_Init(MODE_TFT_8BIT_240320);
  749. Select_Tcon();
  750.     Lcd_PowerEnable(0, 1);    // Enable LCD_PWREN
  751.     for(j=0;j<320;j++)
  752.         for(i=0;i<240;i++)
  753.             PutPixel(i,j,((int)DEMO256[k++]));
  754.     Lcd_EnvidOnOff(1); // Enable ENVID    
  755.     Uart_Printf("Test palette & RGB format(5:6:5 ->5:5:5:1)..........n");        
  756.     Uart_Printf("then press any keyn");        
  757.     Uart_Getch();
  758.     Lcd_EnvidOnOff(0);
  759.     rLCDCON5&=~(1<<11); // 5:5:5:1 Palette Setting & put pixel with 5551 format
  760.     Lcd_Palette8Bit_Init(); //  palette change to 5:5:5:1 format..
  761.     
  762.     Uart_Printf("One more ,please...n");
  763.     Uart_Getch();    
  764.     Lcd_EnvidOnOff(1);
  765.     Uart_Printf("Press any key to quit!n");        
  766.     Uart_Getch();
  767.     Glib_ClearScr(0, MODE_TFT_8BIT_240320);
  768.     Delay(5000);
  769.     Lcd_EnvidOnOff(0);
  770.     rLCDCON5|=(1<<11); // 5:6:5 Palette Setting
  771.     Lcd_Port_Return();
  772. }
  773. void Test_Lcd_Tft_8Bit_240320_IntFr(void)
  774. {
  775.     int i,j,k=0;
  776.     Lcd_Port_Init();
  777.     Lcd_Palette8Bit_Init();
  778.     Lcd_Init(MODE_TFT_8BIT_240320);
  779.     Glib_Init(MODE_TFT_8BIT_240320);
  780. Select_Tcon();
  781.     Lcd_PowerEnable(0, 1);    
  782.     rLCDCON5|=(1<<11); // 5:6:5 Palette Setting
  783.     
  784.     for(j=0;j<320;j++)
  785.         for(i=0;i<240;i++)
  786.             PutPixel(i,j,((int)DEMO256[k++]));
  787.     //--------LCD frame interrupt test---------------------------------------------------START
  788.     //The content of GPG4 is changed to OUTPUT('01'). 
  789.     //We will check the frame interrupt with using Logic Analyzer. 
  790.     rGPGUP=rGPGUP&(~(1<<4))|(1<<4); // Pull-up disable
  791.     rGPGDAT=rGPGDAT&(~(1<<4))|(1<<4); // GPG4=High
  792.     rGPGCON=rGPGCON&(~(3<<8))|(1<<8); // GPG4=Output
  793.    
  794.     pISR_LCD=(unsigned)Lcd_Int_Frame;
  795.     rINTMSK=~(BIT_LCD);
  796.     rLCDINTMSK=(1<<2)|(0<<1)|(1); // 8Words Trigger Level,Unmask Frame int,mask Fifo int
  797.     //--------LCD frame interrupt test-----------------------------------------------------END
  798.  
  799.     Lcd_EnvidOnOff(1); // Enable ENVID    
  800.     Uart_Printf("Press any key to quit!n");        
  801.     Uart_Getch();
  802.     rLCDINTMSK|=3; // Mask LCD SUB Interrupt
  803.     rINTMSK|=(BIT_LCD); // Mask LCD INT
  804.     Lcd_EnvidOnOff(0);
  805.     Lcd_Port_Return();
  806. }
  807. void Test_Lcd_Tft_8Bit_240320_IntFi(void)
  808. {
  809.     int i,j,k=0;
  810.     Lcd_Port_Init();
  811.     Lcd_Palette8Bit_Init();
  812.     Lcd_Init(MODE_TFT_8BIT_240320);
  813.     Glib_Init(MODE_TFT_8BIT_240320);
  814. Select_Tcon();
  815.     Lcd_PowerEnable(0, 1);    
  816.     rLCDCON5|=(1<<11); // 5:6:5 Palette Setting
  817.     
  818.     for(j=0;j<320;j++)
  819.         for(i=0;i<240;i++)
  820.             PutPixel(i,j,((int)DEMO256[k++]));
  821.     Lcd_EnvidOnOff(1); // Enable ENVID    
  822.     //--------LCD FIFO interrupt test---------------------------------------------------START
  823.     pISR_LCD=(unsigned)Lcd_Int_Fifo;
  824.     rINTMSK=~(BIT_LCD);
  825.     rLCDINTMSK=(0<<2)|(1<<1)|(0); // 4Words Trigger Level,Mask Frame int,Unmask Fifo int
  826.     //--------LCD FIFO interrupt test-----------------------------------------------------END
  827.  
  828.     Uart_Printf("Press any key to quit!n");        
  829.     Uart_Getch();
  830.     rLCDINTMSK|=3; // Mask LCD SUB Interrupt
  831.     rINTMSK|=(BIT_LCD); // Mask LCD INT
  832.     Lcd_EnvidOnOff(0);
  833.     Lcd_Port_Return();
  834. }
  835. //640480
  836. void __irq Lcd_Int_Fifo_640480(void)
  837. {
  838.     int i;
  839.     rLCDINTMSK|=3; // Mask LCD SUB Interrupt
  840.     // GPG4 is .... 
  841.     rGPGDAT&=(~(1<<4)); // GPG4=Low
  842.     for(i=0;i<50;i++); // GPG4=Low
  843.     rGPGDAT|=(1<<4); //GPG4=High
  844.     rLCDSRCPND=1; // Clear LCD SUB Interrupt source pending
  845.     rLCDINTPND=1; // Clear LCD SUB Interrupt pending
  846.     rLCDINTMSK&=(~(1)); // Unmask LCD FRAME Interrupt
  847.     ClearPending(BIT_LCD);
  848. }
  849. void Test_Lcd_Tft_1Bit_640480(void)
  850. {
  851.     int i,j;
  852. Lcd_Palette1Bit_Init();
  853. Lcd_Start(MODE_TFT_1BIT_640480);
  854.     Uart_Printf("[TFT Mono(1bit/1pixel) LCD TEST]n");
  855.     Glib_ClearScr(0,MODE_TFT_1BIT_640480);
  856.     rTPAL = (1<<24)|((0xff)<<8); // Enable Temporary Palette : Green
  857.     Uart_Printf("TFT Mono mode test 1. Press any key!n");
  858.     Uart_Getch();  
  859.     rTPAL = 0;
  860.     Glib_FilledRectangle(0,0,639,239,1);
  861.     Glib_FilledRectangle(0,239,639,479,0);   
  862.     Uart_Printf("TFT Mono mode test 2. Press any key!n");
  863.     Uart_Getch();  
  864.     Glib_FilledRectangle(0,0,319,479,1);
  865.     Glib_FilledRectangle(320,0,639,479,0);   
  866.     Uart_Printf("TFT Mono mode test 3. Press any key!n");
  867.     Uart_Getch();  
  868.     for(j=0;j<LCD_YSIZE_TFT_640480;j+=20)
  869. for(i=320;i<640;i+=20)
  870.     Glib_FilledRectangle(i,j,i+19,j+19,((j+i)/20)%2);
  871.     Uart_Printf("TFT Mono mode test 4. Press any key!n");
  872.     Uart_Getch();  
  873.     Glib_ClearScr(0, MODE_TFT_1BIT_640480);
  874.     Glib_FilledRectangle(0+320,0+240,1279-320,959-240,1);
  875.     
  876.     // #0     
  877.     // 00     
  878.     Glib_Rectangle(0,0,639,479,1);   
  879.     Glib_Line(0,0,639,479,1);        
  880.     Glib_Line(0,479,639,0,1);
  881.     // 0#
  882.     // 00
  883.     Glib_Rectangle(0+640,0,639+640,479,1);   
  884.     Glib_Line(0+640,0,639+640,479,1);        
  885.     Glib_Line(0+640,479,639+640,0,1);
  886.     // 00
  887.     // #0
  888.     Glib_Rectangle(0,0+480,639,479+480,1);   
  889.     Glib_Line(0,0+480,639,479+480,1);        
  890.     Glib_Line(0,479+480,639,0+480,1);
  891.     // 00
  892.     // 0#
  893.     Glib_Rectangle(0+640,0+480,639+640,479+480,1);   
  894.     Glib_Line(0+640,0+480,639+640,479+480,1);        
  895.     Glib_Line(0+640,479+480,639+640,0+480,1);
  896.     Glib_Rectangle(50+640,50+480,639+640-50,479+480-50,1);   
  897.     Uart_Printf("Virtual Screen Test(TFT 256 color). Press any key[ijkm\r]!n");
  898.     MoveViewPort(MODE_TFT_1BIT_640480);
  899.     Lcd_MoveViewPort(0,0,MODE_TFT_1BIT_640480);
  900.     Lcd_EnvidOnOff(0);
  901.     Lcd_Port_Return();
  902. }
  903. void Test_Lcd_Tft_8Bit_640480(void)
  904. {
  905.     int i,j,k;
  906.     Lcd_Palette8Bit_Init();
  907. Lcd_Start(MODE_TFT_8BIT_640480);
  908.     Uart_Printf("[TFT 256 COLOR(8bit/1pixel) LCD TEST]n");
  909.     Glib_ClearScr(0, MODE_TFT_8BIT_640480);
  910.     rTPAL = (1<<24)|((0xff)<<0); // Enable Temporary Palette : Blue
  911.     Uart_Printf("TFT 256 color mode test 1. Press any key!n");
  912.     Uart_Getch();  
  913.     k=0;
  914.     for(i=0;i<640;i+=40)
  915. for(j=0;j<480;j+=30)
  916.     Glib_FilledRectangle(i,j,i+39,j+29,(k%256));
  917.     k++;
  918. }
  919.     rTPAL = 0;
  920.     Uart_Printf("TFT 256 color mode test 2. Press any key!n");
  921.     Uart_Getch();  
  922.     Glib_ClearScr(0, MODE_TFT_8BIT_640480);
  923.     k=0;
  924.     for(i=0;i<640;i+=20)
  925. for(j=0;j<480;j+=20)
  926.     Glib_FilledRectangle(i,j,i+19,j+19,(k%256));
  927.     k+=30;
  928. }
  929.     Uart_Printf("TFT 256 color mode test 3. Press any key!n");
  930.     Uart_Getch();  
  931.     Glib_ClearScr(0, MODE_TFT_8BIT_640480);
  932.     k=0;
  933.     for(i=160;i<480;i+=20)
  934.      for(j=120;j<360;j+=15)
  935.      {
  936.          Glib_FilledRectangle(i,j,i+19,j+14,k);
  937.          k++;
  938.      }
  939.     // #0     
  940.     // 00     
  941.     Glib_Rectangle(0,0,319,239,255);   
  942.     Glib_Line(0,0,319,239,255);        
  943.     Glib_Line(0,239,319,0,255);
  944.     // 0#
  945.     // 00
  946.     Glib_Rectangle(0+320,0,319+320,239,255);
  947.     Glib_Line(0+320,0,319+320,239,255);        
  948.     Glib_Line(0+320,239,319+320,0,255);
  949.     // 00
  950.     // #0
  951.     Glib_Rectangle(0,0+240,319,239+240,255);
  952.     Glib_Line(0,0+240,319,239+240,255);        
  953.     Glib_Line(0,239+240,319,0+240,255);
  954.     // 00
  955.     // 0#
  956.     Glib_Rectangle(0+320,0+240,319+320,239+240,255);
  957.     Glib_Line(0+320,0+240,319+320,239+240,255);     
  958.     Glib_Line(0+320,239+240,319+320,0+240,255);
  959.     Glib_Rectangle(50+320,50+240,269+320,189+240,255);
  960.     Uart_Printf("TFT 256 color mode test 4. Press any key!n");
  961.     Uart_Getch();  
  962.    
  963.     Glib_ClearScr(0, MODE_TFT_8BIT_640480);
  964.     k=0;
  965.     for(i=320;i<960;i+=40)
  966.      for(j=240;j<720;j+=30)
  967.      {
  968.          Glib_FilledRectangle(i,j,i+39,j+29,(k%256));
  969.          k++;
  970.      }
  971.     // #0     
  972.     // 00     
  973.     Glib_Rectangle(0,0,639,479,255);   
  974.     Glib_Line(0,0,639,479,255);        
  975.     Glib_Line(0,479,639,0,255);
  976.     // 0#
  977.     // 00
  978.     Glib_Rectangle(0+640,0,639+640,479,255);   
  979.     Glib_Line(0+640,0,639+640,479,255);        
  980.     Glib_Line(0+640,479,639+640,0,255);
  981.     // 00
  982.     // #0
  983.     Glib_Rectangle(0,0+480,639,479+480,255);   
  984.     Glib_Line(0,0+480,639,479+480,255);        
  985.     Glib_Line(0,479+480,639,0+480,255);
  986.     // 00
  987.     // 0#
  988.     Glib_Rectangle(0+640,0+480,639+640,479+480,255);   
  989.     Glib_Line(0+640,0+480,639+640,479+480,255);        
  990.     Glib_Line(0+640,479+480,639+640,0+480,255);
  991.     Glib_Rectangle(50+640,50+480,639+640-50,479+480-50,255);   
  992.     Uart_Printf("Virtual Screen Test(TFT 256 color). Press any key[ijkm\r]!n");
  993.     MoveViewPort(MODE_TFT_8BIT_640480);
  994.     Lcd_MoveViewPort(0,0,MODE_TFT_8BIT_640480);
  995.     Lcd_EnvidOnOff(0);
  996.     Lcd_Port_Return();
  997. }
  998. void Test_Lcd_Tft_8Bit_640480_Palette(void)
  999. {
  1000.     int i,j,k;
  1001.     unsigned char cdata, p_red, p_green, p_blue;
  1002.     U32 *palette;
  1003.     Lcd_Palette8Bit_Init();
  1004. Lcd_Start(MODE_TFT_8BIT_640480);
  1005.     Uart_Printf("[TFT 256 COLOR(8bit/1pixel) Palette TEST]n");
  1006.     Glib_ClearScr(0, MODE_TFT_8BIT_640480);
  1007.     rTPAL = (1<<24)|((0xff)<<0); // Enable Temporary Palette : Blue
  1008.     Uart_Printf("Temporary palette test. Press any key!n");    
  1009.     Uart_Getch();  
  1010.     k=0;
  1011.     for(i=0;i<640;i+=40)
  1012. for(j=0;j<480;j+=30)
  1013.     Glib_FilledRectangle(i,j,i+39,j+29,(k%256));
  1014.     k++;
  1015. }
  1016.     rTPAL = 0;
  1017.     Uart_Printf("Press any key to test writing palette during non-active.n");
  1018.     palette=(U32 *)PALETTE;
  1019.     for(cdata=0;cdata<255;cdata++)
  1020.     {
  1021. p_red=(cdata | 0xe0);
  1022. p_green=(cdata | 0x1c);
  1023. p_blue=(cdata | 0x03);
  1024.         while((rLCDCON5>>19)==2);
  1025.      *palette++=((U32)((p_red<<8)|(p_green<<6)|(p_blue<<3)));
  1026.      Uart_Printf("VSTATUS=%xn",(rLCDCON5>>19));
  1027.      Uart_Printf("cdata=%dn",(int)cdata);
  1028.     }
  1029.     *palette=0x0;    
  1030.     Uart_Getch();
  1031.     Lcd_EnvidOnOff(0);
  1032.     Lcd_Port_Return();
  1033. }
  1034. void Test_Lcd_Tft_8Bit_640480_Bswp(void)
  1035. {
  1036.     int k;
  1037.     Lcd_Palette8Bit_Init();
  1038. Lcd_Start(MODE_TFT_8BIT_640480);
  1039.     rLCDCON5 &= 0x1ffffd;    //BSWP Disable
  1040.     Uart_Printf("[TFT 256 COLOR(16bit/1pixel) BSWP TEST]n");
  1041.     Glib_ClearScr(0, MODE_TFT_8BIT_640480);
  1042.     Glib_Rectangle(0,0,639,479,0xff);
  1043.     Glib_Rectangle(1,1,638,478,0x03);
  1044.     Glib_Rectangle(0+100,0+100,639-100,479-100,0xff);
  1045.     Glib_Rectangle(1+100,1+100,638-100,478-100,0x03);
  1046.     Glib_Line(0,0,639,479,0xe0);     
  1047.     Glib_Line(639,0,0,479,0x1c);
  1048.     Uart_Printf("TFT 256 color BSWP test. Press any key excet return!n");
  1049.     while(Uart_Getch()!='r')
  1050.     {
  1051.         rLCDCON5 &= 0x1ffffd;    //BSWP Disable
  1052.         rLCDCON5 |= ((k%2)<<1);  //BSWP Enable
  1053.         k++;
  1054.     }
  1055.     Lcd_EnvidOnOff(0);
  1056.     Lcd_Port_Return();
  1057. }
  1058. void Test_Lcd_Tft_16Bit_640480(void)
  1059. {
  1060.     int i,j,k;
  1061. Lcd_Start(MODE_TFT_16BIT_640480);
  1062.     Uart_Printf("[TFT 64K COLOR(16bit/1pixel) LCD TEST]n");
  1063.     Glib_ClearScr(0, MODE_TFT_16BIT_640480);
  1064.     Glib_FilledRectangle(0,0,639,479,0xf800);    
  1065.     Uart_Printf("TFT 64K color mode test 1. Press any key!n");
  1066.     Uart_Getch();  
  1067.     Glib_ClearScr(0, MODE_TFT_16BIT_640480);
  1068.     Glib_Rectangle(0,0,639,479,0x07e0);   
  1069.     Glib_FilledRectangle(0,0,20,20,65535);   
  1070.     Glib_Rectangle(620,460,639,479,65535);   
  1071.     Glib_Line(0,0,639,479,0x1f);        
  1072.     Glib_Line(639,0,0,479,0xf800);
  1073.     Uart_Printf("TFT 64K color mode test 2. Press any key!n");
  1074.     Uart_Getch();  
  1075.     Glib_ClearScr(0, MODE_TFT_16BIT_640480);
  1076.     k=0;
  1077.     for(i=160;i<480;i+=20)
  1078.      for(j=120;j<360;j+=15)
  1079.      {
  1080.      while((rLCDCON5>>19)==2);
  1081.          Glib_FilledRectangle(i,j,i+19,j+14,k);
  1082.          k+=500;
  1083.      }
  1084.     // #0     
  1085.     // 00     
  1086.     Glib_Rectangle(0,0,319,239,65535);   
  1087.     Glib_Line(0,0,319,239,65535);        
  1088.     Glib_Line(0,239,319,0,65535);
  1089.     // 0#
  1090.     // 00
  1091.     Glib_Rectangle(0+320,0,319+320,239,255);
  1092.     Glib_Line(0+320,0,319+320,239,255);        
  1093.     Glib_Line(0+320,239,319+320,0,255);
  1094.     // 00
  1095.     // #0
  1096.     Glib_Rectangle(0,0+240,319,239+240,255);
  1097.     Glib_Line(0,0+240,319,239+240,255);        
  1098.     Glib_Line(0,239+240,319,0+240,255);
  1099.     // 00
  1100.     // 0#
  1101.     Glib_Rectangle(0+320,0+240,319+320,239+240,255);
  1102.     Glib_Line(0+320,0+240,319+320,239+240,255);     
  1103.     Glib_Line(0+320,239+240,319+320,0+240,255);
  1104.     Glib_Rectangle(50+320,50+240,269+320,189+240,255);
  1105.     Uart_Printf("TFT 64K color mode test 3. Press any key!n");
  1106.     Uart_Getch();  
  1107.     Glib_ClearScr(0, MODE_TFT_16BIT_640480);
  1108.     k=0;
  1109.     for(i=320;i<960;i+=40)
  1110.      for(j=240;j<720;j+=30)
  1111.      {
  1112.          Glib_FilledRectangle(i,j,i+39,j+29,k);
  1113.          k+=500;
  1114.      }
  1115.     // #0     
  1116.     // 00     
  1117.     Glib_Rectangle(0,0,639,479,65535);   
  1118.     Glib_Line(0,0,639,479,65535);        
  1119.     Glib_Line(0,479,639,0,65535);
  1120.     // 0#
  1121.     // 00
  1122.     Glib_Rectangle(0+640,0,639+640,479,65535);   
  1123.     Glib_Line(0+640,0,639+640,479,65535);        
  1124.     Glib_Line(0+640,479,639+640,0,65535);
  1125.     // 00
  1126.     // #0
  1127.     Glib_Rectangle(0,0+480,639,479+480,65535);   
  1128.     Glib_Line(0,0+480,639,479+480,65535);        
  1129.     Glib_Line(0,479+480,639,0+480,65535);
  1130.     // 00
  1131.     // 0#
  1132.     Glib_Rectangle(0+640,0+480,639+640,479+480,65535);   
  1133.     Glib_Line(0+640,0+480,639+640,479+480,65535);        
  1134.     Glib_Line(0+640,479+480,639+640,0+480,65535);
  1135.     Glib_Rectangle(50+640,50+480,639+640-50,479+480-50,65535);   
  1136.     Uart_Printf("Virtual Screen Test(TFT 64K color). Press any key[ijkm\r]!n");
  1137.     MoveViewPort(MODE_TFT_16BIT_640480);
  1138.     Lcd_MoveViewPort(0,0,MODE_TFT_16BIT_640480);
  1139.     Lcd_EnvidOnOff(0);
  1140.     Lcd_Port_Return();
  1141. }
  1142. void Test_Lcd_Tft_16Bit_640480_Hwswp(void)
  1143. {
  1144.     int k;
  1145. Lcd_Start(MODE_TFT_16BIT_640480);
  1146.     rLCDCON5 &= 0x1ffffe;    //HWSWP Disable
  1147.     Uart_Printf("[TFT 64K COLOR(16bit/1pixel) HWSWP TEST]n");
  1148.     Glib_ClearScr(0, MODE_TFT_16BIT_640480);
  1149.     Glib_Rectangle(0,0,639,479,0xffff);
  1150.     Glib_Rectangle(1,1,638,478,0xf800);
  1151.     Glib_Rectangle(0+100,0+100,639-100,479-100,0xffff);
  1152.     Glib_Rectangle(1+100,1+100,638-100,478-100,0xf800);
  1153.     Glib_Line(0,0,639,479,0x7e0);     
  1154.     Glib_Line(639,0,0,479,0x1f);
  1155.     Uart_Printf("TFT 64K color HWSWP test. Press any key except return key! Enter to exit..n");
  1156.     while(Uart_Getch()!='r')
  1157.     {
  1158.         rLCDCON5 &= 0x1ffffe;    //HWSWP Disable
  1159.         rLCDCON5 |= (k%2);       //HWSWP Enable
  1160.         k++;
  1161.     }
  1162.     Lcd_EnvidOnOff(0);
  1163.     Lcd_Port_Return();
  1164. }
  1165. void Test_Lcd_Tft_1Bit_800600(void)
  1166. {
  1167.     int i,j;
  1168. Lcd_Palette1Bit_Init();
  1169. Lcd_Start(MODE_TFT_1BIT_800600);
  1170. Uart_Printf("[TFT Mono(1bit/1pixel) LCD TEST]n");
  1171.     rTPAL = (1<<24)|((0xff)<<0); // Enable Temporary Palette : Blue
  1172.     Uart_Printf("TFT Mono mode test 1. Press any key!n");
  1173.     Uart_Getch();  
  1174.     rTPAL = 0; // Disable TPAL
  1175.     Glib_FilledRectangle(0,0,LCD_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600-1,1);
  1176.     Uart_Printf("TFT Mono mode test 2. Press any key!n");
  1177.     Uart_Getch();  
  1178.     Glib_FilledRectangle(200,200,LCD_XSIZE_TFT_800600-201,LCD_YSIZE_TFT_800600-201,0);   
  1179.     Uart_Printf("TFT Mono mode test 3. Press any key!n");
  1180.     Uart_Getch();  
  1181.     Glib_ClearScr(0, MODE_TFT_1BIT_800600);
  1182.     Glib_Rectangle(200,200,SCR_XSIZE_TFT_800600-201,SCR_YSIZE_TFT_800600-201,1);
  1183.     
  1184.     // #0     
  1185.     // 00     
  1186.     Glib_Rectangle(0,0,LCD_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600-1,1);   
  1187.     Glib_Line(0,0,LCD_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600-1,1);        
  1188.     Glib_Line(0,LCD_YSIZE_TFT_800600-1,LCD_XSIZE_TFT_800600-1,0,1);
  1189.     // 0#
  1190.     // 00
  1191.     Glib_Rectangle(LCD_XSIZE_TFT_800600,0,SCR_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600-1,1);   
  1192.     Glib_Rectangle(LCD_XSIZE_TFT_800600+100,100,SCR_XSIZE_TFT_800600-101,LCD_YSIZE_TFT_800600-101,1);   
  1193.     
  1194.     // 00
  1195.     // #0
  1196.     Glib_Rectangle(0,LCD_YSIZE_TFT_800600,LCD_XSIZE_TFT_800600-1,SCR_YSIZE_TFT_800600-1,1);   
  1197.     Glib_Rectangle(200,LCD_YSIZE_TFT_800600+200,LCD_XSIZE_TFT_800600-201,SCR_YSIZE_TFT_800600-201,1);   
  1198.     // 00
  1199.     // 0#
  1200.     Glib_Rectangle(LCD_XSIZE_TFT_800600,LCD_YSIZE_TFT_800600,SCR_XSIZE_TFT_800600-1,SCR_YSIZE_TFT_800600-1,1);   
  1201.     Glib_Line(LCD_XSIZE_TFT_800600,LCD_YSIZE_TFT_800600,SCR_XSIZE_TFT_800600-1,SCR_YSIZE_TFT_800600-1,1);        
  1202.     Glib_Line(LCD_XSIZE_TFT_800600,SCR_YSIZE_TFT_800600-1,SCR_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600,1);
  1203.     Uart_Printf("Virtual Screen Test(Mono). Press any key[ijkm\r]!n");
  1204.     MoveViewPort(MODE_TFT_1BIT_800600);
  1205.     Lcd_MoveViewPort(0,0,MODE_TFT_1BIT_800600);
  1206. //--------LCD FIFO interrupt test---------------------------------------------------START
  1207.     rLCDINTMSK|=3; // Mask LCD SUB Interrupt
  1208.     rINTMSK|=(BIT_LCD); // Mask LCD INT
  1209. //--------LCD FIFO interrupt test-----------------------------------------------------END   
  1210.     Lcd_EnvidOnOff(0);
  1211.     Lcd_Port_Return();
  1212. }
  1213. void Test_Lcd_Tft_8Bit_800600(void)
  1214. {
  1215.     int i,j,k;
  1216.     Lcd_Palette8Bit_Init();
  1217. Lcd_Start(MODE_TFT_8BIT_800600);
  1218.     Uart_Printf("[TFT 256 COLOR(8bit/1pixel) LCD TEST]n");
  1219.     rTPAL = (1<<24)|((0xff)<<0); // Enable Temporary Palette : Blue
  1220. //--------LCD FIFO interrupt test---------------------------------------------------START
  1221. Lcd_EnvidOnOff(1); // Enable ENVID   
  1222. //The content of GPG4 is changed to OUTPUT('01'). 
  1223. //We will check the frame interrupt with using Logic Analyzer. 
  1224. rGPGUP=rGPGUP&(~(1<<4))|(1<<4); // Pull-up disable
  1225. rGPGDAT=rGPGDAT&(~(1<<4))|(1<<4); // GPG4=High
  1226. rGPGCON=rGPGCON&(~(3<<8))|(1<<8); // GPG4=Output
  1227. pISR_LCD=(unsigned)Lcd_Int_Frame;
  1228. rINTMSK=~(BIT_LCD);
  1229. rLCDINTMSK=(0<<2)|(1<<1)|(0); // 4Words Trigger Level,Mask Frame int,Unmask Fifo int
  1230. //        rLCDINTMSK=(1<<2)|(1<<1)|(0); // 8Words Trigger Level,Mask Frame int,Unmask Fifo int    
  1231. //        Lcd_EnvidOnOff(1); // Enable ENVID       
  1232. //--------LCD FIFO interrupt test-----------------------------------------------------END
  1233.     Uart_Printf("TFT 256 color mode test 1. Press any key!n");
  1234.     Uart_Getch();  
  1235.     Glib_ClearScr(0, MODE_TFT_8BIT_800600);
  1236.     rTPAL = 0;
  1237.     k=0;
  1238.     for(i=0;i<LCD_XSIZE_TFT_800600;i+=40)
  1239. for(j=0;j<LCD_YSIZE_TFT_800600;j+=30)
  1240.     Glib_FilledRectangle(i,j,i+39,j+29,(k%256));
  1241.     k++;
  1242. }
  1243.     Uart_Printf("TFT 256 color mode test 2. Press any key!n");
  1244.     Uart_Getch();  
  1245.     Glib_ClearScr(0xff, MODE_TFT_8BIT_800600);
  1246.     Uart_Printf("TFT 256 color mode test 3. Press any key!n");
  1247.     Uart_Getch();  
  1248.     Glib_ClearScr(0, MODE_TFT_8BIT_800600);
  1249.     k=0;
  1250.     for(i=(SCR_XSIZE_TFT_800600/4);i<(SCR_XSIZE_TFT_800600*(3/4));i+=40)
  1251.      for(j=SCR_YSIZE_TFT_800600/4;j<(SCR_YSIZE_TFT_800600*(3/4));j+=30)
  1252.      {
  1253.          Glib_FilledRectangle(i,j,i+39,j+29,(k%256));
  1254.          k++;
  1255.      }
  1256.     // #0     
  1257.     // 00     
  1258.     Glib_Rectangle(0,0,LCD_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600-1,0xff);   
  1259.     Glib_Line(0,0,LCD_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600-1,0xff);        
  1260.     Glib_Line(0,LCD_YSIZE_TFT_800600-1,LCD_XSIZE_TFT_800600-1,0,0xff);
  1261.     // 0#
  1262.     // 00
  1263.     Glib_Rectangle(LCD_XSIZE_TFT_800600,0,SCR_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600-1,0xf0);   
  1264.     Glib_Rectangle(LCD_XSIZE_TFT_800600+100,100,SCR_XSIZE_TFT_800600-101,LCD_YSIZE_TFT_800600-101,0xf0);   
  1265.     
  1266.     // 00
  1267.     // #0
  1268.     Glib_Rectangle(0,LCD_YSIZE_TFT_800600,LCD_XSIZE_TFT_800600-1,SCR_YSIZE_TFT_800600-1,0x0f);   
  1269.     Glib_Rectangle(200,LCD_YSIZE_TFT_800600+200,LCD_XSIZE_TFT_800600-201,SCR_YSIZE_TFT_800600-201,0x0f);   
  1270.     // 00
  1271.     // 0#
  1272.     Glib_Rectangle(LCD_XSIZE_TFT_800600,LCD_YSIZE_TFT_800600,SCR_XSIZE_TFT_800600-1,SCR_YSIZE_TFT_800600-1,0xff);   
  1273.     Glib_Line(LCD_XSIZE_TFT_800600,LCD_YSIZE_TFT_800600,SCR_XSIZE_TFT_800600-1,SCR_YSIZE_TFT_800600-1,0xff);        
  1274.     Glib_Line(LCD_XSIZE_TFT_800600,SCR_YSIZE_TFT_800600-1,SCR_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600,0xff);
  1275.     Uart_Printf("Virtual Screen Test(TFT 256 color). Press any key[ijkm\r]!n");
  1276.     MoveViewPort(MODE_TFT_8BIT_800600);
  1277.     Lcd_MoveViewPort(0,0,MODE_TFT_8BIT_800600);
  1278. //--------LCD FIFO interrupt test---------------------------------------------------START
  1279.     rLCDINTMSK|=3; // Mask LCD SUB Interrupt
  1280.     rINTMSK|=(BIT_LCD); // Mask LCD INT
  1281. //--------LCD FIFO interrupt test-----------------------------------------------------END
  1282.     Lcd_EnvidOnOff(0);
  1283.     Lcd_Port_Return();
  1284. }
  1285. void Test_Lcd_Tft_16Bit_800600(void)
  1286. {
  1287.     int i,j,k;
  1288. Lcd_Start(MODE_TFT_16BIT_800600);
  1289.     Uart_Printf("[TFT 64K COLOR(16bit/1pixel) LCD TEST]n");
  1290.     Glib_ClearScr(0, MODE_TFT_16BIT_800600);
  1291.     Glib_FilledRectangle(0,0,799,599,0xf800);    
  1292.     Uart_Printf("TFT 64K color mode test 1. Press any key!n");
  1293.     Uart_Getch();  
  1294.     Glib_ClearScr(0, MODE_TFT_16BIT_800600);
  1295.     Glib_Rectangle(0,0,799,479,0x07e0);   
  1296.     Glib_FilledRectangle(0,0,20,20,65535);   
  1297.     Glib_Rectangle(620,460,639,479,65535);   
  1298.     Glib_Line(0,0,639,479,0x1f);        
  1299.     Glib_Line(639,0,0,479,0xf800);
  1300.     Uart_Printf("TFT 64K color mode test 2. Press any key!n");
  1301.     Uart_Getch();  
  1302.     Glib_ClearScr(0, MODE_TFT_16BIT_800600);
  1303.     k=0;
  1304.     for(i=160;i<480;i+=20)
  1305.      for(j=120;j<360;j+=15)
  1306.      {
  1307.      while((rLCDCON5>>19)==2);
  1308.          Glib_FilledRectangle(i,j,i+19,j+14,k);
  1309.          k+=500;
  1310.      }
  1311.     // #0     
  1312.     // 00     
  1313.     Glib_Rectangle(0,0,319,239,65535);   
  1314.     Glib_Line(0,0,319,239,65535);        
  1315.     Glib_Line(0,239,319,0,65535);
  1316.     // 0#
  1317.     // 00
  1318.     Glib_Rectangle(0+320,0,319+320,239,255);
  1319.     Glib_Line(0+320,0,319+320,239,255);        
  1320.     Glib_Line(0+320,239,319+320,0,255);
  1321.     // 00
  1322.     // #0
  1323.     Glib_Rectangle(0,0+240,319,239+240,255);
  1324.     Glib_Line(0,0+240,319,239+240,255);        
  1325.     Glib_Line(0,239+240,319,0+240,255);
  1326.     // 00
  1327.     // 0#
  1328.     Glib_Rectangle(0+320,0+240,319+320,239+240,255);
  1329.     Glib_Line(0+320,0+240,319+320,239+240,255);     
  1330.     Glib_Line(0+320,239+240,319+320,0+240,255);
  1331.     Glib_Rectangle(50+320,50+240,269+320,189+240,255);
  1332.     Uart_Printf("TFT 64K color mode test 3. Press any key!n");
  1333.     Uart_Getch();  
  1334.     Glib_ClearScr(0, MODE_TFT_16BIT_800600);
  1335.     k=0;
  1336.     for(i=320;i<960;i+=40)
  1337.      for(j=240;j<720;j+=30)
  1338.      {
  1339.          Glib_FilledRectangle(i,j,i+39,j+29,k);
  1340.          k+=500;
  1341.      }
  1342.     // #0     
  1343.     // 00     
  1344.     Glib_Rectangle(0,0,639,479,65535);   
  1345.     Glib_Line(0,0,639,479,65535);        
  1346.     Glib_Line(0,479,639,0,65535);
  1347.     // 0#
  1348.     // 00
  1349.     Glib_Rectangle(0+640,0,639+640,479,65535);   
  1350.     Glib_Line(0+640,0,639+640,479,65535);        
  1351.     Glib_Line(0+640,479,639+640,0,65535);
  1352.     // 00
  1353.     // #0
  1354.     Glib_Rectangle(0,0+480,639,479+480,65535);   
  1355.     Glib_Line(0,0+480,639,479+480,65535);        
  1356.     Glib_Line(0,479+480,639,0+480,65535);
  1357.     // 00
  1358.     // 0#
  1359.     Glib_Rectangle(0+640,0+480,639+640,479+480,65535);   
  1360.     Glib_Line(0+640,0+480,639+640,479+480,65535);        
  1361.     Glib_Line(0+640,479+480,639+640,0+480,65535);
  1362.     Glib_Rectangle(50+640,50+480,639+640-50,479+480-50,65535);   
  1363.     Uart_Printf("Virtual Screen Test(TFT 64K color). Press any key[ijkm\r]!n");
  1364.     MoveViewPort(MODE_TFT_16BIT_800600);
  1365.     Lcd_MoveViewPort(0,0,MODE_TFT_16BIT_800600);
  1366.     Lcd_EnvidOnOff(0);
  1367.     Lcd_Port_Return();
  1368. }
  1369. void Test_Lcd_Tft_16Bit_800600_On(void)
  1370. {
  1371.     int i,j,k=0;
  1372.     Lcd_Start(MODE_TFT_16BIT_800600);
  1373.     Uart_Printf("n[TFT LCD(800x600 ,16bpp) WILL BE TURNED ON EVEN DURING OTHER TEST]n");
  1374.     Uart_Printf("If you'd like to off the TFT LCD, then excute other LCD test program,n");     
  1375.     for(i=0;i<LCD_XSIZE_TFT_800600;i+=40)
  1376. for(j=0;j<LCD_YSIZE_TFT_800600;j+=30)
  1377.     Glib_FilledRectangle(i,j,i+39,j+29,(k%65535));
  1378.     k+=150;
  1379. }
  1380. }
  1381. void Test_Lcd_Palette_Ram(void)
  1382. {
  1383.     int i;
  1384.     U32 *palette;
  1385.     Uart_Printf("Palette ram test has started.n");
  1386.     Uart_Printf("LCD Display may be stopped.n");
  1387.     Lcd_EnvidOnOff(0);
  1388. //    Uart_Printf("VSTATUS : %x, HSTATUS : %x n", (rLCDCON5&(15<<3))>>15, (rLCDCON5&(13<<3))>>13);
  1389.     palette=(U32 *)PALETTE;
  1390.     for(i=0;i<256;i++)
  1391.     {
  1392. *palette++=i;
  1393.     }
  1394.     palette=(U32 *)PALETTE;
  1395.     for(i=0;i<256;i++)
  1396.     {
  1397. if(((*palette++)&0xffff) != i)
  1398. Uart_Printf("Error is occured during palette ram testing at [0x%x]n", i);
  1399.     }
  1400.     Uart_Printf("Palette Ram Test OK!!!n");
  1401.     Uart_Printf("Press any key to continue.n");
  1402.     Uart_Getch();
  1403. }
  1404. void Test_Lcd_Underrun(void)
  1405. {
  1406. Uart_Printf("Test heavy bus access by write buffer!!n");
  1407. Uart_Printf("Select LCD : 1-240x320(LCC3600)[D]   2-800x600(General)n");
  1408. if (Uart_Getch() == '2')
  1409. Test_Lcd_Tft_16Bit_800600_On();
  1410. else Test_Lcd_Tft_8Bit_240320_On();
  1411. Uart_Printf("If you want to stop test and continue test, then Press any key!n");
  1412. while(1){
  1413.     SDRAMtest();
  1414. if(Uart_GetKey()) break;
  1415.     }
  1416. }