Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: DRIVERS/CHEM_BOX_COMMON.cpp
- Revision:
- 3:cb48919cd5e8
- Parent:
- 2:73a028278c5c
- Child:
- 4:e3eda81c97ae
--- a/DRIVERS/CHEM_BOX_COMMON.cpp	Mon Aug 31 13:00:37 2020 +0000
+++ b/DRIVERS/CHEM_BOX_COMMON.cpp	Thu Aug 05 02:12:29 2021 +0000
@@ -20,6 +20,11 @@
 
 DigitalOut AIO_DAC2_CS(p23);     
 
+DigitalOut RED_LED(p20);
+
+DigitalOut GREEN_LED(p14);
+ 
+
 DigitalOut MFC_POWER_CONTROL(p22); 
 
 PwmOut FAN_CONTROL(p21);       
@@ -30,13 +35,11 @@
 
 SPI SPI0(p11,p12,p13); 
 
-DigitalOut SmartSwitch_SS(p14); 
 
 BusOut TEMP_SENSE_ADDRESS(p15,p16,p17,p18);
 
 DigitalOut TEMP_SENSE_CS(p19); 
 
-DigitalIn LCD_SWITCH(p20); 
 
 MODSERIAL RS232_0(p9, p10, 1024, 1024); 
 
@@ -112,8 +115,6 @@
     
     SPI0.frequency(4000000);
     
-    SmartSwitch_SS = 1; 
-    
     TEMP_SENSE_ADDRESS = 0;
     
     TEMP_SENSE_CS = 1;
@@ -133,8 +134,7 @@
     Thermocouple_OC= 0;     
 
     InitTerminal();
-    
-    GFX_Init();
+
 }
 
 
@@ -356,6 +356,8 @@
 
 }
 
+
+
 float Read4to20(uint8_t Channel)
 {
 
@@ -367,7 +369,17 @@
 }
 
 
-static uint16_t ReadRawADC(uint8_t Channel)
+float ReadBP_AnalogInput()
+{
+
+    return ((float)(ReadRawADC(15)) /4095.0) * 10.0;
+
+}
+
+
+
+
+static uint16_t ReadRawADC_Single(uint8_t Channel)
 {
     uint8_t ControlByte[3];
     uint8_t ADC_Data[3];
@@ -402,6 +414,22 @@
         
 }
 
+#define FILTER_SIZE 64
+
+static uint16_t ReadRawADC(uint8_t Channel)
+{
+    uint32_t Value = 0;
+    
+    for(int i=0;i<FILTER_SIZE;i++)
+    {
+        Value+=ReadRawADC_Single(Channel);
+    }
+    
+    Value = Value / FILTER_SIZE;
+    
+    return Value;
+    
+}
 
 void WriteMFC_AnalogOut(uint8_t Channel,float Value)
 {
@@ -433,6 +461,18 @@
         WriteRAW_DAC_Value(8+Channel,(uint16_t)((Value/5.0)*4095));
 }
 
+void WriteBP_AnalogOut(float Value)
+{
+        
+    if(Value >10.0)
+        Value = 10.0;
+     
+    if(Value<0.0)
+        Value = 0.0;
+
+        WriteRAW_DAC_Value(12,(uint16_t)((Value/10.0)*4095));
+}
+
 
 void WriteRAW_DAC_Value(uint8_t Channel,uint16_t Data)
 {
@@ -442,7 +482,10 @@
     if(Channel<8)
         AIO_DAC1_CS = 0;
     else
+    {
         AIO_DAC2_CS = 0;
+        Channel -= 8;
+     }   
 
     SPI0.format(8,1);   //The DAC requires mode 0,1
    
@@ -505,6 +548,8 @@
 void TerminalCmd_AOUT(char *arg);
 void TerminalCmd_Reset(char *arg);
 void TerminalCmd_ECHO_OFF(char *arg);
+void TerminalCmd_BPOUT(char *arg);
+void TerminalCmd_BPIN(char *arg);
 
 //Populate this array with the callback functions and their terminal command string
 TerminalCallbackRecord MyTerminalCallbackRecords[] ={   {"reset",TerminalCmd_Reset,"Resets the CHEM box"},
@@ -549,6 +594,11 @@
                                                         
                                                         {"MFCOFF",TerminalCmd_MFCOFF,"Turns off the MFC power"},
                                                         
+                                                        {"BPOUT",TerminalCmd_BPOUT,"Sets a control voltage between 0 and 10 for the backpressure regulator.  I.E. BPOUT 1.21"},
+                                                    
+                                                        {"BPIN",TerminalCmd_BPIN,"Reads the Back pressure regulator feedback.   I.E. BPIN "},
+                                                    
+                                                        
                                                         {"ECHO_OFF",TerminalCmd_ECHO_OFF,"Disables echoing of characters"}
                                                     };
 
@@ -655,6 +705,28 @@
     }
 }
 
+
+void TerminalCmd_BPOUT(char *arg)
+{
+    float Data = 0.0;
+    
+    if(sscanf(arg,"%f",&Data) == 1)
+    {
+          WriteBP_AnalogOut(Data);
+    }
+    else
+    {
+        PC.printf("Bad argument... %s.  value should be a float between 0.0 and 10.0.   i.e. BPOUT 1.25",arg);
+    }
+}
+
+void TerminalCmd_BPIN(char *arg)
+{
+    float Data;
+    Data =   ReadBP_AnalogInput();
+    PC.printf("BPIN:%.3f",Data);
+}
+
 void TerminalCmd_4TO20(char *arg)
 {
     int Channel = -1;
@@ -900,14 +972,14 @@
      if(sscanf(arg,"%d",&Channel) == 1)
         {
                 Temp = ReadThermocouple(Channel);
-                 PC.printf("TEMP:%d:%.2f\r\n",Channel,Temp);
+                 PC.printf("TEMP:%d:%.2f:%d\r\n",Channel,Temp,Thermocouple_OC);
         }
         else
         {
             for(Channel = 0; Channel<12;Channel++)
             {
                  Temp = ReadThermocouple(Channel);
-                 PC.printf("TEMP:%d:%.2f\r\n",Channel,Temp);
+                  PC.printf("TEMP:%d:%.2f:%d\r\n",Channel,Temp,Thermocouple_OC);
             }
         }
 }
@@ -1126,729 +1198,3 @@
 
 
 
-
-//    _      _____ _____     _______ _____            _____  _    _ _____ _____  _____ 
-//   | |    / ____|  __ \   / / ____|  __ \     /\   |  __ \| |  | |_   _/ ____|/ ____|
-//   | |   | |    | |  | | / / |  __| |__) |   /  \  | |__) | |__| | | || |    | (___  
-//   | |   | |    | |  | |/ /| | |_ |  _  /   / /\ \ |  ___/|  __  | | || |     \___ \ 
-//   | |___| |____| |__| / / | |__| | | \ \  / ____ \| |    | |  | |_| || |____ ____) |
-//   |______\_____|_____/_/   \_____|_|  \_\/_/    \_\_|    |_|  |_|_____\_____|_____/ 
-//                                                                                     
-//                                                                                     
- 
-void SmartSwitch_Reset();
-void SmartSwitch_SetBrightness(uint8_t Brightness);
-void InitSmartSwitch();
-void PowerUpSmartSwitch();
-void PowerDownSmartSwitch();
-void SmartSwitchWriteByte(uint8_t DataOut);
-void SmartSwitch_SetBackLightColor2(uint8_t RGB);
-void SmartSwitch_ImageDump(uint8_t *Img);
-void SmartSwitchClear();
-
- 
- 
- 
-#define BACK_BUFFER_SIZE_X    (64)
-#define BACK_BUFFER_SIZE_Y    (32)
-
-#define PHYSICAL_DISPLAY_XRES               (uint8_t)(64)
-#define PHYSICAL_DISPLAY_YRES               (uint8_t)(32)
-#define DISPLAY_X_WIDTH_BYTE                (PHYSICAL_DISPLAY_XRES>>3)
-#define DISPLAY_BUFFER_TOTAL_SIZE           (DISPLAY_X_WIDTH_BYTE*PHYSICAL_DISPLAY_YRES*2)
-#define GREEN_DATA_BUFFER_OFFSET            (DISPLAY_X_WIDTH_BYTE * PHYSICAL_DISPLAY_YRES)
-#define PHYSICAL_DISPLAY_X_WIDTH_IN_BYTES   (PHYSICAL_DISPLAY_XRES>>3)
-#define PHYSICAL_DISPLAY_PLANE_BUFFER_SIZE  (PHYSICAL_DISPLAY_X_WIDTH_IN_BYTES * PHYSICAL_DISPLAY_YRES)
-#define PHYSICAL_DISPLAY_BUFFER_TOTAL_SIZE  (PHYSICAL_DISPLAY_X_WIDTH_IN_BYTES * PHYSICAL_DISPLAY_YRES*2) 
- 
-#define SMART_SWITCH_CMD_DISPLAY_DATA           0x55
-#define SMART_SWITCH_CMD_SET_BACKLIGHT_COLOR    0x40
-#define SMART_SWITCH_CMD_SET_BRIGHTNESS         0x41
-#define SMART_SWITCH_CMD_RESET                  0x5E
-#define SMART_SWITCH_CMD_RESET_PARAMETER        0x03
-
-#define SMART_SWITCH_BACKLIGHT_RED              (0x03<<4)
-#define SMART_SWITCH_BACKLIGHT_YELLOW           (0x03<<4)|(0x03<<2)
-#define SMART_SWITCH_BACKLIGHT_GREEN            (0x03<<2)
- 
- #define GFX_MAX_STRING_LEN 32
- 
-void SmartSwitch_ImageDump(uint8_t *Img)
-{
-   int i;
-   
-   SPI1.format(8,2);
-    
-   SmartSwitch_SS = 0;
-   SmartSwitchWriteByte(SMART_SWITCH_CMD_DISPLAY_DATA);
-   
-   for(i=0;i<256;i++)
-   {
-    SmartSwitchWriteByte(Img[i]);
-   }
-   
-   SmartSwitch_SS = 1;
-}
-
-void SmartSwitchClear()
-{
-   int i;
-   
-   
-   SPI1.format(8,2);
-   
-   SmartSwitch_SS = 0;
-   SmartSwitchWriteByte(SMART_SWITCH_CMD_DISPLAY_DATA);
-   
-   for(i=0;i<256;i++)
-   {
-     SmartSwitchWriteByte(0x00);
-   }
-   
-   SmartSwitch_SS = 1;
-}
-
-void SmartSwitch_Reset()
-{
-   
-   SPI1.format(8,2);
-   
-   SmartSwitch_SS = 0;
-   SmartSwitchWriteByte(SMART_SWITCH_CMD_RESET);
-   SmartSwitchWriteByte(SMART_SWITCH_CMD_RESET_PARAMETER);
-   SmartSwitch_SS = 1;
-}
-
-void SmartSwitch_SetBackLightColor(uint8_t Red,uint8_t Green,uint8_t Blue)
-{
-  
-   SPI1.format(8,2);
-  
-   SmartSwitch_SS = 0;
-   SmartSwitchWriteByte(SMART_SWITCH_CMD_SET_BACKLIGHT_COLOR);
-   SmartSwitchWriteByte(Red<<6 | Green<<4 | Blue <<2 | 0x3);
-   SmartSwitch_SS = 1;
-}
-
-void SmartSwitch_SetBackLightColor2(uint8_t RGB)
-{
-   SPI1.format(8,2);
-   
-   SmartSwitch_SS = 0;
-   SmartSwitchWriteByte(SMART_SWITCH_CMD_SET_BACKLIGHT_COLOR);
-   SmartSwitchWriteByte(RGB<<2 | 0x3);
-   SmartSwitch_SS = 1;
-}
-
-void SmartSwitch_SetBrightness(uint8_t Brightness)
-{
-   SPI1.format(8,2);
-   
-   SmartSwitch_SS = 0;
-   SmartSwitchWriteByte(SMART_SWITCH_CMD_SET_BRIGHTNESS);
-   SmartSwitchWriteByte(Brightness<<5 | 0x1F);
-   SmartSwitch_SS = 1;
-}
-
-void InitSmartSwitch()
-{
-   SmartSwitch_SS = 1;
-   SmartSwitch_Reset();
-}
-
-void SmartSwitchWriteByte(uint8_t DataOut)
-{
-
-   SPI1.write(DataOut);
-
-}
-
-
-//Linking Functions to Physical Screen
-//***********************************************************************************
-
-void GFX_InitPhysicalScreen()
-{
-     InitSmartSwitch();
-}
-
-
-const uint8_t BitReverseTable[256] =
-{
-0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
-0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
-0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
-0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
-0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
-0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
-0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
-0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
-0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
-0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
-0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
-0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
-0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
-0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
-0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
-0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
-0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
-0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
-0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
-0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
-0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
-0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
-0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
-0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
-0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
-0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
-0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
-0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
-0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
-0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
-0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
-0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
-};
-
-void GFX_DumpRenderContextToPhysicalScreen(RenderContext *Image)
-{
-   int x,y;
-   uint8_t  NextByteOut; 
-   
-   SPI1.format(8,2);
-   
-   SmartSwitch_SS = 0;
-   SmartSwitchWriteByte(SMART_SWITCH_CMD_DISPLAY_DATA);
-   
-   for(y=0;y<PHYSICAL_DISPLAY_YRES;y++)
-   {
-       for(x=0;x<PHYSICAL_DISPLAY_X_WIDTH_IN_BYTES;x++)
-       {
-          //Need to rotate the display 180 degrees
-          NextByteOut = Image->RenderPlane.BitPlaneSpace[(((PHYSICAL_DISPLAY_YRES - y - 1) * PHYSICAL_DISPLAY_X_WIDTH_IN_BYTES)) + x];
-          SmartSwitchWriteByte(BitReverseTable[NextByteOut]);
-       }
-   }
-   SmartSwitch_SS = 1;
-}
-
-
-//Device Independent Functions
-//***********************************************************************************
-
-//Reserve Space for the backbuffer
-
-RenderContext BackBuffer;
-uint8_t BackBufferRenderPlaneSpace[PHYSICAL_DISPLAY_PLANE_BUFFER_SIZE];
-
-int16_t GFX_Drawcharacter(RenderContext *Image, uint8_t character, int16_t StartX, int16_t StartY, GFXFont *MyFont);
-int16_t GFX_GetStringWidth(char * String,GFXFont * MyFont);
-
-//FontData
-
-#define FONT5x7_FONT_WIDTH 5
-#define FONT5x7_FONT_HEIGHT 8
-#define FONT5x7_FONT_ELEMENTS 128
-#define FONT5x7_FONT_COLUMN_SIZE_IN_BYTE  1
-
-uint8_t FontTable_Font5x7 [640] = {
-0x00 ,0x08 ,0x0C ,0xFA ,0x81 ,0xFA ,0x0C ,0x08 ,0x00 ,0x00 ,0x00 ,0x10 ,0x30 ,0x5F ,0x81 ,0x5F ,
-0x30 ,0x10 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0xBE ,0x00 ,0x00 ,0x00 ,0x00 ,0x06 ,0x00 ,0x06 ,0x00 ,0x00 ,0x28 ,
-0xFE ,0x28 ,0xFE ,0x28 ,0x48 ,0xFE ,0x54 ,0xFE ,0x24 ,0x06 ,0xE6 ,0x10 ,0xCE ,0xC0 ,0x60 ,0x92 ,
-0x94 ,0x78 ,0x10 ,0x06 ,0x00 ,0x00 ,0x00 ,0x00 ,0x7C ,0x82 ,0x00 ,0x00 ,0x00 ,0x82 ,0x7C ,0x00 ,
-0x00 ,0x00 ,0x54 ,0x38 ,0xFE ,0x38 ,0x54 ,0x10 ,0x10 ,0x7C ,0x10 ,0x10 ,0x80 ,0x60 ,0x00 ,0x00 ,
-0x00 ,0x10 ,0x10 ,0x10 ,0x10 ,0x10 ,0x80 ,0x00 ,0x00 ,0x00 ,0x00 ,0xC0 ,0x30 ,0x0C ,0x02 ,0x00 ,
-0x7C ,0xA2 ,0x92 ,0x8A ,0x7C ,0x88 ,0x84 ,0xFE ,0x80 ,0x80 ,0x84 ,0xC2 ,0xA2 ,0x92 ,0x8C ,0x44 ,
-0x92 ,0x92 ,0x92 ,0x6C ,0x10 ,0x18 ,0x14 ,0xFE ,0x10 ,0x4E ,0x8A ,0x8A ,0x8A ,0x72 ,0x7C ,0x92 ,
-0x92 ,0x92 ,0x64 ,0x02 ,0xC2 ,0x22 ,0x12 ,0x0E ,0x6C ,0x92 ,0x92 ,0x92 ,0x6C ,0x0C ,0x92 ,0x92 ,
-0x92 ,0x7C ,0x48 ,0x00 ,0x00 ,0x00 ,0x00 ,0x80 ,0x68 ,0x00 ,0x00 ,0x00 ,0x10 ,0x28 ,0x44 ,0x82 ,
-0x00 ,0x28 ,0x28 ,0x28 ,0x28 ,0x00 ,0x82 ,0x44 ,0x28 ,0x10 ,0x00 ,0x04 ,0x02 ,0xA2 ,0x12 ,0x0C ,
-0x3C ,0x42 ,0x9A ,0xA2 ,0x1C ,0xF8 ,0x14 ,0x12 ,0x14 ,0xF8 ,0xFE ,0x92 ,0x92 ,0x92 ,0x6C ,0x7C ,
-0x82 ,0x82 ,0x82 ,0x44 ,0xFE ,0x82 ,0x82 ,0x44 ,0x38 ,0xFE ,0x92 ,0x92 ,0x82 ,0x82 ,0xFE ,0x12 ,
-0x12 ,0x02 ,0x02 ,0x7C ,0x92 ,0x92 ,0x92 ,0x74 ,0xFE ,0x10 ,0x10 ,0x10 ,0xFE ,0x82 ,0x82 ,0xFE ,
-0x82 ,0x82 ,0x40 ,0x80 ,0x80 ,0x80 ,0x7E ,0xFE ,0x10 ,0x28 ,0x44 ,0x82 ,0xFE ,0x80 ,0x80 ,0x80 ,
-0x00 ,0xFE ,0x04 ,0x08 ,0x04 ,0xFE ,0xFE ,0x04 ,0x18 ,0x20 ,0xFE ,0x7C ,0x82 ,0x82 ,0x82 ,0x7C ,
-0xFE ,0x12 ,0x12 ,0x12 ,0x0C ,0x7C ,0x82 ,0xA2 ,0xC2 ,0xFC ,0xFE ,0x12 ,0x32 ,0x52 ,0x8C ,0x4C ,
-0x92 ,0x92 ,0x92 ,0x64 ,0x02 ,0x02 ,0xFE ,0x02 ,0x02 ,0x7E ,0x80 ,0x80 ,0x80 ,0x7E ,0x3E ,0x40 ,
-0x80 ,0x40 ,0x3E ,0xFE ,0x40 ,0x20 ,0x40 ,0xFE ,0xC6 ,0x28 ,0x10 ,0x28 ,0xC6 ,0x02 ,0x04 ,0xF8 ,
-0x04 ,0x02 ,0xC2 ,0xA2 ,0x92 ,0x8A ,0x86 ,0xFE ,0x82 ,0x82 ,0x00 ,0x00 ,0x02 ,0x0C ,0x30 ,0xC0 ,
-0x00 ,0x82 ,0x82 ,0xFE ,0x00 ,0x00 ,0x04 ,0x02 ,0x04 ,0x00 ,0x00 ,0x80 ,0x80 ,0x80 ,0x80 ,0x80 ,
-0x06 ,0x08 ,0x00 ,0x00 ,0x00 ,0x70 ,0x88 ,0x88 ,0x70 ,0x80 ,0xFC ,0x90 ,0x90 ,0x60 ,0x00 ,0x70 ,
-0x88 ,0x88 ,0x88 ,0x00 ,0x60 ,0x90 ,0x90 ,0x7C ,0x80 ,0x70 ,0xA8 ,0xA8 ,0x90 ,0x00 ,0x10 ,0xF8 ,
-0x14 ,0x04 ,0x00 ,0x98 ,0xA4 ,0xA4 ,0x78 ,0x00 ,0xFC ,0x20 ,0x10 ,0xE0 ,0x00 ,0xE8 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x40 ,0x80 ,0x80 ,0x74 ,0x00 ,0xFC ,0x20 ,0x50 ,0x88 ,0x00 ,0xFC ,0x00 ,0x00 ,0x00 ,
-0x00 ,0xF0 ,0x08 ,0x30 ,0x08 ,0xF0 ,0xF8 ,0x08 ,0x08 ,0xF0 ,0x00 ,0x70 ,0x88 ,0x88 ,0x70 ,0x00 ,
-0xF8 ,0x24 ,0x24 ,0x18 ,0x00 ,0x18 ,0x24 ,0x24 ,0xF8 ,0x00 ,0xF0 ,0x08 ,0x08 ,0x10 ,0x00 ,0x90 ,
-0xA8 ,0xA8 ,0x48 ,0x00 ,0x08 ,0x7C ,0x88 ,0x00 ,0x00 ,0x78 ,0x80 ,0x80 ,0x78 ,0x00 ,0x38 ,0x40 ,
-0x80 ,0x40 ,0x38 ,0x78 ,0x80 ,0x40 ,0x80 ,0x78 ,0x88 ,0x50 ,0x20 ,0x50 ,0x88 ,0x08 ,0x10 ,0xE0 ,
-0x10 ,0x08 ,0xC8 ,0xA8 ,0x98 ,0x00 ,0x00 ,0x10 ,0x6C ,0x82 ,0x00 ,0x00 ,0xFE ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x82 ,0x6C ,0x10 ,0x00 ,0x00 ,0x08 ,0x04 ,0x08 ,0x10 ,0x08 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00  };
-
-uint8_t CharacterWidthTable_Font5x7   [128] = {
-0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,
-0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,
-0x05 ,0x01 ,0x03 ,0x05 ,0x05 ,0x05 ,0x05 ,0x01 ,0x02 ,0x02 ,0x05 ,0x05 ,0x02 ,0x05 ,0x01 ,0x04 ,
-0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x01 ,0x01 ,0x04 ,0x04 ,0x04 ,0x05 ,
-0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x04 ,0x05 ,0x05 ,0x05 ,
-0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x05 ,0x03 ,0x04 ,0x05 ,0x03 ,0x05 ,
-0x02 ,0x05 ,0x04 ,0x04 ,0x05 ,0x04 ,0x04 ,0x04 ,0x04 ,0x01 ,0x04 ,0x04 ,0x01 ,0x05 ,0x04 ,0x05 ,
-0x05 ,0x05 ,0x04 ,0x04 ,0x03 ,0x04 ,0x05 ,0x05 ,0x05 ,0x05 ,0x03 ,0x03 ,0x01 ,0x05 ,0x05 ,0x05  };
-
-#define FONT3x5_FONT_WIDTH 3
-#define FONT3x5_FONT_HEIGHT 5
-#define FONT3x5_ELEMENTS 128
-#define FONT3x5_FONT_COLUMN_SIZE_IN_BYTE  1
-
-
-uint8_t FontTable_Font3x5 [384] = {
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x17 ,0x00 ,0x00 ,0x03 ,0x00 ,0x03 ,0x0E ,0x1F ,0x0E ,0x14 ,0x1F ,0x0A ,0x00 ,
-0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x00 ,0x0E ,0x11 ,0x00 ,0x11 ,0x0E ,0x00 ,0x15 ,0x0E ,
-0x15 ,0x04 ,0x0E ,0x04 ,0x10 ,0x08 ,0x00 ,0x04 ,0x04 ,0x04 ,0x10 ,0x00 ,0x00 ,0x18 ,0x04 ,0x03 ,
-0x0E ,0x11 ,0x0E ,0x12 ,0x1F ,0x10 ,0x19 ,0x15 ,0x16 ,0x11 ,0x15 ,0x0A ,0x07 ,0x04 ,0x1F ,0x17 ,
-0x15 ,0x09 ,0x1E ,0x15 ,0x18 ,0x01 ,0x1D ,0x03 ,0x1B ,0x15 ,0x1B ,0x06 ,0x15 ,0x0E ,0x0A ,0x00 ,
-0x00 ,0x10 ,0x0A ,0x00 ,0x04 ,0x0A ,0x11 ,0x00 ,0x00 ,0x00 ,0x11 ,0x0A ,0x04 ,0x01 ,0x15 ,0x02 ,
-0x09 ,0x15 ,0x0E ,0x1E ,0x05 ,0x1E ,0x1F ,0x15 ,0x0A ,0x0E ,0x11 ,0x0A ,0x1F ,0x11 ,0x0E ,0x1F ,
-0x15 ,0x11 ,0x1F ,0x05 ,0x05 ,0x1E ,0x15 ,0x1D ,0x1F ,0x04 ,0x1F ,0x11 ,0x1F ,0x11 ,0x08 ,0x10 ,
-0x0F ,0x1F ,0x06 ,0x19 ,0x1F ,0x10 ,0x10 ,0x1F ,0x02 ,0x1F ,0x1F ,0x06 ,0x1F ,0x1F ,0x11 ,0x1F ,
-0x1F ,0x05 ,0x07 ,0x1F ,0x19 ,0x1F ,0x1F ,0x0D ,0x16 ,0x16 ,0x15 ,0x1D ,0x01 ,0x1F ,0x01 ,0x1F ,
-0x10 ,0x1F ,0x0F ,0x10 ,0x0F ,0x1F ,0x08 ,0x1F ,0x1B ,0x04 ,0x1B ,0x01 ,0x1E ,0x01 ,0x19 ,0x15 ,
-0x13 ,0x1F ,0x11 ,0x00 ,0x03 ,0x0C ,0x10 ,0x11 ,0x1F ,0x00 ,0x02 ,0x01 ,0x02 ,0x10 ,0x10 ,0x10 ,
-0x01 ,0x02 ,0x00 ,0x08 ,0x14 ,0x1C ,0x1F ,0x14 ,0x08 ,0x0C ,0x12 ,0x12 ,0x08 ,0x14 ,0x1F ,0x0C ,
-0x16 ,0x16 ,0x14 ,0x0E ,0x05 ,0x06 ,0x15 ,0x0F ,0x1F ,0x04 ,0x18 ,0x1D ,0x00 ,0x00 ,0x10 ,0x0D ,
-0x00 ,0x1F ,0x0C ,0x12 ,0x1F ,0x00 ,0x00 ,0x1C ,0x08 ,0x1C ,0x1C ,0x02 ,0x1C ,0x0C ,0x12 ,0x0C ,
-0x1E ,0x05 ,0x02 ,0x02 ,0x05 ,0x1E ,0x1C ,0x02 ,0x04 ,0x14 ,0x1A ,0x00 ,0x04 ,0x1E ,0x04 ,0x1E ,
-0x10 ,0x1E ,0x0E ,0x10 ,0x0E ,0x1C ,0x08 ,0x1C ,0x12 ,0x0C ,0x12 ,0x12 ,0x0C ,0x02 ,0x12 ,0x1A ,
-0x16 ,0x04 ,0x0E ,0x11 ,0x1F ,0x00 ,0x00 ,0x11 ,0x0E ,0x04 ,0x02 ,0x02 ,0x04 ,0x00 ,0x00 ,0x00  };
-
-
-uint8_t CharacterWidthTable_Font3x5 [128] = {
-0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,
-0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,
-0x03 ,0x01 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x01 ,0x02 ,0x03 ,0x03 ,0x03 ,0x02 ,0x03 ,0x01 ,0x03 ,
-0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x01 ,0x02 ,0x03 ,0x03 ,0x03 ,0x03 ,
-0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,
-0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x02 ,0x03 ,0x02 ,0x03 ,0x03 ,
-0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x01 ,0x03 ,0x03 ,0x01 ,0x03 ,0x03 ,0x03 ,
-0x03 ,0x03 ,0x03 ,0x02 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x03 ,0x01 ,0x03 ,0x03 ,0x03  };
-
-GFXFont Font5x7;
-GFXFont Font3x5;
-
-void GFX_Init()
-{
-    
-    //Staticially Allocate and setup the backbuffer space;
-    
-    BackBuffer.RenderPlane.BitPlaneSpace = &BackBufferRenderPlaneSpace[0];
-   
-    BackBuffer.SizeX = BACK_BUFFER_SIZE_X;
-    BackBuffer.SizeY = BACK_BUFFER_SIZE_Y;
-
-    BackBuffer.RenderPlane.SizeX = BACK_BUFFER_SIZE_X;
-    BackBuffer.RenderPlane.SizeY = BACK_BUFFER_SIZE_Y;
-
-    
-    GFX_FullDisplayBufferClear(&BackBuffer);
-
-    //Initialize the stock fonts
-
-    Font5x7.CharacterWidthTable = (uint8_t *)CharacterWidthTable_Font5x7;
-    Font5x7.FontBuffer = (uint8_t *)FontTable_Font5x7;
-    Font5x7.FontHeight = FONT5x7_FONT_HEIGHT;
-    Font5x7.FontWidth = FONT5x7_FONT_WIDTH;
-    Font5x7.BytesPerColumn = FONT5x7_FONT_COLUMN_SIZE_IN_BYTE;
-
-    Font3x5.CharacterWidthTable = (uint8_t *)CharacterWidthTable_Font3x5;
-    Font3x5.FontBuffer = (uint8_t *)FontTable_Font3x5;
-    Font3x5.FontHeight = FONT3x5_FONT_HEIGHT;
-    Font3x5.FontWidth = FONT3x5_FONT_WIDTH;
-    Font3x5.BytesPerColumn = FONT3x5_FONT_COLUMN_SIZE_IN_BYTE;
-    
-    GFX_InitPhysicalScreen();
-    
-}
-
-
-
-void GFX_FullDisplayBufferClear(RenderContext *Image)
-{
-    BitPlane_Clear(&Image->RenderPlane);
-}
-
-
-void GFX_PutPixel(RenderContext *Image, int16_t x, int16_t y)
-{
-    if((x<Image->SizeX) && (y<Image->SizeY) && (x>=0) && (y>=0))
-    {
-         BitPlane_Put(&Image->RenderPlane,Image->SizeX-x-1,Image->SizeY-y-1,TRUE);
-    }
-}
-
-
-
-#ifndef _INLINE_GFX_GET_PIXEL
-uint8_t GFX_GetPixel(RenderContext *Image, int16_t x, int16_t y)
-{
-    uint8_t PixelColor = 0;
-    
-    if((x<Image->SizeX) && (y<Image->SizeY) && (x>=0) && (y>=0))
-    {
-        
-        PixelColor = BitPlane_Get(&Image->RenderPlane,x,y);
-    }
-    
-    return PixelColor;
-}
-#endif
-
-
-void GFX_DrawHline(RenderContext *Image, int16_t XStart, int16_t XStop, int16_t Y)
-{
-    int16_t LineStart;
-    int16_t LineStop;
-    uint16_t i;
-    
-    if((Y<Image->SizeY)  && (Y>=0))
-    {
-        if(XStart>XStop)
-        {
-            LineStart = XStop;    
-            LineStop = XStart;
-        }    
-        else
-        {
-            LineStart = XStart;    
-            LineStop = XStop;
-        }
-        
-        if(LineStart<0)
-        {
-            LineStart = 0;
-        }
-    
-        if(LineStop>Image->SizeX)
-        {
-            LineStop =     Image->SizeX-1;
-        }
-    
-        if(LineStart == LineStop)
-        {
-            GFX_PutPixel(Image,LineStart,Y);    
-        }
-        else
-        {
-            for(i=LineStart; i<=LineStop ; i++)
-            {
-                GFX_PutPixel(Image,i,Y);    
-            }
-        }    
-    }    
-    
-}
-
-
-
- void GFX_DrawVline(RenderContext *Image, int16_t YStart, int16_t YStop, int16_t X)
-{
-    int16_t LineStart;
-    int16_t LineStop;
-    int16_t i;
-
-    if((X<Image->SizeX) && (X>=0))
-    {
-    
-        if(YStart>YStop)
-        {
-            LineStart = YStop;    
-            LineStop = YStart;
-        }    
-        else
-        {
-            LineStart = YStart;    
-            LineStop = YStop;
-        }
-        
-        if(LineStart<0)
-        {
-            LineStart = 0;
-        }
-    
-
-        if(LineStop>Image->SizeY)
-        {
-            LineStop =     Image->SizeY-1;
-        }
-    
-        for(i=LineStart; i<=LineStop ; i++)
-        {
-            GFX_PutPixel(Image,X,i);    
-        }    
-    }    
-}
-
-
-void GFX_DrawLine(RenderContext * Image, int16_t X1,int16_t Y1, int16_t X2,int16_t Y2)
-{
-    //A simple Implementation of Bresenham's line Algorithm
-    int16_t StartX,StopX,StartY,StopY;
-    int16_t dX,dY;
-    int16_t Y_Numerator;
-    int16_t X_Numerator;
-    int16_t Y;
-    int16_t X;
-    int16_t i;
-    uint8_t YDir = 0;
-    //First Make sure that it is left to right
-    //If not them flop them
-    if(X2>X1)
-    {
-        StartX = X1;
-        StopX = X2;    
-        StartY = Y1;
-        StopY = Y2;    
-    }    
-    else
-    {
-        StartX = X2;
-        StopX = X1;    
-        StartY = Y2;
-        StopY = Y1;    
-    }
-    GFX_PutPixel(Image, StopX,StopY);
-    if(StopY>=StartY)
-    {
-        dY = StopY - StartY;
-        YDir = 0;
-    }
-    else
-    {
-        dY = StartY - StopY;
-        YDir = 1;
-    }
-    dX = StopX - StartX;
-    //Now, if the slope is less greater than one,  we need to swap all X/Y operations
-    if(dY<=dX)
-    {
-        //Slope is less than one, proceed at normal and step along the x axis
-        Y=StartY;   //start the whole part of the Y value at the starting pixeel.
-        X=StartX;
-        //We need to start the numerator of the fraction half way through the fraction so evertyhing rounds at
-        //fraction midpoint
-        Y_Numerator = dX>>1;   //The fraction demonimator is assumeed to be dX
-                                // out fixed point Y value is  Y + (Y_Numerator / dX)
-                                //Every time we step the X coordinate by one, we need to step
-                                //out Y coordinate by dY/dX.  We do this by just adding dY to our
-                                //numerator.  When the numerator gets bigger than the
-                                //denomiator, the increment the whole part by one and decrement the numerator
-                                //by the denominator
-        for(i=0;i<dX;i++)
-        {
-            GFX_PutPixel(Image,X,Y);
-            X++;
-            //Now do all the fractional stuff
-            Y_Numerator += dY;
-            if(Y_Numerator >= dX)
-            {    
-                Y_Numerator-=dX;
-                if(StopY > StartY)
-                {
-                    Y++;
-                }
-                else
-                {
-                    Y--;    
-                }
-            }
-        }
-    }
-    else
-    {
-        //Same as before by step along the y axis.    
-        Y=StartY;   
-        X=StartX;
-        X_Numerator = dY>>1;   
-        for(i=0;i<dY;i++)
-        {
-            GFX_PutPixel(Image,X,Y);
-            //Now do all the fractional stuff
-            if(YDir)
-            {
-                Y--;
-            }
-            else
-            {
-                Y++;
-            }
-            X_Numerator += dX;
-            if(X_Numerator >= dY)
-            {    
-                X_Numerator-=dY;
-                if(StopX > StartX)
-                {
-                    X++;
-                }
-                else
-                {
-                    X--;    
-                }
-            }
-        }
-    }
-}
-
-void GFX_DrawBox(RenderContext *Image, GFXDisplayBox *Box)
-{
-    GFX_DrawHline(Image,Box->P1.X,Box->P2.X,Box->P1.Y);
-    GFX_DrawHline(Image,Box->P1.X,Box->P2.X,Box->P2.Y);
-    GFX_DrawVline(Image,Box->P1.Y,Box->P2.Y,Box->P1.X);
-    GFX_DrawVline(Image,Box->P1.Y,Box->P2.Y,Box->P2.X);
-}
-
-int16_t GFX_DrawCharacter(RenderContext * Image,uint8_t Character,int16_t StartX, int16_t StartY, GFXFont * MyFont)
-{
-    uint8_t i,j,Mask;
-    uint16_t CharStartIndex,ColumnStartIndex,ByteOffset;
-
-    CharStartIndex = (Character * (MyFont->BytesPerColumn) * (MyFont->FontWidth));
-
-    for(j=0;j<MyFont->CharacterWidthTable[Character];j++)
-        {
-            //Draw the current slice
-            ColumnStartIndex = j* (MyFont->BytesPerColumn);
-
-            for(i=0;i<MyFont->FontHeight;i++)
-            {
-                ByteOffset = i>>3;
-                Mask = 0x01 << (i&0x07);
-            
-                if( (MyFont->FontBuffer[CharStartIndex + ColumnStartIndex + ByteOffset]) & Mask)
-                {
-                    GFX_PutPixel(Image, StartX, StartY + i);
-                }        
-            }
-          StartX++;
-        }
-    return StartX;
-}
-
-
-int16_t GFX_GetStringWidth(char * String,GFXFont * MyFont)
-{
-    uint8_t Ptr = 0;
-    uint8_t NextChar;
-    int16_t StringSize = 0;
-    
-    NextChar = String[Ptr];
-    Ptr++;
-    
-    while((NextChar!=0) && (Ptr <GFX_MAX_STRING_LEN))
-    {
-        StringSize += MyFont->CharacterWidthTable[NextChar] + 1;
-        NextChar = String[Ptr];
-        Ptr++;
-    }
-    
-    return StringSize;
-}
-
-void GFX_DrawCenteredString(RenderContext * Image,char * String,int16_t StartX, int16_t StartY, GFXFont * MyFont)
-{
-    StartX -= (GFX_GetStringWidth(String,MyFont)>>1);
-    GFX_DrawString(Image,String,StartX,StartY,MyFont);
-}
-
-void GFX_DrawString(RenderContext * Image,char * String,int16_t StartX, int16_t StartY, GFXFont * MyFont)
-{
-
-uint8_t Ptr = 0;
-uint8_t NextChar;
-
-NextChar = String[Ptr];
-
-    while((NextChar!=0) && (Ptr <GFX_MAX_STRING_LEN))
-    {
-        StartX = GFX_DrawCharacter(Image,NextChar,StartX,StartY,MyFont);
-        Ptr++;
-        NextChar = String[Ptr];
-        StartX++;
-    }
-
-}
-
-char GFXStringBuf[64];
-
-void  GFX_printf(RenderContext * Image,int16_t StartX, int16_t StartY, GFXFont * MyFont, const char *FormatString,...)
-{
-     va_list argptr; 
-     va_start(argptr,FormatString); 
-     vsprintf((char *)GFXStringBuf,FormatString,argptr);
-     va_end(argptr);   
-     
-     GFX_DrawString(Image,GFXStringBuf,StartX,StartY,MyFont);
-}
-
-#ifndef INLINE_BITPLANE_PUT
-void BitPlane_Put(BitPlane  * BP, uint16_t X,uint16_t Y, uint8_t Value)
-{
-    uint16_t Offset;
-    uint8_t Mask;
-    
-    Offset = (Y * ((BP->SizeX)>>3)) + (X>>3);
-    Mask = 0x01 << (X & 0x07);
-
-    if(Value)
-    {
-        BP->BitPlaneSpace[Offset] |= Mask;
-    }
-    else
-    {
-        BP->BitPlaneSpace[Offset] &= ~Mask;
-    }
-}
-#endif
-
-#ifndef INLINE_BITPLANE_GET
-uint8_t BitPlane_Get(BitPlane  * BP, uint16_t X,uint16_t Y)
-{
-    uint16_t Offset;
-    uint8_t Mask;
- 
-    Offset = (Y * ((BP->SizeX)>>3)) + (X>>3);
-    Mask = 0x01 << (X & 0x07);
-
-    if((BP->BitPlaneSpace[Offset])&Mask)
-    {
-        return TRUE;
-    }
-    else
-    {
-        return FALSE;
-    }
-}
-#endif
-
-void BitPlane_Clear(BitPlane  * BP) 
-{
-    uint16_t PlaneSpaceSize;
-    uint16_t i;
-
-    PlaneSpaceSize = ((BP->SizeX)>>3) * BP->SizeY;
-
-    for (i=0;i<PlaneSpaceSize;i++) {
-        BP->BitPlaneSpace[i] = 0;
-    }
-}
    