Browse Source

Merge pull request #273 from SSYYL/master

Added new programs 2.7inch V2 e-Paper routine.
Wilson 3 years ago
parent
commit
0e47b883bf
34 changed files with 22446 additions and 831 deletions
  1. 585 0
      Arduino/epd2in7_V2/epd2in7_V2.cpp
  2. 75 0
      Arduino/epd2in7_V2/epd2in7_V2.h
  3. 114 0
      Arduino/epd2in7_V2/epd2in7_V2.ino
  4. 64 0
      Arduino/epd2in7_V2/epdif.cpp
  5. 51 0
      Arduino/epd2in7_V2/epdif.h
  6. 342 0
      Arduino/epd2in7_V2/epdpaint.cpp
  7. 75 0
      Arduino/epd2in7_V2/epdpaint.h
  8. 1385 0
      Arduino/epd2in7_V2/font12.cpp
  9. 1765 0
      Arduino/epd2in7_V2/font16.cpp
  10. 2143 0
      Arduino/epd2in7_V2/font20.cpp
  11. 2521 0
      Arduino/epd2in7_V2/font24.cpp
  12. 1005 0
      Arduino/epd2in7_V2/font8.cpp
  13. 65 0
      Arduino/epd2in7_V2/fonts.h
  14. 1125 0
      Arduino/epd2in7_V2/imagedata.cpp
  15. 32 0
      Arduino/epd2in7_V2/imagedata.h
  16. 128 20
      RaspberryPi_JetsonNano/c/examples/EPD_2in7_V2_test.c
  17. 306 95
      RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in7_V2.c
  18. 8 4
      RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in7_V2.h
  19. 158 0
      RaspberryPi_JetsonNano/python/examples/epd_2in7_V2_test.py
  20. 519 0
      RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in7_V2.py
  21. 97 0
      STM32/STM32-F103ZET6/MDK-ARM/DebugConfig/EPD_2in7_V2_test_STM32F103ZE.dbgconf
  22. 20 0
      STM32/STM32-F103ZET6/MDK-ARM/RTE/_EPD_2in7_V2_test/RTE_Components.h
  23. 0 1
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.liuyujian
  24. 306 47
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx
  25. 7165 114
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx
  26. 43 43
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm
  27. 542 476
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm
  28. 955 24
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map
  29. 5 5
      STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst
  30. 265 0
      STM32/STM32-F103ZET6/User/Examples/EPD_2in7_V2_test.c
  31. 526 0
      STM32/STM32-F103ZET6/User/e-Paper/EPD_2in7_V2.c
  32. 52 0
      STM32/STM32-F103ZET6/User/e-Paper/EPD_2in7_V2.h
  33. 2 1
      Version_CN.txt
  34. 2 1
      Version_EN.txt

+ 585 - 0
Arduino/epd2in7_V2/epd2in7_V2.cpp

@@ -0,0 +1,585 @@
+/**
+ *  @filename   :   epd2in7_V2.cpp
+ *  @brief      :   Implements for e-paper library
+ *  @author     :   Waveshare
+ *
+ *  Copyright (C) Waveshare     September 20 2022
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include <stdlib.h>
+#include "epd2in7_V2.h"
+
+static const unsigned char LUT_DATA_4Gray[159] =
+{
+0x40,	0x48,	0x80,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0x8,	0x48,	0x10,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0x2,	0x48,	0x4,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0x20,	0x48,	0x1,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0xA,	0x19,	0x0,	0x3,	0x8,	0x0,	0x0,					
+0x14,	0x1,	0x0,	0x14,	0x1,	0x0,	0x3,					
+0xA,	0x3,	0x0,	0x8,	0x19,	0x0,	0x0,					
+0x1,	0x0,	0x0,	0x0,	0x0,	0x0,	0x1,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x22,	0x22,	0x22,	0x22,	0x22,	0x22,	0x0,	0x0,	0x0,			
+0x22,	0x17,	0x41,	0x0,	0x32,	0x1C
+};
+
+
+
+Epd::~Epd() {
+};
+
+Epd::Epd() {
+    reset_pin = RST_PIN;
+    dc_pin = DC_PIN;
+    cs_pin = CS_PIN;
+    busy_pin = BUSY_PIN;
+    WIDTH = EPD_WIDTH;
+    HEIGHT = EPD_HEIGHT;
+};
+
+int Epd::Init(void) {
+    /* this calls the peripheral hardware interface, see epdif */
+    if (IfInit() != 0) {
+        return -1;
+    }
+
+    Reset();
+    ReadBusy();
+
+    SendCommand(0x12); //SWRESET
+    ReadBusy();
+
+    SendCommand(0x45); //set Ram-Y address start/end position          
+    SendData(0x00);
+    SendData(0x00);
+    SendData(0x07); //0x0107-->(263+1)=264
+    SendData(0x01);
+
+    SendCommand(0x4F);   // set RAM y address count to 0;    
+    SendData(0x00);
+    SendData(0x00);
+
+    SendCommand(0x11);   // data entry mode
+    SendData(0x03);
+    return 0;
+}
+
+int Epd::Init_Fast(void) {
+    /* this calls the peripheral hardware interface, see epdif */
+    if (IfInit() != 0) {
+        return -1;
+    }
+
+    Reset();
+    ReadBusy();
+
+    SendCommand(0x12); //SWRESET
+    ReadBusy();
+
+    SendCommand(0x18); //Read built-in temperature sensor
+	SendData(0x80);	
+
+	SendCommand(0x22); // Load temperature value
+	SendData(0xB1);		
+	SendCommand(0x20);	
+	ReadBusy();
+
+	SendCommand(0x1A); // Write to temperature register
+	SendData(0x64);		
+	SendData(0x00);	
+
+	SendCommand(0x45); //set Ram-Y address start/end position          
+	SendData(0x00);   
+	SendData(0x00);
+	SendData(0x07); //0x0107-->(263+1)=264
+	SendData(0x01);
+
+	SendCommand(0x4F);   // set RAM y address count to 0;    
+	SendData(0x00);
+	SendData(0x00);
+
+	SendCommand(0x11);   // data entry mode      
+	SendData(0x03);
+							
+	SendCommand(0x22); // Load temperature value
+	SendData(0x91);		
+	SendCommand(0x20);	
+	ReadBusy(); 
+    return 0;
+}
+
+void Epd::Init_4Gray(void)
+{
+    Reset();
+
+	ReadBusy();
+	SendCommand(0x12); // soft reset
+	ReadBusy();
+
+	SendCommand(0x74); //set analog block control       
+	SendData(0x54);
+	SendCommand(0x7E); //set digital block control          
+	SendData(0x3B);
+
+	SendCommand(0x01); //Driver output control      
+	SendData(0x07);
+	SendData(0x01);
+	SendData(0x00);
+
+	SendCommand(0x11); //data entry mode       
+	SendData(0x03);
+
+	SendCommand(0x44); //set Ram-X address start/end position   
+	SendData(0x00);
+	SendData(0x15);    //0x15-->(21+1)*8=176
+
+	SendCommand(0x45); //set Ram-Y address start/end position          
+	SendData(0x00);
+	SendData(0x00);
+	SendData(0x07);//0x0107-->(263+1)=264
+	SendData(0x01);
+
+
+	SendCommand(0x3C); //BorderWavefrom
+	SendData(0x00);	
+
+
+	SendCommand(0x2C);     //VCOM Voltage
+	SendData(LUT_DATA_4Gray[158]);    //0x1C
+
+
+	SendCommand(0x3F); //EOPQ    
+	SendData(LUT_DATA_4Gray[153]);
+	
+	SendCommand(0x03); //VGH      
+	SendData(LUT_DATA_4Gray[154]);
+
+	SendCommand(0x04); //      
+	SendData(LUT_DATA_4Gray[155]); //VSH1   
+	SendData(LUT_DATA_4Gray[156]); //VSH2   
+	SendData(LUT_DATA_4Gray[157]); //VSL   
+   
+	Lut(); //LUT
+
+	
+	SendCommand(0x4E);   // set RAM x address count to 0;
+	SendData(0x00);
+	SendCommand(0x4F);   // set RAM y address count to 0X199;    
+	SendData(0x00);
+	SendData(0x00);
+    ReadBusy();
+}
+
+
+/**
+ *  @brief: basic function for sending commands
+ */
+void Epd::SendCommand(unsigned char command) {
+    DigitalWrite(dc_pin, LOW);
+    SpiTransfer(command);
+}
+
+/**
+ *  @brief: basic function for sending data
+ */
+void Epd::SendData(unsigned char data) {
+    DigitalWrite(dc_pin, HIGH);
+    SpiTransfer(data);
+}
+
+/**
+ *  @brief: Wait until the busy_pin goes HIGH
+ */
+void Epd::ReadBusy(void) {
+    Serial.print("e-Paper busy\r\n");
+    while(DigitalRead(busy_pin) == 1) {      //1: busy, 0: idle
+        DelayMs(100);
+    }      
+    Serial.print("e-Paper busy release\r\n");
+}
+
+/**
+ *  @brief: module reset. 
+ *          often used to awaken the module in deep sleep, 
+ *          see Epd::Sleep();
+ */
+void Epd::Reset(void) {
+    DigitalWrite(reset_pin, HIGH);
+    DelayMs(200);   
+    DigitalWrite(reset_pin, LOW);
+    DelayMs(2);
+    DigitalWrite(reset_pin, HIGH);
+    DelayMs(200);   
+}
+
+/**
+ *  @brief: set the look-up tables
+ */
+void Epd::Lut(void) {
+    unsigned int count;
+    SendCommand(0x32); //vcom
+    for(count = 0; count < 153; count++) {
+        SendData(LUT_DATA_4Gray[count]);
+    }
+}
+
+/******************************************************************************
+function :	Turn on display
+parameter:
+******************************************************************************/
+void Epd::TurnOnDisplay(void)
+{
+	SendCommand(0x22); //Display Update Control
+	SendData(0xF7);
+	SendCommand(0x20); //Activate Display Update Sequence
+	ReadBusy();
+}
+
+void Epd::TurnOnDisplay_Fast(void)
+{
+	SendCommand(0x22); //Display Update Control
+	SendData(0xC7);
+	SendCommand(0x20); //Activate Display Update Sequence
+	ReadBusy();
+}
+
+void Epd::TurnOnDisplay_Partial(void)
+{
+	SendCommand(0x22);
+	SendData(0xFF);
+	SendCommand(0x20);
+	ReadBusy();
+}
+
+void Epd::TurnOnDisplay_4GRAY(void)
+{
+	SendCommand(0x22);
+	SendData(0xC7);
+	SendCommand(0x20);
+	ReadBusy();
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void Epd::Clear(void)
+{
+    unsigned int Width, Height;
+    Width = (WIDTH % 8 == 0)? (WIDTH / 8 ): (WIDTH / 8 + 1);
+    Height = HEIGHT;
+
+    SendCommand(0x24);
+    for (unsigned int j = 0; j < Height; j++) {
+        for (unsigned int i = 0; i < Width; i++) {
+            SendData(0XFF);
+        }
+    }
+	TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void Epd::Display(const unsigned char* Image)
+{
+	unsigned int Width, Height;
+	Width = (WIDTH % 8 == 0)? (WIDTH / 8 ): (WIDTH / 8 + 1);
+	Height = HEIGHT;
+
+	SendCommand(0x24);
+	for (unsigned int j = 0; j < Height; j++) {
+			for (unsigned int i = 0; i < Width; i++) {
+					SendData(pgm_read_byte(&Image[i + j * Width]));
+			}
+	}
+	TurnOnDisplay();
+}
+
+void Epd::Display_Fast(const unsigned char* Image)
+{
+	unsigned int Width, Height;
+	Width = (WIDTH % 8 == 0)? (WIDTH / 8 ): (WIDTH / 8 + 1);
+	Height = HEIGHT;
+
+	SendCommand(0x24);
+	for (unsigned int j = 0; j < Height; j++) {
+			for (unsigned int i = 0; i < Width; i++) {
+					SendData(pgm_read_byte(&Image[i + j * Width]));
+			}
+	}
+	TurnOnDisplay_Fast();
+}
+
+void Epd::Display_Base(const unsigned char* Image)
+{
+	unsigned int Width, Height;
+	Width = (WIDTH % 8 == 0)? (WIDTH / 8 ): (WIDTH / 8 + 1);
+	Height = HEIGHT;
+
+	SendCommand(0x24);   //Write Black and White image to RAM
+	for (unsigned int j = 0; j < Height; j++) {
+			for (unsigned int i = 0; i < Width; i++) {
+					SendData(pgm_read_byte(&Image[i + j * Width]));
+			}
+	}
+	SendCommand(0x26);   //Write Black and White image to RAM
+	for (unsigned int j = 0; j < Height; j++) {
+			for (unsigned int i = 0; i < Width; i++) {
+					SendData(pgm_read_byte(&Image[i + j * Width]));
+			}
+	}
+	TurnOnDisplay();	
+}
+
+void Epd::Display_Base_color(unsigned char color)
+{
+	unsigned int Width, Height;
+	Width = (WIDTH % 8 == 0)? (WIDTH / 8 ): (WIDTH / 8 + 1);
+	Height = HEIGHT;
+
+	SendCommand(0x24);   //Write Black and White image to RAM
+	for (unsigned int j = 0; j < Height; j++) {
+			for (unsigned int i = 0; i < Width; i++) {
+					SendData(color);
+			}
+	}
+	SendCommand(0x26);   //Write Black and White image to RAM
+	for (unsigned int j = 0; j < Height; j++) {
+			for (unsigned int i = 0; i < Width; i++) {
+					SendData(color);
+			}
+	}
+	// TurnOnDisplay();	
+}
+
+void Epd::Display_Partial(unsigned char* Image, unsigned int  Xstart, unsigned int  Ystart, unsigned int  Xend, unsigned int  Yend)
+{
+
+    unsigned int  i, Width;
+    unsigned int  IMAGE_COUNTER;
+
+    if((Xstart % 8 + Xend % 8 == 8 && Xstart % 8 > Xend % 8) || Xstart % 8 + Xend % 8 == 0 || (Xend - Xstart)%8 == 0)
+	{
+        Xstart = Xstart / 8 ;
+        Xend = Xend / 8;
+	}
+	else
+	{
+        Xstart = Xstart / 8 ;
+        Xend = Xend % 8 == 0 ? Xend / 8 : Xend / 8 + 1;
+	}
+	
+	Width = Xend -  Xstart;
+	IMAGE_COUNTER = Width * (Yend-Ystart);
+    Serial.println(IMAGE_COUNTER);
+
+	Xend -= 1;
+	Yend -= 1;	
+	//Reset
+	Reset();
+
+	SendCommand(0x3C); //BorderWavefrom
+	SendData(0x80);	
+	//	    
+	SendCommand(0x44);       // set RAM x address start/end, in page 35
+	SendData(Xstart & 0xff);    // RAM x address start at 00h;
+	SendData(Xend & 0xff);    // RAM x address end at 0fh(15+1)*8->128 
+	SendCommand(0x45);       // set RAM y address start/end, in page 35
+	SendData(Ystart & 0xff);    // RAM y address start at 0127h;
+	SendData((Ystart>>8) & 0x01);    // RAM y address start at 0127h;
+	SendData(Yend & 0xff);    // RAM y address end at 00h;
+	SendData((Yend>>8) & 0x01); 
+
+	SendCommand(0x4E);   // set RAM x address count to 0;
+	SendData(Xstart & 0xff); 
+	SendCommand(0x4F);   // set RAM y address count to 0X127;    
+	SendData(Ystart & 0xff);
+	SendData((Ystart>>8) & 0x01);
+
+
+	SendCommand(0x24);   //Write Black and White image to RAM
+	for (i = 0; i < IMAGE_COUNTER; i++) {
+		SendData(Image[i]);
+	}
+	TurnOnDisplay_Partial();
+}
+
+void Epd::Display_Partial_Not_refresh(unsigned char* Image, unsigned int  Xstart, unsigned int  Ystart, unsigned int  Xend, unsigned int  Yend)
+{
+
+    unsigned int  i, Width;
+    unsigned int  IMAGE_COUNTER;
+
+    if((Xstart % 8 + Xend % 8 == 8 && Xstart % 8 > Xend % 8) || Xstart % 8 + Xend % 8 == 0 || (Xend - Xstart)%8 == 0)
+	{
+        Xstart = Xstart / 8 ;
+        Xend = Xend / 8;
+	}
+	else
+	{
+        Xstart = Xstart / 8 ;
+        Xend = Xend % 8 == 0 ? Xend / 8 : Xend / 8 + 1;
+	}
+	
+	Width = Xend -  Xstart;
+	IMAGE_COUNTER = Width * (Yend-Ystart);
+    Serial.println(IMAGE_COUNTER);
+
+	Xend -= 1;
+	Yend -= 1;	
+	//Reset
+	Reset();
+
+	SendCommand(0x3C); //BorderWavefrom
+	SendData(0x80);	
+	//	    
+	SendCommand(0x44);       // set RAM x address start/end, in page 35
+	SendData(Xstart & 0xff);    // RAM x address start at 00h;
+	SendData(Xend & 0xff);    // RAM x address end at 0fh(15+1)*8->128 
+	SendCommand(0x45);       // set RAM y address start/end, in page 35
+	SendData(Ystart & 0xff);    // RAM y address start at 0127h;
+	SendData((Ystart>>8) & 0x01);    // RAM y address start at 0127h;
+	SendData(Yend & 0xff);    // RAM y address end at 00h;
+	SendData((Yend>>8) & 0x01); 
+
+	SendCommand(0x4E);   // set RAM x address count to 0;
+	SendData(Xstart & 0xff); 
+	SendCommand(0x4F);   // set RAM y address count to 0X127;    
+	SendData(Ystart & 0xff);
+	SendData((Ystart>>8) & 0x01);
+
+
+	SendCommand(0x24);   //Write Black and White image to RAM
+	for (i = 0; i < IMAGE_COUNTER; i++) {
+		SendData(Image[i]);
+	}
+	// TurnOnDisplay_Partial();
+}
+
+void Epd::Display4Gray(const unsigned char *Image)
+{
+    int i,j,k;
+    unsigned char temp1,temp2,temp3;
+
+    SendCommand(0x24);	       
+    for(i=0;i<5808;i++)	               //5808*4  46464
+    {
+        temp3=0;
+        for(j=0;j<2;j++)	
+        {
+            temp1 = pgm_read_byte(&Image[i*2+j]);
+            for(k=0;k<2;k++)	
+            {
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)
+                    temp3 |= 0x00;//white
+                else if(temp2 == 0x00)
+                    temp3 |= 0x01;  //black
+                else if(temp2 == 0x80) 
+                    temp3 |= 0x01;  //gray1
+                else //0x40
+                    temp3 |= 0x00; //gray2
+                temp3 <<= 1;	
+                
+                temp1 <<= 2;
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)  //white
+                    temp3 |= 0x00;
+                else if(temp2 == 0x00) //black
+                    temp3 |= 0x01;
+                else if(temp2 == 0x80)
+                    temp3 |= 0x01; //gray1
+                else    //0x40
+                        temp3 |= 0x00;	//gray2	
+                if(j!=1 || k!=1)				
+                    temp3 <<= 1;
+                
+                temp1 <<= 2;
+            }
+            
+         }
+        SendData(temp3);			
+    }
+    // new  data
+    SendCommand(0x26);	       
+    for(i=0;i<5808;i++)	               //5808*4  46464
+    {
+        temp3=0;
+        for(j=0;j<2;j++)	
+        {
+            temp1 = pgm_read_byte(&Image[i*2+j]);
+            for(k=0;k<2;k++)	
+            {
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)
+                    temp3 |= 0x00;//white
+                else if(temp2 == 0x00)
+                    temp3 |= 0x01;  //black
+                else if(temp2 == 0x80) 
+                    temp3 |= 0x00;  //gray1
+                else //0x40
+                    temp3 |= 0x01; //gray2
+                temp3 <<= 1;	
+                
+                temp1 <<= 2;
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)  //white
+                    temp3 |= 0x00;
+                else if(temp2 == 0x00) //black
+                    temp3 |= 0x01;
+                else if(temp2 == 0x80)
+                    temp3 |= 0x00; //gray1
+                else    //0x40
+                        temp3 |= 0x01;	//gray2
+                if(j!=1 || k!=1)					
+                    temp3 <<= 1;
+                
+                temp1 <<= 2;
+            }
+            
+         }
+        SendData(temp3);	
+    }
+
+    TurnOnDisplay_4GRAY();
+}
+
+/**
+ * @brief: After this command is transmitted, the chip would enter the deep-sleep mode to save power. 
+ *         The deep sleep mode would return to standby by hardware reset. The only one parameter is a 
+ *         check code, the command would be executed if check code = 0xA5. 
+ *         You can use Epd::Reset() to awaken and use Epd::Init() to initialize.
+ */
+void Epd::Sleep() {
+  SendCommand(0X10);
+  SendData(0x01);
+}

+ 75 - 0
Arduino/epd2in7_V2/epd2in7_V2.h

@@ -0,0 +1,75 @@
+/**
+ *  @filename   :   epd2in7_V2.h
+ *  @brief      :   Header file for e-paper library epd2in7_V2.cpp
+ *  @author     :   Waveshare
+ *  
+ *  Copyright (C) Waveshare     September 20 2022
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef EPD2IN7_V2_H
+#define EPD2IN7_V2_H
+
+#include "epdif.h"
+
+// Display resolution
+#define EPD_WIDTH       176
+#define EPD_HEIGHT      264
+
+
+class Epd : EpdIf {
+public:
+    unsigned int WIDTH;
+    unsigned int HEIGHT;
+
+    Epd();
+    ~Epd();
+    int  Init(void);
+    int  Init_Fast(void);
+    void Init_4Gray(void);
+    void SendCommand(unsigned char command);
+    void SendData(unsigned char data);
+    void ReadBusy(void);
+    void Reset(void);
+    void Lut(void);
+    void TurnOnDisplay(void);
+    void TurnOnDisplay_Fast(void);
+    void TurnOnDisplay_Partial(void);
+    void TurnOnDisplay_4GRAY(void);
+    void Clear(void);
+    void Display(const unsigned char* Image);
+    void Display_Fast(const unsigned char* Image);
+    void Display_Base(const unsigned char* Image);
+    void Display_Base_color(unsigned char color);
+    void Display_Partial(unsigned char* Image, unsigned int  Xstart, unsigned int  Ystart, unsigned int  Xend, unsigned int  Yend);
+    void Display_Partial_Not_refresh(unsigned char* Image, unsigned int  Xstart, unsigned int  Ystart, unsigned int  Xend, unsigned int  Yend);
+    void Display4Gray(const unsigned char *Image);
+    void Sleep(void);
+
+private:
+    unsigned int reset_pin;
+    unsigned int dc_pin;
+    unsigned int cs_pin;
+    unsigned int busy_pin;
+};
+
+#endif /* EPD2IN7_H */
+
+/* END OF FILE */

+ 114 - 0
Arduino/epd2in7_V2/epd2in7_V2.ino

@@ -0,0 +1,114 @@
+/**
+    @filename   :   epd2in7_V2-demo.ino
+    @brief      :   2.7inch e-paper display demo
+    @author     :   Waveshare
+
+    Copyright (C) Waveshare     September 20 2022
+
+   Permission is hereby granted, free of charge, to any person obtaining a copy
+   of this software and associated documnetation files (the "Software"), to deal
+   in the Software without restriction, including without limitation the rights
+   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+   copies of the Software, and to permit persons to  whom the Software is
+   furished to do so, subject to the following conditions:
+
+   The above copyright notice and this permission notice shall be included in
+   all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+   FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+   LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+   THE SOFTWARE.
+*/
+
+#include <SPI.h>
+#include "epd2in7_V2.h"
+#include "imagedata.h"
+#include "epdpaint.h"
+
+#define COLORED     0
+#define UNCOLORED   1
+
+void setup() {
+  // put your setup code here, to run once:
+  Serial.begin(115200);
+  Epd epd;
+
+  Serial.print("e-Paper init\r\n");
+  if (epd.Init() != 0) {
+    Serial.print("e-Paper init failed\r\n");
+    return;
+  }
+
+  /* This clears the SRAM of the e-paper display */
+  epd.Clear();
+
+  /**
+      Due to RAM not enough in Arduino UNO, a frame buffer is not allowed.
+      In this case, a smaller image buffer is allocated and you have to
+      update a partial display several times.
+      1 byte = 8 pixels, therefore you have to set 8*N pixels at a time.
+  */
+#if 1
+  epd.Display_Base_color(0xff);
+  unsigned char image[1024];
+  Paint paint(image, 176, 24);    //width should be the multiple of 8
+
+  paint.Clear(UNCOLORED);
+  paint.DrawStringAt(20, 5, "e-Paper Demo", &Font16, COLORED);
+  epd.Display_Partial_Not_refresh(paint.GetImage(), 0, 32, 0+paint.GetWidth(), 32+paint.GetHeight());
+
+  paint.Clear(COLORED);
+  paint.DrawStringAt(20, 5, "Hello world!", &Font16, UNCOLORED);
+  epd.Display_Partial_Not_refresh(paint.GetImage(), 0, 64, 0+paint.GetWidth(), 64+paint.GetHeight());
+
+  paint.SetWidth(64);
+  paint.SetHeight(64);
+
+  paint.Clear(UNCOLORED);
+  paint.DrawRectangle(0, 0, 40, 50, COLORED);
+  paint.DrawLine(0, 0, 40, 50, COLORED);
+  paint.DrawLine(40, 0, 0, 50, COLORED);
+  epd.Display_Partial_Not_refresh(paint.GetImage(), 10, 130, 10+paint.GetWidth(), 130+paint.GetHeight());
+
+  paint.Clear(UNCOLORED);
+  paint.DrawCircle(32, 32, 30, COLORED);
+  epd.Display_Partial_Not_refresh(paint.GetImage(), 90, 120, 90+paint.GetWidth(), 120+paint.GetHeight());
+
+  paint.Clear(UNCOLORED);
+  paint.DrawFilledRectangle(0, 0, 40, 50, COLORED);
+  epd.Display_Partial_Not_refresh(paint.GetImage(), 10, 200, 10+paint.GetWidth(), 200+paint.GetHeight());
+
+  paint.Clear(UNCOLORED);
+  paint.DrawFilledCircle(32, 32, 30, COLORED);
+  epd.Display_Partial(paint.GetImage(), 90, 190, 90+paint.GetWidth(), 190+paint.GetHeight());
+
+  delay(1000);
+#endif
+  
+#if 1
+  /* This displays an image */
+  epd.Init();
+  Serial.print("show 2-gray image\r\n");
+  epd.Display(IMAGE_DATA);
+  delay(1000);
+#endif
+
+#if 1
+  Serial.print("show 4-gray image\r\n");
+  epd.Init_4Gray();
+  epd.Display4Gray(IMAGE_DATA_4Gray);
+#endif
+
+  /* Deep sleep */
+  Serial.print("sleep...");
+  epd.Sleep();
+}
+
+void loop() {
+  // put your main code here, to run repeatedly:
+
+}

+ 64 - 0
Arduino/epd2in7_V2/epdif.cpp

@@ -0,0 +1,64 @@
+/**
+ *  @filename   :   epdif.cpp
+ *  @brief      :   Implements EPD interface functions
+ *                  Users have to implement all the functions in epdif.cpp
+ *  @author     :   Yehui from Waveshare
+ *
+ *  Copyright (C) Waveshare     August 10 2017
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "epdif.h"
+#include <SPI.h>
+
+EpdIf::EpdIf() {
+};
+
+EpdIf::~EpdIf() {
+};
+
+void EpdIf::DigitalWrite(int pin, int value) {
+    digitalWrite(pin, value);
+}
+
+int EpdIf::DigitalRead(int pin) {
+    return digitalRead(pin);
+}
+
+void EpdIf::DelayMs(unsigned int delaytime) {
+    delay(delaytime);
+}
+
+void EpdIf::SpiTransfer(unsigned char data) {
+    digitalWrite(CS_PIN, LOW);
+    SPI.transfer(data);
+    digitalWrite(CS_PIN, HIGH);
+}
+
+int EpdIf::IfInit(void) {
+    pinMode(CS_PIN, OUTPUT);
+    pinMode(RST_PIN, OUTPUT);
+    pinMode(DC_PIN, OUTPUT);
+    pinMode(BUSY_PIN, INPUT); 
+    SPI.begin();
+    SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0));
+    return 0;
+}
+

+ 51 - 0
Arduino/epd2in7_V2/epdif.h

@@ -0,0 +1,51 @@
+/**
+ *  @filename   :   epdif.h
+ *  @brief      :   Header file of epdif.cpp providing EPD interface functions
+ *                  Users have to implement all the functions in epdif.cpp
+ *  @author     :   Yehui from Waveshare
+ *
+ *  Copyright (C) Waveshare     August 10 2017
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef EPDIF_H
+#define EPDIF_H
+
+#include <Arduino.h>
+
+// Pin definition
+#define RST_PIN         8
+#define DC_PIN          9
+#define CS_PIN          10
+#define BUSY_PIN        7
+
+class EpdIf {
+public:
+    EpdIf(void);
+    ~EpdIf(void);
+
+    static int  IfInit(void);
+    static void DigitalWrite(int pin, int value); 
+    static int  DigitalRead(int pin);
+    static void DelayMs(unsigned int delaytime);
+    static void SpiTransfer(unsigned char data);
+};
+
+#endif

+ 342 - 0
Arduino/epd2in7_V2/epdpaint.cpp

@@ -0,0 +1,342 @@
+/**
+ *  @filename   :   epdpaint.cpp
+ *  @brief      :   Paint tools
+ *  @author     :   Yehui from Waveshare
+ *  
+ *  Copyright (C) Waveshare     September 9 2017
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include <avr/pgmspace.h>
+#include "epdpaint.h"
+
+Paint::Paint(unsigned char* image, int width, int height) {
+    this->rotate = ROTATE_0;
+    this->image = image;
+    /* 1 byte = 8 pixels, so the width should be the multiple of 8 */
+    this->width = width % 8 ? width + 8 - (width % 8) : width;
+    this->height = height;
+}
+
+Paint::~Paint() {
+}
+
+/**
+ *  @brief: clear the image
+ */
+void Paint::Clear(int colored) {
+    for (int x = 0; x < this->width; x++) {
+        for (int y = 0; y < this->height; y++) {
+            DrawAbsolutePixel(x, y, colored);
+        }
+    }
+}
+
+/**
+ *  @brief: this draws a pixel by absolute coordinates.
+ *          this function won't be affected by the rotate parameter.
+ */
+void Paint::DrawAbsolutePixel(int x, int y, int colored) {
+    if (x < 0 || x >= this->width || y < 0 || y >= this->height) {
+        return;
+    }
+    if (IF_INVERT_COLOR) {
+        if (colored) {
+            image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
+        } else {
+            image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
+        }
+    } else {
+        if (colored) {
+            image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
+        } else {
+            image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
+        }
+    }
+}
+
+/**
+ *  @brief: Getters and Setters
+ */
+unsigned char* Paint::GetImage(void) {
+    return this->image;
+}
+
+int Paint::GetWidth(void) {
+    return this->width;
+}
+
+void Paint::SetWidth(int width) {
+    this->width = width % 8 ? width + 8 - (width % 8) : width;
+}
+
+int Paint::GetHeight(void) {
+    return this->height;
+}
+
+void Paint::SetHeight(int height) {
+    this->height = height;
+}
+
+int Paint::GetRotate(void) {
+    return this->rotate;
+}
+
+void Paint::SetRotate(int rotate){
+    this->rotate = rotate;
+}
+
+/**
+ *  @brief: this draws a pixel by the coordinates
+ */
+void Paint::DrawPixel(int x, int y, int colored) {
+    int point_temp;
+    if (this->rotate == ROTATE_0) {
+        if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
+            return;
+        }
+        DrawAbsolutePixel(x, y, colored);
+    } else if (this->rotate == ROTATE_90) {
+        if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
+          return;
+        }
+        point_temp = x;
+        x = this->width - y;
+        y = point_temp;
+        DrawAbsolutePixel(x, y, colored);
+    } else if (this->rotate == ROTATE_180) {
+        if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
+          return;
+        }
+        x = this->width - x;
+        y = this->height - y;
+        DrawAbsolutePixel(x, y, colored);
+    } else if (this->rotate == ROTATE_270) {
+        if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
+          return;
+        }
+        point_temp = x;
+        x = y;
+        y = this->height - point_temp;
+        DrawAbsolutePixel(x, y, colored);
+    }
+}
+
+/**
+ *  @brief: this draws a charactor on the frame buffer but not refresh
+ */
+void Paint::DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored) {
+    int i, j;
+    unsigned int char_offset = (ascii_char - ' ') * font->Height * (font->Width / 8 + (font->Width % 8 ? 1 : 0));
+    const unsigned char* ptr = &font->table[char_offset];
+
+    for (j = 0; j < font->Height; j++) {
+        for (i = 0; i < font->Width; i++) {
+            if (pgm_read_byte(ptr) & (0x80 >> (i % 8))) {
+                DrawPixel(x + i, y + j, colored);
+            }
+            if (i % 8 == 7) {
+                ptr++;
+            }
+        }
+        if (font->Width % 8 != 0) {
+            ptr++;
+        }
+    }
+}
+
+/**
+*  @brief: this displays a string on the frame buffer but not refresh
+*/
+void Paint::DrawStringAt(int x, int y, const char* text, sFONT* font, int colored) {
+    const char* p_text = text;
+    unsigned int counter = 0;
+    int refcolumn = x;
+    
+    /* Send the string character by character on EPD */
+    while (*p_text != 0) {
+        /* Display one character on EPD */
+        DrawCharAt(refcolumn, y, *p_text, font, colored);
+        /* Decrement the column position by 16 */
+        refcolumn += font->Width;
+        /* Point on the next character */
+        p_text++;
+        counter++;
+    }
+}
+
+/**
+*  @brief: this draws a line on the frame buffer
+*/
+void Paint::DrawLine(int x0, int y0, int x1, int y1, int colored) {
+    /* Bresenham algorithm */
+    int dx = x1 - x0 >= 0 ? x1 - x0 : x0 - x1;
+    int sx = x0 < x1 ? 1 : -1;
+    int dy = y1 - y0 <= 0 ? y1 - y0 : y0 - y1;
+    int sy = y0 < y1 ? 1 : -1;
+    int err = dx + dy;
+
+    while((x0 != x1) && (y0 != y1)) {
+        DrawPixel(x0, y0 , colored);
+        if (2 * err >= dy) {     
+            err += dy;
+            x0 += sx;
+        }
+        if (2 * err <= dx) {
+            err += dx; 
+            y0 += sy;
+        }
+    }
+}
+
+/**
+*  @brief: this draws a horizontal line on the frame buffer
+*/
+void Paint::DrawHorizontalLine(int x, int y, int line_width, int colored) {
+    int i;
+    for (i = x; i < x + line_width; i++) {
+        DrawPixel(i, y, colored);
+    }
+}
+
+/**
+*  @brief: this draws a vertical line on the frame buffer
+*/
+void Paint::DrawVerticalLine(int x, int y, int line_height, int colored) {
+    int i;
+    for (i = y; i < y + line_height; i++) {
+        DrawPixel(x, i, colored);
+    }
+}
+
+/**
+*  @brief: this draws a rectangle
+*/
+void Paint::DrawRectangle(int x0, int y0, int x1, int y1, int colored) {
+    int min_x, min_y, max_x, max_y;
+    min_x = x1 > x0 ? x0 : x1;
+    max_x = x1 > x0 ? x1 : x0;
+    min_y = y1 > y0 ? y0 : y1;
+    max_y = y1 > y0 ? y1 : y0;
+    
+    DrawHorizontalLine(min_x, min_y, max_x - min_x + 1, colored);
+    DrawHorizontalLine(min_x, max_y, max_x - min_x + 1, colored);
+    DrawVerticalLine(min_x, min_y, max_y - min_y + 1, colored);
+    DrawVerticalLine(max_x, min_y, max_y - min_y + 1, colored);
+}
+
+/**
+*  @brief: this draws a filled rectangle
+*/
+void Paint::DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored) {
+    int min_x, min_y, max_x, max_y;
+    int i;
+    min_x = x1 > x0 ? x0 : x1;
+    max_x = x1 > x0 ? x1 : x0;
+    min_y = y1 > y0 ? y0 : y1;
+    max_y = y1 > y0 ? y1 : y0;
+    
+    for (i = min_x; i <= max_x; i++) {
+      DrawVerticalLine(i, min_y, max_y - min_y + 1, colored);
+    }
+}
+
+/**
+*  @brief: this draws a circle
+*/
+void Paint::DrawCircle(int x, int y, int radius, int colored) {
+    /* Bresenham algorithm */
+    int x_pos = -radius;
+    int y_pos = 0;
+    int err = 2 - 2 * radius;
+    int e2;
+
+    do {
+        DrawPixel(x - x_pos, y + y_pos, colored);
+        DrawPixel(x + x_pos, y + y_pos, colored);
+        DrawPixel(x + x_pos, y - y_pos, colored);
+        DrawPixel(x - x_pos, y - y_pos, colored);
+        e2 = err;
+        if (e2 <= y_pos) {
+            err += ++y_pos * 2 + 1;
+            if(-x_pos == y_pos && e2 <= x_pos) {
+              e2 = 0;
+            }
+        }
+        if (e2 > x_pos) {
+            err += ++x_pos * 2 + 1;
+        }
+    } while (x_pos <= 0);
+}
+
+/**
+*  @brief: this draws a filled circle
+*/
+void Paint::DrawFilledCircle(int x, int y, int radius, int colored) {
+    /* Bresenham algorithm */
+    int x_pos = -radius;
+    int y_pos = 0;
+    int err = 2 - 2 * radius;
+    int e2;
+
+    do {
+        DrawPixel(x - x_pos, y + y_pos, colored);
+        DrawPixel(x + x_pos, y + y_pos, colored);
+        DrawPixel(x + x_pos, y - y_pos, colored);
+        DrawPixel(x - x_pos, y - y_pos, colored);
+        DrawHorizontalLine(x + x_pos, y + y_pos, 2 * (-x_pos) + 1, colored);
+        DrawHorizontalLine(x + x_pos, y - y_pos, 2 * (-x_pos) + 1, colored);
+        e2 = err;
+        if (e2 <= y_pos) {
+            err += ++y_pos * 2 + 1;
+            if(-x_pos == y_pos && e2 <= x_pos) {
+                e2 = 0;
+            }
+        }
+        if(e2 > x_pos) {
+            err += ++x_pos * 2 + 1;
+        }
+    } while(x_pos <= 0);
+}
+
+/* END OF FILE */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 75 - 0
Arduino/epd2in7_V2/epdpaint.h

@@ -0,0 +1,75 @@
+/**
+ *  @filename   :   epdpaint.h
+ *  @brief      :   Header file for epdpaint.cpp
+ *  @author     :   Yehui from Waveshare
+ *  
+ *  Copyright (C) Waveshare     July 28 2017
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef EPDPAINT_H
+#define EPDPAINT_H
+
+// Display orientation
+#define ROTATE_0            0
+#define ROTATE_90           1
+#define ROTATE_180          2
+#define ROTATE_270          3
+
+// Color inverse. 1 or 0 = set or reset a bit if set a colored pixel
+#define IF_INVERT_COLOR     1
+
+#include "fonts.h"
+
+class Paint {
+public:
+    Paint(unsigned char* image, int width, int height);
+    ~Paint();
+    void Clear(int colored);
+    int  GetWidth(void);
+    void SetWidth(int width);
+    int  GetHeight(void);
+    void SetHeight(int height);
+    int  GetRotate(void);
+    void SetRotate(int rotate);
+    unsigned char* GetImage(void);
+    void DrawAbsolutePixel(int x, int y, int colored);
+    void DrawPixel(int x, int y, int colored);
+    void DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored);
+    void DrawStringAt(int x, int y, const char* text, sFONT* font, int colored);
+    void DrawLine(int x0, int y0, int x1, int y1, int colored);
+    void DrawHorizontalLine(int x, int y, int width, int colored);
+    void DrawVerticalLine(int x, int y, int height, int colored);
+    void DrawRectangle(int x0, int y0, int x1, int y1, int colored);
+    void DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored);
+    void DrawCircle(int x, int y, int radius, int colored);
+    void DrawFilledCircle(int x, int y, int radius, int colored);
+
+private:
+    unsigned char* image;
+    int width;
+    int height;
+    int rotate;
+};
+
+#endif
+
+/* END OF FILE */
+

+ 1385 - 0
Arduino/epd2in7_V2/font12.cpp

@@ -0,0 +1,1385 @@
+/**
+  ******************************************************************************
+  * @file    Font12.cpp
+  * @author  MCD Application Team
+  * @version V1.0.0
+  * @date    18-February-2014
+  * @brief   This file provides text Font12. 
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "fonts.h"
+#include <avr/pgmspace.h>
+
+// 
+//  Font data for Courier New 12pt
+// 
+
+const uint8_t Font12_Table[] PROGMEM = 
+{
+	// @0 ' ' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @12 '!' (7 pixels wide)
+	0x00, //        
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x00, //        
+	0x00, //        
+	0x10, //    #   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @24 '"' (7 pixels wide)
+	0x00, //        
+	0x6C, //  ## ## 
+	0x48, //  #  #  
+	0x48, //  #  #  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @36 '#' (7 pixels wide)
+	0x00, //        
+	0x14, //    # # 
+	0x14, //    # # 
+	0x28, //   # #  
+	0x7C, //  ##### 
+	0x28, //   # #  
+	0x7C, //  ##### 
+	0x28, //   # #  
+	0x50, //  # #   
+	0x50, //  # #   
+	0x00, //        
+	0x00, //        
+
+	// @48 '$' (7 pixels wide)
+	0x00, //        
+	0x10, //    #   
+	0x38, //   ###  
+	0x40, //  #     
+	0x40, //  #     
+	0x38, //   ###  
+	0x48, //  #  #  
+	0x70, //  ###   
+	0x10, //    #   
+	0x10, //    #   
+	0x00, //        
+	0x00, //        
+
+	// @60 '%' (7 pixels wide)
+	0x00, //        
+	0x20, //   #    
+	0x50, //  # #   
+	0x20, //   #    
+	0x0C, //     ## 
+	0x70, //  ###   
+	0x08, //     #  
+	0x14, //    # # 
+	0x08, //     #  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @72 '&' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x18, //    ##  
+	0x20, //   #    
+	0x20, //   #    
+	0x54, //  # # # 
+	0x48, //  #  #  
+	0x34, //   ## # 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @84 ''' (7 pixels wide)
+	0x00, //        
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @96 '(' (7 pixels wide)
+	0x00, //        
+	0x08, //     #  
+	0x08, //     #  
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x08, //     #  
+	0x08, //     #  
+	0x00, //        
+
+	// @108 ')' (7 pixels wide)
+	0x00, //        
+	0x20, //   #    
+	0x20, //   #    
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x20, //   #    
+	0x20, //   #    
+	0x00, //        
+
+	// @120 '*' (7 pixels wide)
+	0x00, //        
+	0x10, //    #   
+	0x7C, //  ##### 
+	0x10, //    #   
+	0x28, //   # #  
+	0x28, //   # #  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @132 '+' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0xFE, // #######
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @144 ',' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x18, //    ##  
+	0x10, //    #   
+	0x30, //   ##   
+	0x20, //   #    
+	0x00, //        
+
+	// @156 '-' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x7C, //  ##### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @168 '.' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x30, //   ##   
+	0x30, //   ##   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @180 '/' (7 pixels wide)
+	0x00, //        
+	0x04, //      # 
+	0x04, //      # 
+	0x08, //     #  
+	0x08, //     #  
+	0x10, //    #   
+	0x10, //    #   
+	0x20, //   #    
+	0x20, //   #    
+	0x40, //  #     
+	0x00, //        
+	0x00, //        
+
+	// @192 '0' (7 pixels wide)
+	0x00, //        
+	0x38, //   ###  
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @204 '1' (7 pixels wide)
+	0x00, //        
+	0x30, //   ##   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x7C, //  ##### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @216 '2' (7 pixels wide)
+	0x00, //        
+	0x38, //   ###  
+	0x44, //  #   # 
+	0x04, //      # 
+	0x08, //     #  
+	0x10, //    #   
+	0x20, //   #    
+	0x44, //  #   # 
+	0x7C, //  ##### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @228 '3' (7 pixels wide)
+	0x00, //        
+	0x38, //   ###  
+	0x44, //  #   # 
+	0x04, //      # 
+	0x18, //    ##  
+	0x04, //      # 
+	0x04, //      # 
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @240 '4' (7 pixels wide)
+	0x00, //        
+	0x0C, //     ## 
+	0x14, //    # # 
+	0x14, //    # # 
+	0x24, //   #  # 
+	0x44, //  #   # 
+	0x7E, //  ######
+	0x04, //      # 
+	0x0E, //     ###
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @252 '5' (7 pixels wide)
+	0x00, //        
+	0x3C, //   #### 
+	0x20, //   #    
+	0x20, //   #    
+	0x38, //   ###  
+	0x04, //      # 
+	0x04, //      # 
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @264 '6' (7 pixels wide)
+	0x00, //        
+	0x1C, //    ### 
+	0x20, //   #    
+	0x40, //  #     
+	0x78, //  ####  
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @276 '7' (7 pixels wide)
+	0x00, //        
+	0x7C, //  ##### 
+	0x44, //  #   # 
+	0x04, //      # 
+	0x08, //     #  
+	0x08, //     #  
+	0x08, //     #  
+	0x10, //    #   
+	0x10, //    #   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @288 '8' (7 pixels wide)
+	0x00, //        
+	0x38, //   ###  
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @300 '9' (7 pixels wide)
+	0x00, //        
+	0x38, //   ###  
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x3C, //   #### 
+	0x04, //      # 
+	0x08, //     #  
+	0x70, //  ###   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @312 ':' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x30, //   ##   
+	0x30, //   ##   
+	0x00, //        
+	0x00, //        
+	0x30, //   ##   
+	0x30, //   ##   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @324 ';' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x18, //    ##  
+	0x18, //    ##  
+	0x00, //        
+	0x00, //        
+	0x18, //    ##  
+	0x30, //   ##   
+	0x20, //   #    
+	0x00, //        
+	0x00, //        
+
+	// @336 '<' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x0C, //     ## 
+	0x10, //    #   
+	0x60, //  ##    
+	0x80, // #      
+	0x60, //  ##    
+	0x10, //    #   
+	0x0C, //     ## 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @348 '=' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x7C, //  ##### 
+	0x00, //        
+	0x7C, //  ##### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @360 '>' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0xC0, // ##     
+	0x20, //   #    
+	0x18, //    ##  
+	0x04, //      # 
+	0x18, //    ##  
+	0x20, //   #    
+	0xC0, // ##     
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @372 '?' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x18, //    ##  
+	0x24, //   #  # 
+	0x04, //      # 
+	0x08, //     #  
+	0x10, //    #   
+	0x00, //        
+	0x30, //   ##   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @384 '@' (7 pixels wide)
+	0x38, //   ###  
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x4C, //  #  ## 
+	0x54, //  # # # 
+	0x54, //  # # # 
+	0x4C, //  #  ## 
+	0x40, //  #     
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+
+	// @396 'A' (7 pixels wide)
+	0x00, //        
+	0x30, //   ##   
+	0x10, //    #   
+	0x28, //   # #  
+	0x28, //   # #  
+	0x28, //   # #  
+	0x7C, //  ##### 
+	0x44, //  #   # 
+	0xEE, // ### ###
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @408 'B' (7 pixels wide)
+	0x00, //        
+	0xF8, // #####  
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x78, //  ####  
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0xF8, // #####  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @420 'C' (7 pixels wide)
+	0x00, //        
+	0x3C, //   #### 
+	0x44, //  #   # 
+	0x40, //  #     
+	0x40, //  #     
+	0x40, //  #     
+	0x40, //  #     
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @432 'D' (7 pixels wide)
+	0x00, //        
+	0xF0, // ####   
+	0x48, //  #  #  
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x48, //  #  #  
+	0xF0, // ####   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @444 'E' (7 pixels wide)
+	0x00, //        
+	0xFC, // ###### 
+	0x44, //  #   # 
+	0x50, //  # #   
+	0x70, //  ###   
+	0x50, //  # #   
+	0x40, //  #     
+	0x44, //  #   # 
+	0xFC, // ###### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @456 'F' (7 pixels wide)
+	0x00, //        
+	0x7E, //  ######
+	0x22, //   #   #
+	0x28, //   # #  
+	0x38, //   ###  
+	0x28, //   # #  
+	0x20, //   #    
+	0x20, //   #    
+	0x70, //  ###   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @468 'G' (7 pixels wide)
+	0x00, //        
+	0x3C, //   #### 
+	0x44, //  #   # 
+	0x40, //  #     
+	0x40, //  #     
+	0x4E, //  #  ###
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @480 'H' (7 pixels wide)
+	0x00, //        
+	0xEE, // ### ###
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x7C, //  ##### 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0xEE, // ### ###
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @492 'I' (7 pixels wide)
+	0x00, //        
+	0x7C, //  ##### 
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x7C, //  ##### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @504 'J' (7 pixels wide)
+	0x00, //        
+	0x3C, //   #### 
+	0x08, //     #  
+	0x08, //     #  
+	0x08, //     #  
+	0x48, //  #  #  
+	0x48, //  #  #  
+	0x48, //  #  #  
+	0x30, //   ##   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @516 'K' (7 pixels wide)
+	0x00, //        
+	0xEE, // ### ###
+	0x44, //  #   # 
+	0x48, //  #  #  
+	0x50, //  # #   
+	0x70, //  ###   
+	0x48, //  #  #  
+	0x44, //  #   # 
+	0xE6, // ###  ##
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @528 'L' (7 pixels wide)
+	0x00, //        
+	0x70, //  ###   
+	0x20, //   #    
+	0x20, //   #    
+	0x20, //   #    
+	0x20, //   #    
+	0x24, //   #  # 
+	0x24, //   #  # 
+	0x7C, //  ##### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @540 'M' (7 pixels wide)
+	0x00, //        
+	0xEE, // ### ###
+	0x6C, //  ## ## 
+	0x6C, //  ## ## 
+	0x54, //  # # # 
+	0x54, //  # # # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0xEE, // ### ###
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @552 'N' (7 pixels wide)
+	0x00, //        
+	0xEE, // ### ###
+	0x64, //  ##  # 
+	0x64, //  ##  # 
+	0x54, //  # # # 
+	0x54, //  # # # 
+	0x54, //  # # # 
+	0x4C, //  #  ## 
+	0xEC, // ### ## 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @564 'O' (7 pixels wide)
+	0x00, //        
+	0x38, //   ###  
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @576 'P' (7 pixels wide)
+	0x00, //        
+	0x78, //  ####  
+	0x24, //   #  # 
+	0x24, //   #  # 
+	0x24, //   #  # 
+	0x38, //   ###  
+	0x20, //   #    
+	0x20, //   #    
+	0x70, //  ###   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @588 'Q' (7 pixels wide)
+	0x00, //        
+	0x38, //   ###  
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x1C, //    ### 
+	0x00, //        
+	0x00, //        
+
+	// @600 'R' (7 pixels wide)
+	0x00, //        
+	0xF8, // #####  
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x78, //  ####  
+	0x48, //  #  #  
+	0x44, //  #   # 
+	0xE2, // ###   #
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @612 'S' (7 pixels wide)
+	0x00, //        
+	0x34, //   ## # 
+	0x4C, //  #  ## 
+	0x40, //  #     
+	0x38, //   ###  
+	0x04, //      # 
+	0x04, //      # 
+	0x64, //  ##  # 
+	0x58, //  # ##  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @624 'T' (7 pixels wide)
+	0x00, //        
+	0xFE, // #######
+	0x92, // #  #  #
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @636 'U' (7 pixels wide)
+	0x00, //        
+	0xEE, // ### ###
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @648 'V' (7 pixels wide)
+	0x00, //        
+	0xEE, // ### ###
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x28, //   # #  
+	0x28, //   # #  
+	0x28, //   # #  
+	0x10, //    #   
+	0x10, //    #   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @660 'W' (7 pixels wide)
+	0x00, //        
+	0xEE, // ### ###
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x54, //  # # # 
+	0x54, //  # # # 
+	0x54, //  # # # 
+	0x54, //  # # # 
+	0x28, //   # #  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @672 'X' (7 pixels wide)
+	0x00, //        
+	0xC6, // ##   ##
+	0x44, //  #   # 
+	0x28, //   # #  
+	0x10, //    #   
+	0x10, //    #   
+	0x28, //   # #  
+	0x44, //  #   # 
+	0xC6, // ##   ##
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @684 'Y' (7 pixels wide)
+	0x00, //        
+	0xEE, // ### ###
+	0x44, //  #   # 
+	0x28, //   # #  
+	0x28, //   # #  
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @696 'Z' (7 pixels wide)
+	0x00, //        
+	0x7C, //  ##### 
+	0x44, //  #   # 
+	0x08, //     #  
+	0x10, //    #   
+	0x10, //    #   
+	0x20, //   #    
+	0x44, //  #   # 
+	0x7C, //  ##### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @708 '[' (7 pixels wide)
+	0x00, //        
+	0x38, //   ###  
+	0x20, //   #    
+	0x20, //   #    
+	0x20, //   #    
+	0x20, //   #    
+	0x20, //   #    
+	0x20, //   #    
+	0x20, //   #    
+	0x20, //   #    
+	0x38, //   ###  
+	0x00, //        
+
+	// @720 '\' (7 pixels wide)
+	0x00, //        
+	0x40, //  #     
+	0x20, //   #    
+	0x20, //   #    
+	0x20, //   #    
+	0x10, //    #   
+	0x10, //    #   
+	0x08, //     #  
+	0x08, //     #  
+	0x08, //     #  
+	0x00, //        
+	0x00, //        
+
+	// @732 ']' (7 pixels wide)
+	0x00, //        
+	0x38, //   ###  
+	0x08, //     #  
+	0x08, //     #  
+	0x08, //     #  
+	0x08, //     #  
+	0x08, //     #  
+	0x08, //     #  
+	0x08, //     #  
+	0x08, //     #  
+	0x38, //   ###  
+	0x00, //        
+
+	// @744 '^' (7 pixels wide)
+	0x00, //        
+	0x10, //    #   
+	0x10, //    #   
+	0x28, //   # #  
+	0x44, //  #   # 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @756 '_' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0xFE, // #######
+
+	// @768 '`' (7 pixels wide)
+	0x00, //        
+	0x10, //    #   
+	0x08, //     #  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @780 'a' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x38, //   ###  
+	0x44, //  #   # 
+	0x3C, //   #### 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x3E, //   #####
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @792 'b' (7 pixels wide)
+	0x00, //        
+	0xC0, // ##     
+	0x40, //  #     
+	0x58, //  # ##  
+	0x64, //  ##  # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0xF8, // #####  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @804 'c' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x3C, //   #### 
+	0x44, //  #   # 
+	0x40, //  #     
+	0x40, //  #     
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @816 'd' (7 pixels wide)
+	0x00, //        
+	0x0C, //     ## 
+	0x04, //      # 
+	0x34, //   ## # 
+	0x4C, //  #  ## 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x3E, //   #####
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @828 'e' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x38, //   ###  
+	0x44, //  #   # 
+	0x7C, //  ##### 
+	0x40, //  #     
+	0x40, //  #     
+	0x3C, //   #### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @840 'f' (7 pixels wide)
+	0x00, //        
+	0x1C, //    ### 
+	0x20, //   #    
+	0x7C, //  ##### 
+	0x20, //   #    
+	0x20, //   #    
+	0x20, //   #    
+	0x20, //   #    
+	0x7C, //  ##### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @852 'g' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x36, //   ## ##
+	0x4C, //  #  ## 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x3C, //   #### 
+	0x04, //      # 
+	0x38, //   ###  
+	0x00, //        
+
+	// @864 'h' (7 pixels wide)
+	0x00, //        
+	0xC0, // ##     
+	0x40, //  #     
+	0x58, //  # ##  
+	0x64, //  ##  # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0xEE, // ### ###
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @876 'i' (7 pixels wide)
+	0x00, //        
+	0x10, //    #   
+	0x00, //        
+	0x70, //  ###   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x7C, //  ##### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @888 'j' (7 pixels wide)
+	0x00, //        
+	0x10, //    #   
+	0x00, //        
+	0x78, //  ####  
+	0x08, //     #  
+	0x08, //     #  
+	0x08, //     #  
+	0x08, //     #  
+	0x08, //     #  
+	0x08, //     #  
+	0x70, //  ###   
+	0x00, //        
+
+	// @900 'k' (7 pixels wide)
+	0x00, //        
+	0xC0, // ##     
+	0x40, //  #     
+	0x5C, //  # ### 
+	0x48, //  #  #  
+	0x70, //  ###   
+	0x50, //  # #   
+	0x48, //  #  #  
+	0xDC, // ## ### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @912 'l' (7 pixels wide)
+	0x00, //        
+	0x30, //   ##   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x7C, //  ##### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @924 'm' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0xE8, // ### #  
+	0x54, //  # # # 
+	0x54, //  # # # 
+	0x54, //  # # # 
+	0x54, //  # # # 
+	0xFE, // #######
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @936 'n' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0xD8, // ## ##  
+	0x64, //  ##  # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0xEE, // ### ###
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @948 'o' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x38, //   ###  
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @960 'p' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0xD8, // ## ##  
+	0x64, //  ##  # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x78, //  ####  
+	0x40, //  #     
+	0xE0, // ###    
+	0x00, //        
+
+	// @972 'q' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x36, //   ## ##
+	0x4C, //  #  ## 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x3C, //   #### 
+	0x04, //      # 
+	0x0E, //     ###
+	0x00, //        
+
+	// @984 'r' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x6C, //  ## ## 
+	0x30, //   ##   
+	0x20, //   #    
+	0x20, //   #    
+	0x20, //   #    
+	0x7C, //  ##### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @996 's' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x3C, //   #### 
+	0x44, //  #   # 
+	0x38, //   ###  
+	0x04, //      # 
+	0x44, //  #   # 
+	0x78, //  ####  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @1008 't' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x20, //   #    
+	0x7C, //  ##### 
+	0x20, //   #    
+	0x20, //   #    
+	0x20, //   #    
+	0x22, //   #   #
+	0x1C, //    ### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @1020 'u' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0xCC, // ##  ## 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x4C, //  #  ## 
+	0x36, //   ## ##
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @1032 'v' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0xEE, // ### ###
+	0x44, //  #   # 
+	0x44, //  #   # 
+	0x28, //   # #  
+	0x28, //   # #  
+	0x10, //    #   
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @1044 'w' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0xEE, // ### ###
+	0x44, //  #   # 
+	0x54, //  # # # 
+	0x54, //  # # # 
+	0x54, //  # # # 
+	0x28, //   # #  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @1056 'x' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0xCC, // ##  ## 
+	0x48, //  #  #  
+	0x30, //   ##   
+	0x30, //   ##   
+	0x48, //  #  #  
+	0xCC, // ##  ## 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @1068 'y' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0xEE, // ### ###
+	0x44, //  #   # 
+	0x24, //   #  # 
+	0x28, //   # #  
+	0x18, //    ##  
+	0x10, //    #   
+	0x10, //    #   
+	0x78, //  ####  
+	0x00, //        
+
+	// @1080 'z' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x7C, //  ##### 
+	0x48, //  #  #  
+	0x10, //    #   
+	0x20, //   #    
+	0x44, //  #   # 
+	0x7C, //  ##### 
+	0x00, //        
+	0x00, //        
+	0x00, //        
+
+	// @1092 '{' (7 pixels wide)
+	0x00, //        
+	0x08, //     #  
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x20, //   #    
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x08, //     #  
+	0x00, //        
+
+	// @1104 '|' (7 pixels wide)
+	0x00, //        
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x00, //        
+	0x00, //        
+
+	// @1116 '}' (7 pixels wide)
+	0x00, //        
+	0x20, //   #    
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x08, //     #  
+	0x10, //    #   
+	0x10, //    #   
+	0x10, //    #   
+	0x20, //   #    
+	0x00, //        
+
+	// @1128 '~' (7 pixels wide)
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x24, //   #  # 
+	0x58, //  # ##  
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+	0x00, //        
+};
+
+sFONT Font12 = {
+  Font12_Table,
+  7, /* Width */
+  12, /* Height */
+};
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 1765 - 0
Arduino/epd2in7_V2/font16.cpp

@@ -0,0 +1,1765 @@
+/**
+  ******************************************************************************
+  * @file    font16.cpp
+  * @author  MCD Application Team
+  * @version V1.0.0
+  * @date    18-February-2014
+  * @brief   This file provides text font16. 
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "fonts.h"
+#include <avr/pgmspace.h>
+
+// 
+//  Font data for Courier New 12pt
+// 
+
+const uint8_t Font16_Table[] PROGMEM = 
+{
+	// @0 ' ' (11 pixels wide)
+	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, //            
+
+	// @32 '!' (11 pixels wide)
+	0x00, 0x00, //            
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x00, 0x00, //            
+	0x0C, 0x00, //     ##     
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @64 '"' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1D, 0xC0, //    ### ### 
+	0x1D, 0xC0, //    ### ### 
+	0x08, 0x80, //     #   #  
+	0x08, 0x80, //     #   #  
+	0x08, 0x80, //     #   #  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @96 '#' (11 pixels wide)
+	0x00, 0x00, //            
+	0x0D, 0x80, //     ## ##  
+	0x0D, 0x80, //     ## ##  
+	0x0D, 0x80, //     ## ##  
+	0x0D, 0x80, //     ## ##  
+	0x3F, 0xC0, //   ######## 
+	0x1B, 0x00, //    ## ##   
+	0x3F, 0xC0, //   ######## 
+	0x1B, 0x00, //    ## ##   
+	0x1B, 0x00, //    ## ##   
+	0x1B, 0x00, //    ## ##   
+	0x1B, 0x00, //    ## ##   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @128 '$' (11 pixels wide)
+	0x04, 0x00, //      #     
+	0x1F, 0x80, //    ######  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x38, 0x00, //   ###      
+	0x1E, 0x00, //    ####    
+	0x0F, 0x00, //     ####   
+	0x03, 0x80, //       ###  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x3F, 0x00, //   ######   
+	0x04, 0x00, //      #     
+	0x04, 0x00, //      #     
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @160 '%' (11 pixels wide)
+	0x00, 0x00, //            
+	0x18, 0x00, //    ##      
+	0x24, 0x00, //   #  #     
+	0x24, 0x00, //   #  #     
+	0x18, 0xC0, //    ##   ## 
+	0x07, 0x80, //      ####  
+	0x1E, 0x00, //    ####    
+	0x31, 0x80, //   ##   ##  
+	0x02, 0x40, //       #  # 
+	0x02, 0x40, //       #  # 
+	0x01, 0x80, //        ##  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @192 '&' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x0F, 0x00, //     ####   
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x0C, 0x00, //     ##     
+	0x1D, 0x80, //    ### ##  
+	0x37, 0x00, //   ## ###   
+	0x33, 0x00, //   ##  ##   
+	0x1D, 0x80, //    ### ##  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @224 ''' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x07, 0x00, //      ###   
+	0x07, 0x00, //      ###   
+	0x02, 0x00, //       #    
+	0x02, 0x00, //       #    
+	0x02, 0x00, //       #    
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @256 '(' (11 pixels wide)
+	0x00, 0x00, //            
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x06, 0x00, //      ##    
+	0x0E, 0x00, //     ###    
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0E, 0x00, //     ###    
+	0x06, 0x00, //      ##    
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @288 ')' (11 pixels wide)
+	0x00, 0x00, //            
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x0C, 0x00, //     ##     
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x0C, 0x00, //     ##     
+	0x1C, 0x00, //    ###     
+	0x18, 0x00, //    ##      
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @320 '*' (11 pixels wide)
+	0x00, 0x00, //            
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x3F, 0xC0, //   ######## 
+	0x3F, 0xC0, //   ######## 
+	0x0F, 0x00, //     ####   
+	0x1F, 0x80, //    ######  
+	0x19, 0x80, //    ##  ##  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @352 '+' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x04, 0x00, //      #     
+	0x04, 0x00, //      #     
+	0x04, 0x00, //      #     
+	0x3F, 0x80, //   #######  
+	0x04, 0x00, //      #     
+	0x04, 0x00, //      #     
+	0x04, 0x00, //      #     
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @384 ',' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x06, 0x00, //      ##    
+	0x04, 0x00, //      #     
+	0x0C, 0x00, //     ##     
+	0x08, 0x00, //     #      
+	0x08, 0x00, //     #      
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @416 '-' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x3F, 0x80, //   #######  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @448 '.' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @480 '/' (11 pixels wide)
+	0x00, 0xC0, //         ## 
+	0x00, 0xC0, //         ## 
+	0x01, 0x80, //        ##  
+	0x01, 0x80, //        ##  
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x06, 0x00, //      ##    
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x30, 0x00, //   ##       
+	0x30, 0x00, //   ##       
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @512 '0' (11 pixels wide)
+	0x00, 0x00, //            
+	0x0E, 0x00, //     ###    
+	0x1B, 0x00, //    ## ##   
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x1B, 0x00, //    ## ##   
+	0x0E, 0x00, //     ###    
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @544 '1' (11 pixels wide)
+	0x00, 0x00, //            
+	0x06, 0x00, //      ##    
+	0x3E, 0x00, //   #####    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x3F, 0xC0, //   ######## 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @576 '2' (11 pixels wide)
+	0x00, 0x00, //            
+	0x0F, 0x00, //     ####   
+	0x19, 0x80, //    ##  ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x03, 0x00, //       ##   
+	0x06, 0x00, //      ##    
+	0x0C, 0x00, //     ##     
+	0x18, 0x00, //    ##      
+	0x30, 0x00, //   ##       
+	0x3F, 0x80, //   #######  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @608 '3' (11 pixels wide)
+	0x00, 0x00, //            
+	0x3F, 0x00, //   ######   
+	0x61, 0x80, //  ##    ##  
+	0x01, 0x80, //        ##  
+	0x03, 0x00, //       ##   
+	0x1F, 0x00, //    #####   
+	0x03, 0x80, //       ###  
+	0x01, 0x80, //        ##  
+	0x01, 0x80, //        ##  
+	0x61, 0x80, //  ##    ##  
+	0x3F, 0x00, //   ######   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @640 '4' (11 pixels wide)
+	0x00, 0x00, //            
+	0x07, 0x00, //      ###   
+	0x07, 0x00, //      ###   
+	0x0F, 0x00, //     ####   
+	0x0B, 0x00, //     # ##   
+	0x1B, 0x00, //    ## ##   
+	0x13, 0x00, //    #  ##   
+	0x33, 0x00, //   ##  ##   
+	0x3F, 0x80, //   #######  
+	0x03, 0x00, //       ##   
+	0x0F, 0x80, //     #####  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @672 '5' (11 pixels wide)
+	0x00, 0x00, //            
+	0x1F, 0x80, //    ######  
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x1F, 0x00, //    #####   
+	0x11, 0x80, //    #   ##  
+	0x01, 0x80, //        ##  
+	0x01, 0x80, //        ##  
+	0x21, 0x80, //   #    ##  
+	0x1F, 0x00, //    #####   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @704 '6' (11 pixels wide)
+	0x00, 0x00, //            
+	0x07, 0x80, //      ####  
+	0x1C, 0x00, //    ###     
+	0x18, 0x00, //    ##      
+	0x30, 0x00, //   ##       
+	0x37, 0x00, //   ## ###   
+	0x39, 0x80, //   ###  ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x19, 0x80, //    ##  ##  
+	0x0F, 0x00, //     ####   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @736 '7' (11 pixels wide)
+	0x00, 0x00, //            
+	0x7F, 0x00, //  #######   
+	0x43, 0x00, //  #    ##   
+	0x03, 0x00, //       ##   
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @768 '8' (11 pixels wide)
+	0x00, 0x00, //            
+	0x1F, 0x00, //    #####   
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x1F, 0x00, //    #####   
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x1F, 0x00, //    #####   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @800 '9' (11 pixels wide)
+	0x00, 0x00, //            
+	0x1E, 0x00, //    ####    
+	0x33, 0x00, //   ##  ##   
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x33, 0x80, //   ##  ###  
+	0x1D, 0x80, //    ### ##  
+	0x01, 0x80, //        ##  
+	0x03, 0x00, //       ##   
+	0x07, 0x00, //      ###   
+	0x3C, 0x00, //   ####     
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @832 ':' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @864 ';' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x06, 0x00, //      ##    
+	0x04, 0x00, //      #     
+	0x08, 0x00, //     #      
+	0x08, 0x00, //     #      
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @896 '<' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0xC0, //         ## 
+	0x03, 0x00, //       ##   
+	0x04, 0x00, //      #     
+	0x18, 0x00, //    ##      
+	0x60, 0x00, //  ##        
+	0x18, 0x00, //    ##      
+	0x04, 0x00, //      #     
+	0x03, 0x00, //       ##   
+	0x00, 0xC0, //         ## 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @928 '=' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7F, 0xC0, //  ######### 
+	0x00, 0x00, //            
+	0x7F, 0xC0, //  ######### 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @960 '>' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x60, 0x00, //  ##        
+	0x18, 0x00, //    ##      
+	0x04, 0x00, //      #     
+	0x03, 0x00, //       ##   
+	0x00, 0xC0, //         ## 
+	0x03, 0x00, //       ##   
+	0x04, 0x00, //      #     
+	0x18, 0x00, //    ##      
+	0x60, 0x00, //  ##        
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @992 '?' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1F, 0x00, //    #####   
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x01, 0x80, //        ##  
+	0x07, 0x00, //      ###   
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x00, 0x00, //            
+	0x0C, 0x00, //     ##     
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1024 '@' (11 pixels wide)
+	0x00, 0x00, //            
+	0x0E, 0x00, //     ###    
+	0x11, 0x00, //    #   #   
+	0x21, 0x00, //   #    #   
+	0x21, 0x00, //   #    #   
+	0x27, 0x00, //   #  ###   
+	0x29, 0x00, //   # #  #   
+	0x29, 0x00, //   # #  #   
+	0x27, 0x00, //   #  ###   
+	0x20, 0x00, //   #        
+	0x11, 0x00, //    #   #   
+	0x0E, 0x00, //     ###    
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1056 'A' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x3F, 0x00, //   ######   
+	0x0F, 0x00, //     ####   
+	0x09, 0x00, //     #  #   
+	0x19, 0x80, //    ##  ##  
+	0x19, 0x80, //    ##  ##  
+	0x1F, 0x80, //    ######  
+	0x30, 0xC0, //   ##    ## 
+	0x30, 0xC0, //   ##    ## 
+	0x79, 0xE0, //  ####  ####
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1088 'B' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7F, 0x00, //  #######   
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x3F, 0x00, //   ######   
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x7F, 0x00, //  #######   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1120 'C' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1F, 0x40, //    ##### # 
+	0x30, 0xC0, //   ##    ## 
+	0x60, 0x40, //  ##      # 
+	0x60, 0x00, //  ##        
+	0x60, 0x00, //  ##        
+	0x60, 0x00, //  ##        
+	0x60, 0x40, //  ##      # 
+	0x30, 0x80, //   ##    #  
+	0x1F, 0x00, //    #####   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1152 'D' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7F, 0x00, //  #######   
+	0x31, 0x80, //   ##   ##  
+	0x30, 0xC0, //   ##    ## 
+	0x30, 0xC0, //   ##    ## 
+	0x30, 0xC0, //   ##    ## 
+	0x30, 0xC0, //   ##    ## 
+	0x30, 0xC0, //   ##    ## 
+	0x31, 0x80, //   ##   ##  
+	0x7F, 0x00, //  #######   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1184 'E' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7F, 0x80, //  ########  
+	0x30, 0x80, //   ##    #  
+	0x30, 0x80, //   ##    #  
+	0x32, 0x00, //   ##  #    
+	0x3E, 0x00, //   #####    
+	0x32, 0x00, //   ##  #    
+	0x30, 0x80, //   ##    #  
+	0x30, 0x80, //   ##    #  
+	0x7F, 0x80, //  ########  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1216 'F' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7F, 0xC0, //  ######### 
+	0x30, 0x40, //   ##     # 
+	0x30, 0x40, //   ##     # 
+	0x32, 0x00, //   ##  #    
+	0x3E, 0x00, //   #####    
+	0x32, 0x00, //   ##  #    
+	0x30, 0x00, //   ##       
+	0x30, 0x00, //   ##       
+	0x7C, 0x00, //  #####     
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1248 'G' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1E, 0x80, //    #### #  
+	0x31, 0x80, //   ##   ##  
+	0x60, 0x80, //  ##     #  
+	0x60, 0x00, //  ##        
+	0x60, 0x00, //  ##        
+	0x67, 0xC0, //  ##  ##### 
+	0x61, 0x80, //  ##    ##  
+	0x31, 0x80, //   ##   ##  
+	0x1F, 0x00, //    #####   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1280 'H' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7B, 0xC0, //  #### #### 
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x3F, 0x80, //   #######  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x7B, 0xC0, //  #### #### 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1312 'I' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x3F, 0xC0, //   ######## 
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x3F, 0xC0, //   ######## 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1344 'J' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1F, 0xC0, //    ####### 
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x63, 0x00, //  ##   ##   
+	0x63, 0x00, //  ##   ##   
+	0x63, 0x00, //  ##   ##   
+	0x3E, 0x00, //   #####    
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1376 'K' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7B, 0xC0, //  #### #### 
+	0x31, 0x80, //   ##   ##  
+	0x33, 0x00, //   ##  ##   
+	0x36, 0x00, //   ## ##    
+	0x3C, 0x00, //   ####     
+	0x3E, 0x00, //   #####    
+	0x33, 0x00, //   ##  ##   
+	0x31, 0x80, //   ##   ##  
+	0x79, 0xC0, //  ####  ### 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1408 'L' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7E, 0x00, //  ######    
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x18, 0x40, //    ##    # 
+	0x18, 0x40, //    ##    # 
+	0x18, 0x40, //    ##    # 
+	0x7F, 0xC0, //  ######### 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1440 'M' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0xE0, 0xE0, // ###     ###
+	0x60, 0xC0, //  ##     ## 
+	0x71, 0xC0, //  ###   ### 
+	0x7B, 0xC0, //  #### #### 
+	0x6A, 0xC0, //  ## # # ## 
+	0x6E, 0xC0, //  ## ### ## 
+	0x64, 0xC0, //  ##  #  ## 
+	0x60, 0xC0, //  ##     ## 
+	0xFB, 0xE0, // ##### #####
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1472 'N' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x73, 0xC0, //  ###  #### 
+	0x31, 0x80, //   ##   ##  
+	0x39, 0x80, //   ###  ##  
+	0x3D, 0x80, //   #### ##  
+	0x35, 0x80, //   ## # ##  
+	0x37, 0x80, //   ## ####  
+	0x33, 0x80, //   ##  ###  
+	0x31, 0x80, //   ##   ##  
+	0x79, 0x80, //  ####  ##  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1504 'O' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1F, 0x00, //    #####   
+	0x31, 0x80, //   ##   ##  
+	0x60, 0xC0, //  ##     ## 
+	0x60, 0xC0, //  ##     ## 
+	0x60, 0xC0, //  ##     ## 
+	0x60, 0xC0, //  ##     ## 
+	0x60, 0xC0, //  ##     ## 
+	0x31, 0x80, //   ##   ##  
+	0x1F, 0x00, //    #####   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1536 'P' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7F, 0x00, //  #######   
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x3F, 0x00, //   ######   
+	0x30, 0x00, //   ##       
+	0x30, 0x00, //   ##       
+	0x7E, 0x00, //  ######    
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1568 'Q' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1F, 0x00, //    #####   
+	0x31, 0x80, //   ##   ##  
+	0x60, 0xC0, //  ##     ## 
+	0x60, 0xC0, //  ##     ## 
+	0x60, 0xC0, //  ##     ## 
+	0x60, 0xC0, //  ##     ## 
+	0x60, 0xC0, //  ##     ## 
+	0x31, 0x80, //   ##   ##  
+	0x1F, 0x00, //    #####   
+	0x0C, 0xC0, //     ##  ## 
+	0x1F, 0x80, //    ######  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1600 'R' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7F, 0x00, //  #######   
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x3E, 0x00, //   #####    
+	0x33, 0x00, //   ##  ##   
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x7C, 0xE0, //  #####  ###
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1632 'S' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1F, 0x80, //    ######  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x38, 0x00, //   ###      
+	0x1F, 0x00, //    #####   
+	0x03, 0x80, //       ###  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x3F, 0x00, //   ######   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1664 'T' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7F, 0x80, //  ########  
+	0x4C, 0x80, //  #  ##  #  
+	0x4C, 0x80, //  #  ##  #  
+	0x4C, 0x80, //  #  ##  #  
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x3F, 0x00, //   ######   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1696 'U' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7B, 0xC0, //  #### #### 
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x1F, 0x00, //    #####   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1728 'V' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7B, 0xC0, //  #### #### 
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x1B, 0x00, //    ## ##   
+	0x1B, 0x00, //    ## ##   
+	0x1B, 0x00, //    ## ##   
+	0x0A, 0x00, //     # #    
+	0x0E, 0x00, //     ###    
+	0x0E, 0x00, //     ###    
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1760 'W' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0xFB, 0xE0, // ##### #####
+	0x60, 0xC0, //  ##     ## 
+	0x64, 0xC0, //  ##  #  ## 
+	0x6E, 0xC0, //  ## ### ## 
+	0x6E, 0xC0, //  ## ### ## 
+	0x2A, 0x80, //   # # # #  
+	0x3B, 0x80, //   ### ###  
+	0x3B, 0x80, //   ### ###  
+	0x31, 0x80, //   ##   ##  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1792 'X' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7B, 0xC0, //  #### #### 
+	0x31, 0x80, //   ##   ##  
+	0x1B, 0x00, //    ## ##   
+	0x0E, 0x00, //     ###    
+	0x0E, 0x00, //     ###    
+	0x0E, 0x00, //     ###    
+	0x1B, 0x00, //    ## ##   
+	0x31, 0x80, //   ##   ##  
+	0x7B, 0xC0, //  #### #### 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1824 'Y' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x79, 0xE0, //  ####  ####
+	0x30, 0xC0, //   ##    ## 
+	0x19, 0x80, //    ##  ##  
+	0x0F, 0x00, //     ####   
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x1F, 0x80, //    ######  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1856 'Z' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x3F, 0x80, //   #######  
+	0x21, 0x80, //   #    ##  
+	0x23, 0x00, //   #   ##   
+	0x06, 0x00, //      ##    
+	0x04, 0x00, //      #     
+	0x0C, 0x00, //     ##     
+	0x18, 0x80, //    ##   #  
+	0x30, 0x80, //   ##    #  
+	0x3F, 0x80, //   #######  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1888 '[' (11 pixels wide)
+	0x00, 0x00, //            
+	0x07, 0x80, //      ####  
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x07, 0x80, //      ####  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1920 '\' (11 pixels wide)
+	0x30, 0x00, //   ##       
+	0x30, 0x00, //   ##       
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x06, 0x00, //      ##    
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x01, 0x80, //        ##  
+	0x01, 0x80, //        ##  
+	0x00, 0xC0, //         ## 
+	0x00, 0xC0, //         ## 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1952 ']' (11 pixels wide)
+	0x00, 0x00, //            
+	0x1E, 0x00, //    ####    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x1E, 0x00, //    ####    
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @1984 '^' (11 pixels wide)
+	0x04, 0x00, //      #     
+	0x0A, 0x00, //     # #    
+	0x0A, 0x00, //     # #    
+	0x11, 0x00, //    #   #   
+	0x20, 0x80, //   #     #  
+	0x20, 0x80, //   #     #  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2016 '_' (11 pixels wide)
+	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, //            
+	0xFF, 0xE0, // ###########
+
+	// @2048 '`' (11 pixels wide)
+	0x08, 0x00, //     #      
+	0x04, 0x00, //      #     
+	0x02, 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, //            
+
+	// @2080 'a' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1F, 0x00, //    #####   
+	0x01, 0x80, //        ##  
+	0x01, 0x80, //        ##  
+	0x1F, 0x80, //    ######  
+	0x31, 0x80, //   ##   ##  
+	0x33, 0x80, //   ##  ###  
+	0x1D, 0xC0, //    ### ### 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2112 'b' (11 pixels wide)
+	0x00, 0x00, //            
+	0x70, 0x00, //  ###       
+	0x30, 0x00, //   ##       
+	0x30, 0x00, //   ##       
+	0x37, 0x00, //   ## ###   
+	0x39, 0x80, //   ###  ##  
+	0x30, 0xC0, //   ##    ## 
+	0x30, 0xC0, //   ##    ## 
+	0x30, 0xC0, //   ##    ## 
+	0x39, 0x80, //   ###  ##  
+	0x77, 0x00, //  ### ###   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2144 'c' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1E, 0x80, //    #### #  
+	0x31, 0x80, //   ##   ##  
+	0x60, 0x80, //  ##     #  
+	0x60, 0x00, //  ##        
+	0x60, 0x80, //  ##     #  
+	0x31, 0x80, //   ##   ##  
+	0x1F, 0x00, //    #####   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2176 'd' (11 pixels wide)
+	0x00, 0x00, //            
+	0x03, 0x80, //       ###  
+	0x01, 0x80, //        ##  
+	0x01, 0x80, //        ##  
+	0x1D, 0x80, //    ### ##  
+	0x33, 0x80, //   ##  ###  
+	0x61, 0x80, //  ##    ##  
+	0x61, 0x80, //  ##    ##  
+	0x61, 0x80, //  ##    ##  
+	0x33, 0x80, //   ##  ###  
+	0x1D, 0xC0, //    ### ### 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2208 'e' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1F, 0x00, //    #####   
+	0x31, 0x80, //   ##   ##  
+	0x60, 0xC0, //  ##     ## 
+	0x7F, 0xC0, //  ######### 
+	0x60, 0x00, //  ##        
+	0x30, 0xC0, //   ##    ## 
+	0x1F, 0x80, //    ######  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2240 'f' (11 pixels wide)
+	0x00, 0x00, //            
+	0x07, 0xE0, //      ######
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x3F, 0x80, //   #######  
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x3F, 0x80, //   #######  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2272 'g' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1D, 0xC0, //    ### ### 
+	0x33, 0x80, //   ##  ###  
+	0x61, 0x80, //  ##    ##  
+	0x61, 0x80, //  ##    ##  
+	0x61, 0x80, //  ##    ##  
+	0x33, 0x80, //   ##  ###  
+	0x1D, 0x80, //    ### ##  
+	0x01, 0x80, //        ##  
+	0x01, 0x80, //        ##  
+	0x1F, 0x00, //    #####   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2304 'h' (11 pixels wide)
+	0x00, 0x00, //            
+	0x70, 0x00, //  ###       
+	0x30, 0x00, //   ##       
+	0x30, 0x00, //   ##       
+	0x37, 0x00, //   ## ###   
+	0x39, 0x80, //   ###  ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x7B, 0xC0, //  #### #### 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2336 'i' (11 pixels wide)
+	0x00, 0x00, //            
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x00, 0x00, //            
+	0x1E, 0x00, //    ####    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x3F, 0xC0, //   ######## 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2368 'j' (11 pixels wide)
+	0x00, 0x00, //            
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x00, 0x00, //            
+	0x3F, 0x00, //   ######   
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x03, 0x00, //       ##   
+	0x3E, 0x00, //   #####    
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2400 'k' (11 pixels wide)
+	0x00, 0x00, //            
+	0x70, 0x00, //  ###       
+	0x30, 0x00, //   ##       
+	0x30, 0x00, //   ##       
+	0x37, 0x80, //   ## ####  
+	0x36, 0x00, //   ## ##    
+	0x3C, 0x00, //   ####     
+	0x3C, 0x00, //   ####     
+	0x36, 0x00, //   ## ##    
+	0x33, 0x00, //   ##  ##   
+	0x77, 0xC0, //  ### ##### 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2432 'l' (11 pixels wide)
+	0x00, 0x00, //            
+	0x1E, 0x00, //    ####    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x3F, 0xC0, //   ######## 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2464 'm' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7F, 0x80, //  ########  
+	0x36, 0xC0, //   ## ## ## 
+	0x36, 0xC0, //   ## ## ## 
+	0x36, 0xC0, //   ## ## ## 
+	0x36, 0xC0, //   ## ## ## 
+	0x36, 0xC0, //   ## ## ## 
+	0x76, 0xE0, //  ### ## ###
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2496 'n' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x77, 0x00, //  ### ###   
+	0x39, 0x80, //   ###  ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x7B, 0xC0, //  #### #### 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2528 'o' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1F, 0x00, //    #####   
+	0x31, 0x80, //   ##   ##  
+	0x60, 0xC0, //  ##     ## 
+	0x60, 0xC0, //  ##     ## 
+	0x60, 0xC0, //  ##     ## 
+	0x31, 0x80, //   ##   ##  
+	0x1F, 0x00, //    #####   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2560 'p' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x77, 0x00, //  ### ###   
+	0x39, 0x80, //   ###  ##  
+	0x30, 0xC0, //   ##    ## 
+	0x30, 0xC0, //   ##    ## 
+	0x30, 0xC0, //   ##    ## 
+	0x39, 0x80, //   ###  ##  
+	0x37, 0x00, //   ## ###   
+	0x30, 0x00, //   ##       
+	0x30, 0x00, //   ##       
+	0x7C, 0x00, //  #####     
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2592 'q' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1D, 0xC0, //    ### ### 
+	0x33, 0x80, //   ##  ###  
+	0x61, 0x80, //  ##    ##  
+	0x61, 0x80, //  ##    ##  
+	0x61, 0x80, //  ##    ##  
+	0x33, 0x80, //   ##  ###  
+	0x1D, 0x80, //    ### ##  
+	0x01, 0x80, //        ##  
+	0x01, 0x80, //        ##  
+	0x07, 0xC0, //      ##### 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2624 'r' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7B, 0x80, //  #### ###  
+	0x1C, 0xC0, //    ###  ## 
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x7F, 0x00, //  #######   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2656 's' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x1F, 0x80, //    ######  
+	0x31, 0x80, //   ##   ##  
+	0x3C, 0x00, //   ####     
+	0x1F, 0x00, //    #####   
+	0x03, 0x80, //       ###  
+	0x31, 0x80, //   ##   ##  
+	0x3F, 0x00, //   ######   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2688 't' (11 pixels wide)
+	0x00, 0x00, //            
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x7F, 0x00, //  #######   
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x18, 0x00, //    ##      
+	0x18, 0x80, //    ##   #  
+	0x0F, 0x00, //     ####   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2720 'u' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x73, 0x80, //  ###  ###  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x33, 0x80, //   ##  ###  
+	0x1D, 0xC0, //    ### ### 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2752 'v' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7B, 0xC0, //  #### #### 
+	0x31, 0x80, //   ##   ##  
+	0x31, 0x80, //   ##   ##  
+	0x1B, 0x00, //    ## ##   
+	0x1B, 0x00, //    ## ##   
+	0x0E, 0x00, //     ###    
+	0x0E, 0x00, //     ###    
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2784 'w' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0xF1, 0xE0, // ####   ####
+	0x60, 0xC0, //  ##     ## 
+	0x64, 0xC0, //  ##  #  ## 
+	0x6E, 0xC0, //  ## ### ## 
+	0x3B, 0x80, //   ### ###  
+	0x3B, 0x80, //   ### ###  
+	0x31, 0x80, //   ##   ##  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2816 'x' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x7B, 0xC0, //  #### #### 
+	0x1B, 0x00, //    ## ##   
+	0x0E, 0x00, //     ###    
+	0x0E, 0x00, //     ###    
+	0x0E, 0x00, //     ###    
+	0x1B, 0x00, //    ## ##   
+	0x7B, 0xC0, //  #### #### 
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2848 'y' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x79, 0xE0, //  ####  ####
+	0x30, 0xC0, //   ##    ## 
+	0x19, 0x80, //    ##  ##  
+	0x19, 0x80, //    ##  ##  
+	0x0B, 0x00, //     # ##   
+	0x0F, 0x00, //     ####   
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x0C, 0x00, //     ##     
+	0x3E, 0x00, //   #####    
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2880 'z' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x3F, 0x80, //   #######  
+	0x21, 0x80, //   #    ##  
+	0x03, 0x00, //       ##   
+	0x0E, 0x00, //     ###    
+	0x18, 0x00, //    ##      
+	0x30, 0x80, //   ##    #  
+	0x3F, 0x80, //   #######  
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2912 '{' (11 pixels wide)
+	0x00, 0x00, //            
+	0x06, 0x00, //      ##    
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x18, 0x00, //    ##      
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x0C, 0x00, //     ##     
+	0x06, 0x00, //      ##    
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2944 '|' (11 pixels wide)
+	0x00, 0x00, //            
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @2976 '}' (11 pixels wide)
+	0x00, 0x00, //            
+	0x0C, 0x00, //     ##     
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x03, 0x00, //       ##   
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x06, 0x00, //      ##    
+	0x0C, 0x00, //     ##     
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+
+	// @3008 '~' (11 pixels wide)
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x18, 0x00, //    ##      
+	0x24, 0x80, //   #  #  #  
+	0x03, 0x00, //       ##   
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+	0x00, 0x00, //            
+};
+
+sFONT Font16 = {
+  Font16_Table,
+  11, /* Width */
+  16, /* Height */
+};
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 2143 - 0
Arduino/epd2in7_V2/font20.cpp

@@ -0,0 +1,2143 @@
+/**
+  ******************************************************************************
+  * @file    font20.cpp
+  * @author  MCD Application Team
+  * @version V1.0.0
+  * @date    18-February-2014
+  * @brief   This file provides text font20. 
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "fonts.h"
+#include <avr/pgmspace.h>
+
+// Character bitmaps for Courier New 15pt
+const uint8_t Font20_Table[] PROGMEM = 
+{
+	// @0 ' ' (14 pixels wide)
+	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, //               
+
+	// @40 '!' (14 pixels wide)
+	0x00, 0x00, //               
+	0x07, 0x00, //      ###      
+	0x07, 0x00, //      ###      
+	0x07, 0x00, //      ###      
+	0x07, 0x00, //      ###      
+	0x07, 0x00, //      ###      
+	0x07, 0x00, //      ###      
+	0x07, 0x00, //      ###      
+	0x02, 0x00, //       #       
+	0x02, 0x00, //       #       
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x07, 0x00, //      ###      
+	0x07, 0x00, //      ###      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @80 '"' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x1C, 0xE0, //    ###  ###   
+	0x1C, 0xE0, //    ###  ###   
+	0x1C, 0xE0, //    ###  ###   
+	0x08, 0x40, //     #    #    
+	0x08, 0x40, //     #    #    
+	0x08, 0x40, //     #    #    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @120 '#' (14 pixels wide)
+	0x0C, 0xC0, //     ##  ##    
+	0x0C, 0xC0, //     ##  ##    
+	0x0C, 0xC0, //     ##  ##    
+	0x0C, 0xC0, //     ##  ##    
+	0x0C, 0xC0, //     ##  ##    
+	0x3F, 0xF0, //   ##########  
+	0x3F, 0xF0, //   ##########  
+	0x0C, 0xC0, //     ##  ##    
+	0x0C, 0xC0, //     ##  ##    
+	0x3F, 0xF0, //   ##########  
+	0x3F, 0xF0, //   ##########  
+	0x0C, 0xC0, //     ##  ##    
+	0x0C, 0xC0, //     ##  ##    
+	0x0C, 0xC0, //     ##  ##    
+	0x0C, 0xC0, //     ##  ##    
+	0x0C, 0xC0, //     ##  ##    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @160 '$' (14 pixels wide)
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x07, 0xE0, //      ######   
+	0x0F, 0xE0, //     #######   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x00, //    ##         
+	0x1F, 0x00, //    #####      
+	0x0F, 0xC0, //     ######    
+	0x00, 0xE0, //         ###   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x1F, 0xC0, //    #######    
+	0x1F, 0x80, //    ######     
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @200 '%' (14 pixels wide)
+	0x00, 0x00, //               
+	0x1C, 0x00, //    ###        
+	0x22, 0x00, //   #   #       
+	0x22, 0x00, //   #   #       
+	0x22, 0x00, //   #   #       
+	0x1C, 0x60, //    ###   ##   
+	0x01, 0xE0, //        ####   
+	0x0F, 0x80, //     #####     
+	0x3C, 0x00, //   ####        
+	0x31, 0xC0, //   ##   ###    
+	0x02, 0x20, //       #   #   
+	0x02, 0x20, //       #   #   
+	0x02, 0x20, //       #   #   
+	0x01, 0xC0, //        ###    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @240 '&' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x03, 0xE0, //       #####   
+	0x0F, 0xE0, //     #######   
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x06, 0x00, //      ##       
+	0x0F, 0x30, //     ####  ##  
+	0x1F, 0xF0, //    #########  
+	0x19, 0xE0, //    ##  ####   
+	0x18, 0xC0, //    ##   ##    
+	0x1F, 0xF0, //    #########  
+	0x07, 0xB0, //      #### ##  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @280 ''' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x03, 0x80, //       ###     
+	0x03, 0x80, //       ###     
+	0x03, 0x80, //       ###     
+	0x01, 0x00, //        #      
+	0x01, 0x00, //        #      
+	0x01, 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, //               
+
+	// @320 '(' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x01, 0x80, //        ##     
+	0x01, 0x80, //        ##     
+	0x01, 0x80, //        ##     
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x01, 0x80, //        ##     
+	0x01, 0x80, //        ##     
+	0x01, 0x80, //        ##     
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @360 ')' (14 pixels wide)
+	0x00, 0x00, //               
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @400 '*' (14 pixels wide)
+	0x00, 0x00, //               
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x1B, 0x60, //    ## ## ##   
+	0x1F, 0xE0, //    ########   
+	0x07, 0x80, //      ####     
+	0x07, 0x80, //      ####     
+	0x0F, 0xC0, //     ######    
+	0x0C, 0xC0, //     ##  ##    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @440 '+' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x3F, 0xF0, //   ##########  
+	0x3F, 0xF0, //   ##########  
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @480 ',' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x03, 0x80, //       ###     
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x04, 0x00, //      #        
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @520 '-' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3F, 0xE0, //   #########   
+	0x3F, 0xE0, //   #########   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @560 '.' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x03, 0x80, //       ###     
+	0x03, 0x80, //       ###     
+	0x03, 0x80, //       ###     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @600 '/' (14 pixels wide)
+	0x00, 0x60, //          ##   
+	0x00, 0x60, //          ##   
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x01, 0x80, //        ##     
+	0x01, 0x80, //        ##     
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x18, 0x00, //    ##         
+	0x18, 0x00, //    ##         
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @640 '0' (14 pixels wide)
+	0x00, 0x00, //               
+	0x0F, 0x80, //     #####     
+	0x1F, 0xC0, //    #######    
+	0x18, 0xC0, //    ##   ##    
+	0x30, 0x60, //   ##     ##   
+	0x30, 0x60, //   ##     ##   
+	0x30, 0x60, //   ##     ##   
+	0x30, 0x60, //   ##     ##   
+	0x30, 0x60, //   ##     ##   
+	0x30, 0x60, //   ##     ##   
+	0x30, 0x60, //   ##     ##   
+	0x18, 0xC0, //    ##   ##    
+	0x1F, 0xC0, //    #######    
+	0x0F, 0x80, //     #####     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @680 '1' (14 pixels wide)
+	0x00, 0x00, //               
+	0x03, 0x00, //       ##      
+	0x1F, 0x00, //    #####      
+	0x1F, 0x00, //    #####      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xE0, //    ########   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @720 '2' (14 pixels wide)
+	0x00, 0x00, //               
+	0x0F, 0x80, //     #####     
+	0x1F, 0xC0, //    #######    
+	0x38, 0xE0, //   ###   ###   
+	0x30, 0x60, //   ##     ##   
+	0x00, 0x60, //          ##   
+	0x00, 0xC0, //         ##    
+	0x01, 0x80, //        ##     
+	0x03, 0x00, //       ##      
+	0x06, 0x00, //      ##       
+	0x0C, 0x00, //     ##        
+	0x18, 0x00, //    ##         
+	0x3F, 0xE0, //   #########   
+	0x3F, 0xE0, //   #########   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @760 '3' (14 pixels wide)
+	0x00, 0x00, //               
+	0x0F, 0x80, //     #####     
+	0x3F, 0xC0, //   ########    
+	0x30, 0xE0, //   ##    ###   
+	0x00, 0x60, //          ##   
+	0x00, 0xE0, //         ###   
+	0x07, 0xC0, //      #####    
+	0x07, 0xC0, //      #####    
+	0x00, 0xE0, //         ###   
+	0x00, 0x60, //          ##   
+	0x00, 0x60, //          ##   
+	0x60, 0xE0, //  ##     ###   
+	0x7F, 0xC0, //  #########    
+	0x3F, 0x80, //   #######     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @800 '4' (14 pixels wide)
+	0x00, 0x00, //               
+	0x01, 0xC0, //        ###    
+	0x03, 0xC0, //       ####    
+	0x03, 0xC0, //       ####    
+	0x06, 0xC0, //      ## ##    
+	0x0C, 0xC0, //     ##  ##    
+	0x0C, 0xC0, //     ##  ##    
+	0x18, 0xC0, //    ##   ##    
+	0x30, 0xC0, //   ##    ##    
+	0x3F, 0xE0, //   #########   
+	0x3F, 0xE0, //   #########   
+	0x00, 0xC0, //         ##    
+	0x03, 0xE0, //       #####   
+	0x03, 0xE0, //       #####   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @840 '5' (14 pixels wide)
+	0x00, 0x00, //               
+	0x1F, 0xC0, //    #######    
+	0x1F, 0xC0, //    #######    
+	0x18, 0x00, //    ##         
+	0x18, 0x00, //    ##         
+	0x1F, 0x80, //    ######     
+	0x1F, 0xC0, //    #######    
+	0x18, 0xE0, //    ##   ###   
+	0x00, 0x60, //          ##   
+	0x00, 0x60, //          ##   
+	0x00, 0x60, //          ##   
+	0x30, 0xE0, //   ##    ###   
+	0x3F, 0xC0, //   ########    
+	0x1F, 0x80, //    ######     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @880 '6' (14 pixels wide)
+	0x00, 0x00, //               
+	0x03, 0xE0, //       #####   
+	0x0F, 0xE0, //     #######   
+	0x1E, 0x00, //    ####       
+	0x18, 0x00, //    ##         
+	0x38, 0x00, //   ###         
+	0x37, 0x80, //   ## ####     
+	0x3F, 0xC0, //   ########    
+	0x38, 0xE0, //   ###   ###   
+	0x30, 0x60, //   ##     ##   
+	0x30, 0x60, //   ##     ##   
+	0x18, 0xE0, //    ##   ###   
+	0x1F, 0xC0, //    #######    
+	0x07, 0x80, //      ####     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @920 '7' (14 pixels wide)
+	0x00, 0x00, //               
+	0x3F, 0xE0, //   #########   
+	0x3F, 0xE0, //   #########   
+	0x30, 0x60, //   ##     ##   
+	0x00, 0x60, //          ##   
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x01, 0x80, //        ##     
+	0x01, 0x80, //        ##     
+	0x01, 0x80, //        ##     
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @960 '8' (14 pixels wide)
+	0x00, 0x00, //               
+	0x0F, 0x80, //     #####     
+	0x1F, 0xC0, //    #######    
+	0x38, 0xE0, //   ###   ###   
+	0x30, 0x60, //   ##     ##   
+	0x38, 0xE0, //   ###   ###   
+	0x1F, 0xC0, //    #######    
+	0x1F, 0xC0, //    #######    
+	0x38, 0xE0, //   ###   ###   
+	0x30, 0x60, //   ##     ##   
+	0x30, 0x60, //   ##     ##   
+	0x38, 0xE0, //   ###   ###   
+	0x1F, 0xC0, //    #######    
+	0x0F, 0x80, //     #####     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1000 '9' (14 pixels wide)
+	0x00, 0x00, //               
+	0x0F, 0x00, //     ####      
+	0x1F, 0xC0, //    #######    
+	0x38, 0xC0, //   ###   ##    
+	0x30, 0x60, //   ##     ##   
+	0x30, 0x60, //   ##     ##   
+	0x38, 0xE0, //   ###   ###   
+	0x1F, 0xE0, //    ########   
+	0x0F, 0x60, //     #### ##   
+	0x00, 0xE0, //         ###   
+	0x00, 0xC0, //         ##    
+	0x03, 0xC0, //       ####    
+	0x3F, 0x80, //   #######     
+	0x3E, 0x00, //   #####       
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1040 ':' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x03, 0x80, //       ###     
+	0x03, 0x80, //       ###     
+	0x03, 0x80, //       ###     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x03, 0x80, //       ###     
+	0x03, 0x80, //       ###     
+	0x03, 0x80, //       ###     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1080 ';' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x01, 0xC0, //        ###    
+	0x01, 0xC0, //        ###    
+	0x01, 0xC0, //        ###    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x03, 0x80, //       ###     
+	0x03, 0x00, //       ##      
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x04, 0x00, //      #        
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1120 '<' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x30, //           ##  
+	0x00, 0xF0, //         ####  
+	0x03, 0xC0, //       ####    
+	0x07, 0x00, //      ###      
+	0x1C, 0x00, //    ###        
+	0x78, 0x00, //  ####         
+	0x1C, 0x00, //    ###        
+	0x07, 0x00, //      ###      
+	0x03, 0xC0, //       ####    
+	0x00, 0xF0, //         ####  
+	0x00, 0x30, //           ##  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1160 '=' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x7F, 0xF0, //  ###########  
+	0x7F, 0xF0, //  ###########  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x7F, 0xF0, //  ###########  
+	0x7F, 0xF0, //  ###########  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1200 '>' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x30, 0x00, //   ##          
+	0x3C, 0x00, //   ####        
+	0x0F, 0x00, //     ####      
+	0x03, 0x80, //       ###     
+	0x00, 0xE0, //         ###   
+	0x00, 0x78, //          #### 
+	0x00, 0xE0, //         ###   
+	0x03, 0x80, //       ###     
+	0x0F, 0x00, //     ####      
+	0x3C, 0x00, //   ####        
+	0x30, 0x00, //   ##          
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1240 '?' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x0F, 0x80, //     #####     
+	0x1F, 0xC0, //    #######    
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x00, 0x60, //          ##   
+	0x01, 0xC0, //        ###    
+	0x03, 0x80, //       ###     
+	0x03, 0x00, //       ##      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x07, 0x00, //      ###      
+	0x07, 0x00, //      ###      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1280 '@' (14 pixels wide)
+	0x00, 0x00, //               
+	0x03, 0x80, //       ###     
+	0x0C, 0x80, //     ##  #     
+	0x08, 0x40, //     #    #    
+	0x10, 0x40, //    #     #    
+	0x10, 0x40, //    #     #    
+	0x11, 0xC0, //    #   ###    
+	0x12, 0x40, //    #  #  #    
+	0x12, 0x40, //    #  #  #    
+	0x12, 0x40, //    #  #  #    
+	0x11, 0xC0, //    #   ###    
+	0x10, 0x00, //    #          
+	0x08, 0x00, //     #         
+	0x08, 0x40, //     #    #    
+	0x07, 0x80, //      ####     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1320 'A' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x1F, 0x80, //    ######     
+	0x1F, 0x80, //    ######     
+	0x03, 0x80, //       ###     
+	0x06, 0xC0, //      ## ##    
+	0x06, 0xC0, //      ## ##    
+	0x0C, 0xC0, //     ##  ##    
+	0x0C, 0x60, //     ##   ##   
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xE0, //    ########   
+	0x30, 0x30, //   ##      ##  
+	0x78, 0x78, //  ####    #### 
+	0x78, 0x78, //  ####    #### 
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1360 'B' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3F, 0x80, //   #######     
+	0x3F, 0xC0, //   ########    
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0xE0, //    ##   ###   
+	0x1F, 0xC0, //    #######    
+	0x1F, 0xE0, //    ########   
+	0x18, 0x70, //    ##    ###  
+	0x18, 0x30, //    ##     ##  
+	0x18, 0x30, //    ##     ##  
+	0x3F, 0xF0, //   ##########  
+	0x3F, 0xE0, //   #########   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1400 'C' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x07, 0xB0, //      #### ##  
+	0x0F, 0xF0, //     ########  
+	0x1C, 0x70, //    ###   ###  
+	0x38, 0x30, //   ###     ##  
+	0x30, 0x00, //   ##          
+	0x30, 0x00, //   ##          
+	0x30, 0x00, //   ##          
+	0x30, 0x00, //   ##          
+	0x38, 0x30, //   ###     ##  
+	0x1C, 0x70, //    ###   ###  
+	0x0F, 0xE0, //     #######   
+	0x07, 0xC0, //      #####    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1440 'D' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x7F, 0x80, //  ########     
+	0x7F, 0xC0, //  #########    
+	0x30, 0xE0, //   ##    ###   
+	0x30, 0x70, //   ##     ###  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x70, //   ##     ###  
+	0x30, 0xE0, //   ##    ###   
+	0x7F, 0xC0, //  #########    
+	0x7F, 0x80, //  ########     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1480 'E' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3F, 0xF0, //   ##########  
+	0x3F, 0xF0, //   ##########  
+	0x18, 0x30, //    ##     ##  
+	0x18, 0x30, //    ##     ##  
+	0x19, 0x80, //    ##  ##     
+	0x1F, 0x80, //    ######     
+	0x1F, 0x80, //    ######     
+	0x19, 0x80, //    ##  ##     
+	0x18, 0x30, //    ##     ##  
+	0x18, 0x30, //    ##     ##  
+	0x3F, 0xF0, //   ##########  
+	0x3F, 0xF0, //   ##########  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1520 'F' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3F, 0xF0, //   ##########  
+	0x3F, 0xF0, //   ##########  
+	0x18, 0x30, //    ##     ##  
+	0x18, 0x30, //    ##     ##  
+	0x19, 0x80, //    ##  ##     
+	0x1F, 0x80, //    ######     
+	0x1F, 0x80, //    ######     
+	0x19, 0x80, //    ##  ##     
+	0x18, 0x00, //    ##         
+	0x18, 0x00, //    ##         
+	0x3F, 0x00, //   ######      
+	0x3F, 0x00, //   ######      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1560 'G' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x07, 0xB0, //      #### ##  
+	0x1F, 0xF0, //    #########  
+	0x18, 0x70, //    ##    ###  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x00, //   ##          
+	0x30, 0x00, //   ##          
+	0x31, 0xF8, //   ##   ###### 
+	0x31, 0xF8, //   ##   ###### 
+	0x30, 0x30, //   ##      ##  
+	0x18, 0x30, //    ##     ##  
+	0x1F, 0xF0, //    #########  
+	0x07, 0xC0, //      #####    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1600 'H' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3C, 0xF0, //   ####  ####  
+	0x3C, 0xF0, //   ####  ####  
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xE0, //    ########   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x3C, 0xF0, //   ####  ####  
+	0x3C, 0xF0, //   ####  ####  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1640 'I' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xE0, //    ########   
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xE0, //    ########   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1680 'J' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x03, 0xF8, //       ####### 
+	0x03, 0xF8, //       ####### 
+	0x00, 0x60, //          ##   
+	0x00, 0x60, //          ##   
+	0x00, 0x60, //          ##   
+	0x00, 0x60, //          ##   
+	0x30, 0x60, //   ##     ##   
+	0x30, 0x60, //   ##     ##   
+	0x30, 0x60, //   ##     ##   
+	0x30, 0xE0, //   ##    ###   
+	0x3F, 0xC0, //   ########    
+	0x0F, 0x80, //     #####     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1720 'K' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3E, 0xF8, //   ##### ##### 
+	0x3E, 0xF8, //   ##### ##### 
+	0x18, 0xE0, //    ##   ###   
+	0x19, 0x80, //    ##  ##     
+	0x1B, 0x00, //    ## ##      
+	0x1F, 0x00, //    #####      
+	0x1D, 0x80, //    ### ##     
+	0x18, 0xC0, //    ##   ##    
+	0x18, 0xC0, //    ##   ##    
+	0x18, 0x60, //    ##    ##   
+	0x3E, 0x78, //   #####  #### 
+	0x3E, 0x38, //   #####   ### 
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1760 'L' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3F, 0x00, //   ######      
+	0x3F, 0x00, //   ######      
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x0C, 0x30, //     ##    ##  
+	0x0C, 0x30, //     ##    ##  
+	0x0C, 0x30, //     ##    ##  
+	0x3F, 0xF0, //   ##########  
+	0x3F, 0xF0, //   ##########  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1800 'M' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x78, 0x78, //  ####    #### 
+	0x78, 0x78, //  ####    #### 
+	0x38, 0x70, //   ###    ###  
+	0x3C, 0xF0, //   ####  ####  
+	0x34, 0xB0, //   ## #  # ##  
+	0x37, 0xB0, //   ## #### ##  
+	0x37, 0xB0, //   ## #### ##  
+	0x33, 0x30, //   ##  ##  ##  
+	0x33, 0x30, //   ##  ##  ##  
+	0x30, 0x30, //   ##      ##  
+	0x7C, 0xF8, //  #####  ##### 
+	0x7C, 0xF8, //  #####  ##### 
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1840 'N' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x39, 0xF0, //   ###  #####  
+	0x3D, 0xF0, //   #### #####  
+	0x1C, 0x60, //    ###   ##   
+	0x1E, 0x60, //    ####  ##   
+	0x1E, 0x60, //    ####  ##   
+	0x1B, 0x60, //    ## ## ##   
+	0x1B, 0x60, //    ## ## ##   
+	0x19, 0xE0, //    ##  ####   
+	0x19, 0xE0, //    ##  ####   
+	0x18, 0xE0, //    ##   ###   
+	0x3E, 0xE0, //   ##### ###   
+	0x3E, 0x60, //   #####  ##   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1880 'O' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x07, 0x80, //      ####     
+	0x0F, 0xC0, //     ######    
+	0x1C, 0xE0, //    ###  ###   
+	0x38, 0x70, //   ###    ###  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x38, 0x70, //   ###    ###  
+	0x1C, 0xE0, //    ###  ###   
+	0x0F, 0xC0, //     ######    
+	0x07, 0x80, //      ####     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1920 'P' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3F, 0xC0, //   ########    
+	0x3F, 0xE0, //   #########   
+	0x18, 0x70, //    ##    ###  
+	0x18, 0x30, //    ##     ##  
+	0x18, 0x30, //    ##     ##  
+	0x18, 0x70, //    ##    ###  
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xC0, //    #######    
+	0x18, 0x00, //    ##         
+	0x18, 0x00, //    ##         
+	0x3F, 0x00, //   ######      
+	0x3F, 0x00, //   ######      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @1960 'Q' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x07, 0x80, //      ####     
+	0x0F, 0xC0, //     ######    
+	0x1C, 0xE0, //    ###  ###   
+	0x38, 0x70, //   ###    ###  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x38, 0x70, //   ###    ###  
+	0x1C, 0xE0, //    ###  ###   
+	0x0F, 0xC0, //     ######    
+	0x07, 0x80, //      ####     
+	0x07, 0xB0, //      #### ##  
+	0x0F, 0xF0, //     ########  
+	0x0C, 0xE0, //     ##  ###   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2000 'R' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3F, 0xC0, //   ########    
+	0x3F, 0xE0, //   #########   
+	0x18, 0x70, //    ##    ###  
+	0x18, 0x30, //    ##     ##  
+	0x18, 0x70, //    ##    ###  
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xC0, //    #######    
+	0x18, 0xE0, //    ##   ###   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x70, //    ##    ###  
+	0x3E, 0x38, //   #####   ### 
+	0x3E, 0x18, //   #####    ## 
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2040 'S' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x0F, 0xB0, //     ##### ##  
+	0x1F, 0xF0, //    #########  
+	0x38, 0x70, //   ###    ###  
+	0x30, 0x30, //   ##      ##  
+	0x38, 0x00, //   ###         
+	0x1F, 0x80, //    ######     
+	0x07, 0xE0, //      ######   
+	0x00, 0x70, //          ###  
+	0x30, 0x30, //   ##      ##  
+	0x38, 0x70, //   ###    ###  
+	0x3F, 0xE0, //   #########   
+	0x37, 0xC0, //   ## #####    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2080 'T' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3F, 0xF0, //   ##########  
+	0x3F, 0xF0, //   ##########  
+	0x33, 0x30, //   ##  ##  ##  
+	0x33, 0x30, //   ##  ##  ##  
+	0x33, 0x30, //   ##  ##  ##  
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x0F, 0xC0, //     ######    
+	0x0F, 0xC0, //     ######    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2120 'U' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3C, 0xF0, //   ####  ####  
+	0x3C, 0xF0, //   ####  ####  
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x1C, 0xE0, //    ###  ###   
+	0x0F, 0xC0, //     ######    
+	0x07, 0x80, //      ####     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2160 'V' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x78, 0xF0, //  ####   ####  
+	0x78, 0xF0, //  ####   ####  
+	0x30, 0x60, //   ##     ##   
+	0x30, 0x60, //   ##     ##   
+	0x18, 0xC0, //    ##   ##    
+	0x18, 0xC0, //    ##   ##    
+	0x0D, 0x80, //     ## ##     
+	0x0D, 0x80, //     ## ##     
+	0x0D, 0x80, //     ## ##     
+	0x07, 0x00, //      ###      
+	0x07, 0x00, //      ###      
+	0x07, 0x00, //      ###      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2200 'W' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x7C, 0x7C, //  #####   #####
+	0x7C, 0x7C, //  #####   #####
+	0x30, 0x18, //   ##       ## 
+	0x33, 0x98, //   ##  ###  ## 
+	0x33, 0x98, //   ##  ###  ## 
+	0x33, 0x98, //   ##  ###  ## 
+	0x36, 0xD8, //   ## ## ## ## 
+	0x16, 0xD0, //    # ## ## #  
+	0x1C, 0x70, //    ###   ###  
+	0x1C, 0x70, //    ###   ###  
+	0x1C, 0x70, //    ###   ###  
+	0x18, 0x30, //    ##     ##  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2240 'X' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x78, 0xF0, //  ####   ####  
+	0x78, 0xF0, //  ####   ####  
+	0x30, 0x60, //   ##     ##   
+	0x18, 0xC0, //    ##   ##    
+	0x0D, 0x80, //     ## ##     
+	0x07, 0x00, //      ###      
+	0x07, 0x00, //      ###      
+	0x0D, 0x80, //     ## ##     
+	0x18, 0xC0, //    ##   ##    
+	0x30, 0x60, //   ##     ##   
+	0x78, 0xF0, //  ####   ####  
+	0x78, 0xF0, //  ####   ####  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2280 'Y' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3C, 0xF0, //   ####  ####  
+	0x3C, 0xF0, //   ####  ####  
+	0x18, 0x60, //    ##    ##   
+	0x0C, 0xC0, //     ##  ##    
+	0x07, 0x80, //      ####     
+	0x07, 0x80, //      ####     
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x0F, 0xC0, //     ######    
+	0x0F, 0xC0, //     ######    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2320 'Z' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xE0, //    ########   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0xC0, //    ##   ##    
+	0x01, 0x80, //        ##     
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x06, 0x00, //      ##       
+	0x0C, 0x60, //     ##   ##   
+	0x18, 0x60, //    ##    ##   
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xE0, //    ########   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2360 '[' (14 pixels wide)
+	0x00, 0x00, //               
+	0x03, 0xC0, //       ####    
+	0x03, 0xC0, //       ####    
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0xC0, //       ####    
+	0x03, 0xC0, //       ####    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2400 '\' (14 pixels wide)
+	0x18, 0x00, //    ##         
+	0x18, 0x00, //    ##         
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x01, 0x80, //        ##     
+	0x01, 0x80, //        ##     
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x00, 0x60, //          ##   
+	0x00, 0x60, //          ##   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2440 ']' (14 pixels wide)
+	0x00, 0x00, //               
+	0x0F, 0x00, //     ####      
+	0x0F, 0x00, //     ####      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x0F, 0x00, //     ####      
+	0x0F, 0x00, //     ####      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2480 '^' (14 pixels wide)
+	0x00, 0x00, //               
+	0x02, 0x00, //       #       
+	0x07, 0x00, //      ###      
+	0x0D, 0x80, //     ## ##     
+	0x18, 0xC0, //    ##   ##    
+	0x30, 0x60, //   ##     ##   
+	0x20, 0x20, //   #       #   
+	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, //               
+
+	// @2520 '_' (14 pixels wide)
+	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, //               
+	0xFF, 0xFC, // ##############
+	0xFF, 0xFC, // ##############
+
+	// @2560 '`' (14 pixels wide)
+	0x00, 0x00, //               
+	0x04, 0x00, //      #        
+	0x03, 0x00, //       ##      
+	0x00, 0x80, //         #     
+	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, //               
+
+	// @2600 'a' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x0F, 0xC0, //     ######    
+	0x1F, 0xE0, //    ########   
+	0x00, 0x60, //          ##   
+	0x0F, 0xE0, //     #######   
+	0x1F, 0xE0, //    ########   
+	0x38, 0x60, //   ###    ##   
+	0x30, 0xE0, //   ##    ###   
+	0x3F, 0xF0, //   ##########  
+	0x1F, 0x70, //    ##### ###  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2640 'b' (14 pixels wide)
+	0x00, 0x00, //               
+	0x70, 0x00, //  ###          
+	0x70, 0x00, //  ###          
+	0x30, 0x00, //   ##          
+	0x30, 0x00, //   ##          
+	0x37, 0x80, //   ## ####     
+	0x3F, 0xE0, //   #########   
+	0x38, 0x60, //   ###    ##   
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x38, 0x60, //   ###    ##   
+	0x7F, 0xE0, //  ##########   
+	0x77, 0x80, //  ### ####     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2680 'c' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x07, 0xB0, //      #### ##  
+	0x1F, 0xF0, //    #########  
+	0x18, 0x30, //    ##     ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x00, //   ##          
+	0x30, 0x00, //   ##          
+	0x38, 0x30, //   ###     ##  
+	0x1F, 0xF0, //    #########  
+	0x0F, 0xC0, //     ######    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2720 'd' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x70, //          ###  
+	0x00, 0x70, //          ###  
+	0x00, 0x30, //           ##  
+	0x00, 0x30, //           ##  
+	0x07, 0xB0, //      #### ##  
+	0x1F, 0xF0, //    #########  
+	0x18, 0x70, //    ##    ###  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x38, 0x70, //   ###    ###  
+	0x1F, 0xF8, //    ########## 
+	0x07, 0xB8, //      #### ### 
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2760 'e' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x07, 0x80, //      ####     
+	0x1F, 0xE0, //    ########   
+	0x18, 0x60, //    ##    ##   
+	0x3F, 0xF0, //   ##########  
+	0x3F, 0xF0, //   ##########  
+	0x30, 0x00, //   ##          
+	0x18, 0x30, //    ##     ##  
+	0x1F, 0xF0, //    #########  
+	0x07, 0xC0, //      #####    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2800 'f' (14 pixels wide)
+	0x00, 0x00, //               
+	0x03, 0xF0, //       ######  
+	0x07, 0xF0, //      #######  
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xE0, //    ########   
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xE0, //    ########   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2840 'g' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x07, 0xB8, //      #### ### 
+	0x1F, 0xF8, //    ########## 
+	0x18, 0x70, //    ##    ###  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x18, 0x70, //    ##    ###  
+	0x1F, 0xF0, //    #########  
+	0x07, 0xB0, //      #### ##  
+	0x00, 0x30, //           ##  
+	0x00, 0x70, //          ###  
+	0x0F, 0xE0, //     #######   
+	0x0F, 0xC0, //     ######    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2880 'h' (14 pixels wide)
+	0x00, 0x00, //               
+	0x38, 0x00, //   ###         
+	0x38, 0x00, //   ###         
+	0x18, 0x00, //    ##         
+	0x18, 0x00, //    ##         
+	0x1B, 0xC0, //    ## ####    
+	0x1F, 0xE0, //    ########   
+	0x1C, 0x60, //    ###   ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x3C, 0xF0, //   ####  ####  
+	0x3C, 0xF0, //   ####  ####  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2920 'i' (14 pixels wide)
+	0x00, 0x00, //               
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x1F, 0x00, //    #####      
+	0x1F, 0x00, //    #####      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xE0, //    ########   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @2960 'j' (14 pixels wide)
+	0x00, 0x00, //               
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x1F, 0xC0, //    #######    
+	0x1F, 0xC0, //    #######    
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x00, 0xC0, //         ##    
+	0x01, 0xC0, //        ###    
+	0x3F, 0x80, //   #######     
+	0x3F, 0x00, //   ######      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3000 'k' (14 pixels wide)
+	0x00, 0x00, //               
+	0x38, 0x00, //   ###         
+	0x38, 0x00, //   ###         
+	0x18, 0x00, //    ##         
+	0x18, 0x00, //    ##         
+	0x1B, 0xE0, //    ## #####   
+	0x1B, 0xE0, //    ## #####   
+	0x1B, 0x00, //    ## ##      
+	0x1E, 0x00, //    ####       
+	0x1E, 0x00, //    ####       
+	0x1B, 0x00, //    ## ##      
+	0x19, 0x80, //    ##  ##     
+	0x39, 0xF0, //   ###  #####  
+	0x39, 0xF0, //   ###  #####  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3040 'l' (14 pixels wide)
+	0x00, 0x00, //               
+	0x1F, 0x00, //    #####      
+	0x1F, 0x00, //    #####      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xE0, //    ########   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3080 'm' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x7E, 0xE0, //  ###### ###   
+	0x7F, 0xF0, //  ###########  
+	0x33, 0x30, //   ##  ##  ##  
+	0x33, 0x30, //   ##  ##  ##  
+	0x33, 0x30, //   ##  ##  ##  
+	0x33, 0x30, //   ##  ##  ##  
+	0x33, 0x30, //   ##  ##  ##  
+	0x7B, 0xB8, //  #### ### ### 
+	0x7B, 0xB8, //  #### ### ### 
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3120 'n' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3B, 0xC0, //   ### ####    
+	0x3F, 0xE0, //   #########   
+	0x1C, 0x60, //    ###   ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x3C, 0xF0, //   ####  ####  
+	0x3C, 0xF0, //   ####  ####  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3160 'o' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x07, 0x80, //      ####     
+	0x1F, 0xE0, //    ########   
+	0x18, 0x60, //    ##    ##   
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x18, 0x60, //    ##    ##   
+	0x1F, 0xE0, //    ########   
+	0x07, 0x80, //      ####     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3200 'p' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x77, 0x80, //  ### ####     
+	0x7F, 0xE0, //  ##########   
+	0x38, 0x60, //   ###    ##   
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x38, 0x60, //   ###    ##   
+	0x3F, 0xE0, //   #########   
+	0x37, 0x80, //   ## ####     
+	0x30, 0x00, //   ##          
+	0x30, 0x00, //   ##          
+	0x7C, 0x00, //  #####        
+	0x7C, 0x00, //  #####        
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3240 'q' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x07, 0xB8, //      #### ### 
+	0x1F, 0xF8, //    ########## 
+	0x18, 0x70, //    ##    ###  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x30, 0x30, //   ##      ##  
+	0x18, 0x70, //    ##    ###  
+	0x1F, 0xF0, //    #########  
+	0x07, 0xB0, //      #### ##  
+	0x00, 0x30, //           ##  
+	0x00, 0x30, //           ##  
+	0x00, 0xF8, //         ##### 
+	0x00, 0xF8, //         ##### 
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3280 'r' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3C, 0xE0, //   ####  ###   
+	0x3D, 0xF0, //   #### #####  
+	0x0F, 0x30, //     ####  ##  
+	0x0E, 0x00, //     ###       
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x3F, 0xC0, //   ########    
+	0x3F, 0xC0, //   ########    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3320 's' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x07, 0xE0, //      ######   
+	0x1F, 0xE0, //    ########   
+	0x18, 0x60, //    ##    ##   
+	0x1E, 0x00, //    ####       
+	0x0F, 0xC0, //     ######    
+	0x01, 0xE0, //        ####   
+	0x18, 0x60, //    ##    ##   
+	0x1F, 0xE0, //    ########   
+	0x1F, 0x80, //    ######     
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3360 't' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x3F, 0xE0, //   #########   
+	0x3F, 0xE0, //   #########   
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x0C, 0x00, //     ##        
+	0x0C, 0x30, //     ##    ##  
+	0x0F, 0xF0, //     ########  
+	0x07, 0xC0, //      #####    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3400 'u' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x38, 0xE0, //   ###   ###   
+	0x38, 0xE0, //   ###   ###   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0x60, //    ##    ##   
+	0x18, 0xE0, //    ##   ###   
+	0x1F, 0xF0, //    #########  
+	0x0F, 0x70, //     #### ###  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3440 'v' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x78, 0xF0, //  ####   ####  
+	0x78, 0xF0, //  ####   ####  
+	0x30, 0x60, //   ##     ##   
+	0x18, 0xC0, //    ##   ##    
+	0x18, 0xC0, //    ##   ##    
+	0x0D, 0x80, //     ## ##     
+	0x0D, 0x80, //     ## ##     
+	0x07, 0x00, //      ###      
+	0x07, 0x00, //      ###      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3480 'w' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x78, 0xF0, //  ####   ####  
+	0x78, 0xF0, //  ####   ####  
+	0x32, 0x60, //   ##  #  ##   
+	0x32, 0x60, //   ##  #  ##   
+	0x37, 0xE0, //   ## ######   
+	0x1D, 0xC0, //    ### ###    
+	0x1D, 0xC0, //    ### ###    
+	0x18, 0xC0, //    ##   ##    
+	0x18, 0xC0, //    ##   ##    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3520 'x' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x3C, 0xF0, //   ####  ####  
+	0x3C, 0xF0, //   ####  ####  
+	0x0C, 0xC0, //     ##  ##    
+	0x07, 0x80, //      ####     
+	0x03, 0x00, //       ##      
+	0x07, 0x80, //      ####     
+	0x0C, 0xC0, //     ##  ##    
+	0x3C, 0xF0, //   ####  ####  
+	0x3C, 0xF0, //   ####  ####  
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3560 'y' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x78, 0xF0, //  ####   ####  
+	0x78, 0xF0, //  ####   ####  
+	0x30, 0x60, //   ##     ##   
+	0x18, 0xC0, //    ##   ##    
+	0x18, 0xC0, //    ##   ##    
+	0x0D, 0x80, //     ## ##     
+	0x0F, 0x80, //     #####     
+	0x07, 0x00, //      ###      
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x0C, 0x00, //     ##        
+	0x7F, 0x00, //  #######      
+	0x7F, 0x00, //  #######      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3600 'z' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xE0, //    ########   
+	0x18, 0xC0, //    ##   ##    
+	0x01, 0x80, //        ##     
+	0x03, 0x00, //       ##      
+	0x06, 0x00, //      ##       
+	0x0C, 0x60, //     ##   ##   
+	0x1F, 0xE0, //    ########   
+	0x1F, 0xE0, //    ########   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3640 '{' (14 pixels wide)
+	0x00, 0x00, //               
+	0x01, 0xC0, //        ###    
+	0x03, 0xC0, //       ####    
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x07, 0x00, //      ###      
+	0x0E, 0x00, //     ###       
+	0x07, 0x00, //      ###      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0xC0, //       ####    
+	0x01, 0xC0, //        ###    
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3680 '|' (14 pixels wide)
+	0x00, 0x00, //               
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x03, 0x00, //       ##      
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3720 '}' (14 pixels wide)
+	0x00, 0x00, //               
+	0x1C, 0x00, //    ###        
+	0x1E, 0x00, //    ####       
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x07, 0x00, //      ###      
+	0x03, 0x80, //       ###     
+	0x07, 0x00, //      ###      
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x06, 0x00, //      ##       
+	0x1E, 0x00, //    ####       
+	0x1C, 0x00, //    ###        
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+
+	// @3760 '~' (14 pixels wide)
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x0E, 0x00, //     ###       
+	0x3F, 0x30, //   ######  ##  
+	0x33, 0xF0, //   ##  ######  
+	0x01, 0xE0, //        ####   
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+	0x00, 0x00, //               
+};
+
+
+sFONT Font20 = {
+  Font20_Table,
+  14, /* Width */
+  20, /* Height */
+};
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 2521 - 0
Arduino/epd2in7_V2/font24.cpp

@@ -0,0 +1,2521 @@
+/**
+  ******************************************************************************
+  * @file    font24.cpp
+  * @author  MCD Application Team
+  * @version V1.0.0
+  * @date    18-February-2014
+  * @brief   This file provides text font24. 
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "fonts.h"
+#include <avr/pgmspace.h>
+
+const uint8_t Font24_Table [] PROGMEM = 
+{
+	// @0 ' ' (17 pixels wide)
+	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, //                  
+
+	// @72 '!' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x01, 0x00, 0x00, //        #         
+	0x01, 0x00, 0x00, //        #         
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @144 '"' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x0E, 0x70, 0x00, //     ###  ###     
+	0x0E, 0x70, 0x00, //     ###  ###     
+	0x0E, 0x70, 0x00, //     ###  ###     
+	0x04, 0x20, 0x00, //      #    #      
+	0x04, 0x20, 0x00, //      #    #      
+	0x04, 0x20, 0x00, //      #    #      
+	0x04, 0x20, 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, //                  
+
+	// @216 '#' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x3F, 0xF8, 0x00, //   ###########    
+	0x3F, 0xF8, 0x00, //   ###########    
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x0C, 0xC0, 0x00, //     ##  ##       
+	0x3F, 0xF8, 0x00, //   ###########    
+	0x3F, 0xF8, 0x00, //   ###########    
+	0x0C, 0xC0, 0x00, //     ##  ##       
+	0x0C, 0xC0, 0x00, //     ##  ##       
+	0x0C, 0xC0, 0x00, //     ##  ##       
+	0x0C, 0xC0, 0x00, //     ##  ##       
+	0x0C, 0xC0, 0x00, //     ##  ##       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @288 '$' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x07, 0xB0, 0x00, //      #### ##     
+	0x0F, 0xF0, 0x00, //     ########     
+	0x18, 0x70, 0x00, //    ##    ###     
+	0x18, 0x70, 0x00, //    ##    ###     
+	0x1C, 0x00, 0x00, //    ###           
+	0x0F, 0x80, 0x00, //     #####        
+	0x07, 0xE0, 0x00, //      ######      
+	0x00, 0xF0, 0x00, //         ####     
+	0x18, 0x30, 0x00, //    ##     ##     
+	0x1C, 0x30, 0x00, //    ###    ##     
+	0x1C, 0x70, 0x00, //    ###   ###     
+	0x1F, 0xE0, 0x00, //    ########      
+	0x1B, 0xC0, 0x00, //    ## ####       
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @360 '%' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x07, 0x80, 0x00, //      ####        
+	0x0F, 0xC0, 0x00, //     ######       
+	0x1C, 0xE0, 0x00, //    ###  ###      
+	0x18, 0x60, 0x00, //    ##    ##      
+	0x18, 0x60, 0x00, //    ##    ##      
+	0x1C, 0xE0, 0x00, //    ###  ###      
+	0x0F, 0xF8, 0x00, //     #########    
+	0x07, 0xE0, 0x00, //      ######      
+	0x1F, 0xF0, 0x00, //    #########     
+	0x07, 0x38, 0x00, //      ###  ###    
+	0x06, 0x18, 0x00, //      ##    ##    
+	0x06, 0x18, 0x00, //      ##    ##    
+	0x07, 0x38, 0x00, //      ###  ###    
+	0x03, 0xF0, 0x00, //       ######     
+	0x01, 0xE0, 0x00, //        ####      
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @432 '&' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0xF0, 0x00, //       ######     
+	0x07, 0xF0, 0x00, //      #######     
+	0x0C, 0x60, 0x00, //     ##   ##      
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x06, 0x00, 0x00, //      ##          
+	0x07, 0x00, 0x00, //      ###         
+	0x0F, 0x9C, 0x00, //     #####  ###   
+	0x1D, 0xFC, 0x00, //    ### #######   
+	0x18, 0xF0, 0x00, //    ##   ####     
+	0x18, 0x70, 0x00, //    ##    ###     
+	0x0F, 0xFC, 0x00, //     ##########   
+	0x07, 0xDC, 0x00, //      ##### ###   
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @504 ''' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x01, 0x00, 0x00, //        #         
+	0x01, 0x00, 0x00, //        #         
+	0x01, 0x00, 0x00, //        #         
+	0x01, 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, //                  
+
+	// @576 '(' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x38, 0x00, //           ###    
+	0x00, 0x70, 0x00, //          ###     
+	0x00, 0xF0, 0x00, //         ####     
+	0x00, 0xE0, 0x00, //         ###      
+	0x00, 0xE0, 0x00, //         ###      
+	0x01, 0xC0, 0x00, //        ###       
+	0x01, 0xC0, 0x00, //        ###       
+	0x01, 0xC0, 0x00, //        ###       
+	0x01, 0xC0, 0x00, //        ###       
+	0x01, 0xC0, 0x00, //        ###       
+	0x01, 0xC0, 0x00, //        ###       
+	0x00, 0xE0, 0x00, //         ###      
+	0x00, 0xE0, 0x00, //         ###      
+	0x00, 0x70, 0x00, //          ###     
+	0x00, 0x70, 0x00, //          ###     
+	0x00, 0x38, 0x00, //           ###    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @648 ')' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x18, 0x00, 0x00, //    ##            
+	0x1C, 0x00, 0x00, //    ###           
+	0x0E, 0x00, 0x00, //     ###          
+	0x0E, 0x00, 0x00, //     ###          
+	0x07, 0x00, 0x00, //      ###         
+	0x07, 0x00, 0x00, //      ###         
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x80, 0x00, //       ###        
+	0x07, 0x00, 0x00, //      ###         
+	0x07, 0x00, 0x00, //      ###         
+	0x0F, 0x00, 0x00, //     ####         
+	0x0E, 0x00, 0x00, //     ###          
+	0x1C, 0x00, 0x00, //    ###           
+	0x18, 0x00, 0x00, //    ##            
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @720 '*' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x1D, 0xB8, 0x00, //    ### ## ###    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x07, 0xE0, 0x00, //      ######      
+	0x03, 0xC0, 0x00, //       ####       
+	0x03, 0xC0, 0x00, //       ####       
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x06, 0x60, 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, //                  
+
+	// @792 '+' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x3F, 0xFC, 0x00, //   ############   
+	0x3F, 0xFC, 0x00, //   ############   
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 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, //                  
+
+	// @864 ',' (17 pixels wide)
+	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, 0xE0, 0x00, //         ###      
+	0x00, 0xC0, 0x00, //         ##       
+	0x01, 0xC0, 0x00, //        ###       
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x03, 0x00, 0x00, //       ##         
+	0x03, 0x00, 0x00, //       ##         
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @936 '-' (17 pixels wide)
+	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, //                  
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x1F, 0xF8, 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, //                  
+
+	// @1008 '.' (17 pixels wide)
+	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, //                  
+	0x03, 0xC0, 0x00, //       ####       
+	0x03, 0xC0, 0x00, //       ####       
+	0x03, 0xC0, 0x00, //       ####       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @1080 '/' (17 pixels wide)
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x38, 0x00, //           ###    
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x70, 0x00, //          ###     
+	0x00, 0x60, 0x00, //          ##      
+	0x00, 0x60, 0x00, //          ##      
+	0x00, 0xC0, 0x00, //         ##       
+	0x00, 0xC0, 0x00, //         ##       
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x03, 0x00, 0x00, //       ##         
+	0x03, 0x00, 0x00, //       ##         
+	0x06, 0x00, 0x00, //      ##          
+	0x06, 0x00, 0x00, //      ##          
+	0x0E, 0x00, 0x00, //     ###          
+	0x0C, 0x00, 0x00, //     ##           
+	0x1C, 0x00, 0x00, //    ###           
+	0x18, 0x00, 0x00, //    ##            
+	0x18, 0x00, 0x00, //    ##            
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @1152 '0' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0xC0, 0x00, //       ####       
+	0x07, 0xE0, 0x00, //      ######      
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x07, 0xE0, 0x00, //      ######      
+	0x03, 0xC0, 0x00, //       ####       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @1224 '1' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x80, 0x00, //         #        
+	0x07, 0x80, 0x00, //      ####        
+	0x1F, 0x80, 0x00, //    ######        
+	0x1D, 0x80, 0x00, //    ### ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @1296 '2' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x07, 0xC0, 0x00, //      #####       
+	0x1F, 0xF0, 0x00, //    #########     
+	0x38, 0x30, 0x00, //   ###     ##     
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x60, 0x00, //          ##      
+	0x01, 0xC0, 0x00, //        ###       
+	0x03, 0x80, 0x00, //       ###        
+	0x06, 0x00, 0x00, //      ##          
+	0x0C, 0x00, 0x00, //     ##           
+	0x18, 0x00, 0x00, //    ##            
+	0x3F, 0xF8, 0x00, //   ###########    
+	0x3F, 0xF8, 0x00, //   ###########    
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @1368 '3' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0xC0, 0x00, //       ####       
+	0x0F, 0xE0, 0x00, //     #######      
+	0x0C, 0x70, 0x00, //     ##   ###     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x60, 0x00, //          ##      
+	0x03, 0xC0, 0x00, //       ####       
+	0x03, 0xE0, 0x00, //       #####      
+	0x00, 0x70, 0x00, //          ###     
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x1F, 0xF0, 0x00, //    #########     
+	0x0F, 0xC0, 0x00, //     ######       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @1440 '4' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0xE0, 0x00, //         ###      
+	0x01, 0xE0, 0x00, //        ####      
+	0x01, 0xE0, 0x00, //        ####      
+	0x03, 0x60, 0x00, //       ## ##      
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x0C, 0x60, 0x00, //     ##   ##      
+	0x0C, 0x60, 0x00, //     ##   ##      
+	0x18, 0x60, 0x00, //    ##    ##      
+	0x30, 0x60, 0x00, //   ##     ##      
+	0x3F, 0xF8, 0x00, //   ###########    
+	0x3F, 0xF8, 0x00, //   ###########    
+	0x00, 0x60, 0x00, //          ##      
+	0x03, 0xF8, 0x00, //       #######    
+	0x03, 0xF8, 0x00, //       #######    
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @1512 '5' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x1F, 0xF0, 0x00, //    #########     
+	0x1F, 0xF0, 0x00, //    #########     
+	0x18, 0x00, 0x00, //    ##            
+	0x18, 0x00, 0x00, //    ##            
+	0x18, 0x00, 0x00, //    ##            
+	0x1B, 0xC0, 0x00, //    ## ####       
+	0x1F, 0xF0, 0x00, //    #########     
+	0x1C, 0x30, 0x00, //    ###    ##     
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x30, 0x30, 0x00, //   ##      ##     
+	0x3F, 0xF0, 0x00, //   ##########     
+	0x0F, 0xC0, 0x00, //     ######       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @1584 '6' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0xF8, 0x00, //         #####    
+	0x03, 0xF8, 0x00, //       #######    
+	0x07, 0x00, 0x00, //      ###         
+	0x0E, 0x00, 0x00, //     ###          
+	0x0C, 0x00, 0x00, //     ##           
+	0x18, 0x00, 0x00, //    ##            
+	0x1B, 0xC0, 0x00, //    ## ####       
+	0x1F, 0xF0, 0x00, //    #########     
+	0x1C, 0x30, 0x00, //    ###    ##     
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x0C, 0x38, 0x00, //     ##    ###    
+	0x0F, 0xF0, 0x00, //     ########     
+	0x03, 0xE0, 0x00, //       #####      
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @1656 '7' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x70, 0x00, //          ###     
+	0x00, 0x60, 0x00, //          ##      
+	0x00, 0x60, 0x00, //          ##      
+	0x00, 0xE0, 0x00, //         ###      
+	0x00, 0xC0, 0x00, //         ##       
+	0x00, 0xC0, 0x00, //         ##       
+	0x01, 0xC0, 0x00, //        ###       
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @1728 '8' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x07, 0xE0, 0x00, //      ######      
+	0x0F, 0xF0, 0x00, //     ########     
+	0x1C, 0x38, 0x00, //    ###    ###    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x07, 0xE0, 0x00, //      ######      
+	0x07, 0xE0, 0x00, //      ######      
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x1C, 0x38, 0x00, //    ###    ###    
+	0x0F, 0xF0, 0x00, //     ########     
+	0x07, 0xE0, 0x00, //      ######      
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @1800 '9' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x07, 0xC0, 0x00, //      #####       
+	0x0F, 0xF0, 0x00, //     ########     
+	0x1C, 0x30, 0x00, //    ###    ##     
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x0C, 0x38, 0x00, //     ##    ###    
+	0x0F, 0xF8, 0x00, //     #########    
+	0x03, 0xD8, 0x00, //       #### ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x70, 0x00, //          ###     
+	0x00, 0xE0, 0x00, //         ###      
+	0x1F, 0xC0, 0x00, //    #######       
+	0x1F, 0x00, 0x00, //    #####         
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @1872 ':' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0xC0, 0x00, //       ####       
+	0x03, 0xC0, 0x00, //       ####       
+	0x03, 0xC0, 0x00, //       ####       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0xC0, 0x00, //       ####       
+	0x03, 0xC0, 0x00, //       ####       
+	0x03, 0xC0, 0x00, //       ####       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @1944 ';' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0xF0, 0x00, //         ####     
+	0x00, 0xF0, 0x00, //         ####     
+	0x00, 0xF0, 0x00, //         ####     
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0xE0, 0x00, //         ###      
+	0x01, 0xC0, 0x00, //        ###       
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x03, 0x00, 0x00, //       ##         
+	0x02, 0x00, 0x00, //       #          
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @2016 '<' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x1C, 0x00, //            ###   
+	0x00, 0x3C, 0x00, //           ####   
+	0x00, 0xF0, 0x00, //         ####     
+	0x03, 0xC0, 0x00, //       ####       
+	0x0F, 0x00, 0x00, //     ####         
+	0x3C, 0x00, 0x00, //   ####           
+	0xF0, 0x00, 0x00, // ####             
+	0x3C, 0x00, 0x00, //   ####           
+	0x0F, 0x00, 0x00, //     ####         
+	0x03, 0xC0, 0x00, //       ####       
+	0x00, 0xF0, 0x00, //         ####     
+	0x00, 0x3C, 0x00, //           ####   
+	0x00, 0x1C, 0x00, //            ###   
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @2088 '=' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7F, 0xFC, 0x00, //  #############   
+	0x7F, 0xFC, 0x00, //  #############   
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7F, 0xFC, 0x00, //  #############   
+	0x7F, 0xFC, 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, //                  
+
+	// @2160 '>' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x70, 0x00, 0x00, //  ###             
+	0x78, 0x00, 0x00, //  ####            
+	0x1E, 0x00, 0x00, //    ####          
+	0x07, 0x80, 0x00, //      ####        
+	0x01, 0xE0, 0x00, //        ####      
+	0x00, 0x78, 0x00, //          ####    
+	0x00, 0x1E, 0x00, //            ####  
+	0x00, 0x78, 0x00, //          ####    
+	0x01, 0xE0, 0x00, //        ####      
+	0x07, 0x80, 0x00, //      ####        
+	0x1E, 0x00, 0x00, //    ####          
+	0x78, 0x00, 0x00, //  ####            
+	0x70, 0x00, 0x00, //  ###             
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @2232 '?' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x07, 0xC0, 0x00, //      #####       
+	0x0F, 0xE0, 0x00, //     #######      
+	0x18, 0x70, 0x00, //    ##    ###     
+	0x18, 0x30, 0x00, //    ##     ##     
+	0x18, 0x30, 0x00, //    ##     ##     
+	0x00, 0x70, 0x00, //          ###     
+	0x00, 0xE0, 0x00, //         ###      
+	0x03, 0xC0, 0x00, //       ####       
+	0x03, 0x80, 0x00, //       ###        
+	0x03, 0x00, 0x00, //       ##         
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x07, 0x00, 0x00, //      ###         
+	0x07, 0x00, 0x00, //      ###         
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @2304 '@' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0xE0, 0x00, //       #####      
+	0x07, 0xF0, 0x00, //      #######     
+	0x0E, 0x38, 0x00, //     ###   ###    
+	0x0C, 0x18, 0x00, //     ##     ##    
+	0x18, 0x78, 0x00, //    ##    ####    
+	0x18, 0xF8, 0x00, //    ##   #####    
+	0x19, 0xD8, 0x00, //    ##  ### ##    
+	0x19, 0x98, 0x00, //    ##  ##  ##    
+	0x19, 0x98, 0x00, //    ##  ##  ##    
+	0x19, 0x98, 0x00, //    ##  ##  ##    
+	0x18, 0xF8, 0x00, //    ##   #####    
+	0x18, 0x78, 0x00, //    ##    ####    
+	0x18, 0x00, 0x00, //    ##            
+	0x0C, 0x00, 0x00, //     ##           
+	0x0E, 0x18, 0x00, //     ###    ##    
+	0x07, 0xF8, 0x00, //      ########    
+	0x03, 0xE0, 0x00, //       #####      
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @2376 'A' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x1F, 0x80, 0x00, //    ######        
+	0x1F, 0xC0, 0x00, //    #######       
+	0x01, 0xC0, 0x00, //        ###       
+	0x03, 0x60, 0x00, //       ## ##      
+	0x03, 0x60, 0x00, //       ## ##      
+	0x06, 0x30, 0x00, //      ##   ##     
+	0x06, 0x30, 0x00, //      ##   ##     
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x0F, 0xF8, 0x00, //     #########    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0xFC, 0x7F, 0x00, // ######   ####### 
+	0xFC, 0x7F, 0x00, // ######   ####### 
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @2448 'B' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7F, 0xE0, 0x00, //  ##########      
+	0x7F, 0xF0, 0x00, //  ###########     
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x1F, 0xF0, 0x00, //    #########     
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x18, 0x1C, 0x00, //    ##      ###   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x7F, 0xF8, 0x00, //  ############    
+	0x7F, 0xF0, 0x00, //  ###########     
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @2520 'C' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0xEC, 0x00, //       ##### ##   
+	0x0F, 0xFC, 0x00, //     ##########   
+	0x1C, 0x1C, 0x00, //    ###     ###   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x30, 0x00, 0x00, //   ##             
+	0x30, 0x00, 0x00, //   ##             
+	0x30, 0x00, 0x00, //   ##             
+	0x30, 0x00, 0x00, //   ##             
+	0x30, 0x00, 0x00, //   ##             
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x1C, 0x1C, 0x00, //    ###     ###   
+	0x0F, 0xF8, 0x00, //     #########    
+	0x03, 0xF0, 0x00, //       ######     
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @2592 'D' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7F, 0xC0, 0x00, //  #########       
+	0x7F, 0xF0, 0x00, //  ###########     
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x7F, 0xF0, 0x00, //  ###########     
+	0x7F, 0xE0, 0x00, //  ##########      
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @2664 'E' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7F, 0xF8, 0x00, //  ############    
+	0x7F, 0xF8, 0x00, //  ############    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x19, 0x98, 0x00, //    ##  ##  ##    
+	0x19, 0x80, 0x00, //    ##  ##        
+	0x1F, 0x80, 0x00, //    ######        
+	0x1F, 0x80, 0x00, //    ######        
+	0x19, 0x80, 0x00, //    ##  ##        
+	0x19, 0x98, 0x00, //    ##  ##  ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x7F, 0xF8, 0x00, //  ############    
+	0x7F, 0xF8, 0x00, //  ############    
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @2736 'F' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x3F, 0xFC, 0x00, //   ############   
+	0x3F, 0xFC, 0x00, //   ############   
+	0x0C, 0x0C, 0x00, //     ##      ##   
+	0x0C, 0x0C, 0x00, //     ##      ##   
+	0x0C, 0xCC, 0x00, //     ##  ##  ##   
+	0x0C, 0xC0, 0x00, //     ##  ##       
+	0x0F, 0xC0, 0x00, //     ######       
+	0x0F, 0xC0, 0x00, //     ######       
+	0x0C, 0xC0, 0x00, //     ##  ##       
+	0x0C, 0xC0, 0x00, //     ##  ##       
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x3F, 0xC0, 0x00, //   ########       
+	0x3F, 0xC0, 0x00, //   ########       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @2808 'G' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0xEC, 0x00, //       ##### ##   
+	0x0F, 0xFC, 0x00, //     ##########   
+	0x1C, 0x1C, 0x00, //    ###     ###   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x30, 0x00, 0x00, //   ##             
+	0x30, 0x00, 0x00, //   ##             
+	0x30, 0xFE, 0x00, //   ##    #######  
+	0x30, 0xFE, 0x00, //   ##    #######  
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x38, 0x0C, 0x00, //   ###       ##   
+	0x1C, 0x1C, 0x00, //    ###     ###   
+	0x0F, 0xFC, 0x00, //     ##########   
+	0x03, 0xF0, 0x00, //       ######     
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @2880 'H' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @2952 'I' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3024 'J' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x07, 0xFE, 0x00, //      ##########  
+	0x07, 0xFE, 0x00, //      ##########  
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x30, 0x30, 0x00, //   ##      ##     
+	0x30, 0x30, 0x00, //   ##      ##     
+	0x30, 0x30, 0x00, //   ##      ##     
+	0x30, 0x30, 0x00, //   ##      ##     
+	0x30, 0x60, 0x00, //   ##     ##      
+	0x3F, 0xE0, 0x00, //   #########      
+	0x0F, 0x80, 0x00, //     #####        
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3096 'K' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7F, 0x3E, 0x00, //  #######  #####  
+	0x7F, 0x3E, 0x00, //  #######  #####  
+	0x18, 0x30, 0x00, //    ##     ##     
+	0x18, 0x60, 0x00, //    ##    ##      
+	0x18, 0xC0, 0x00, //    ##   ##       
+	0x19, 0x80, 0x00, //    ##  ##        
+	0x1B, 0x80, 0x00, //    ## ###        
+	0x1F, 0xC0, 0x00, //    #######       
+	0x1C, 0xE0, 0x00, //    ###  ###      
+	0x18, 0x70, 0x00, //    ##    ###     
+	0x18, 0x30, 0x00, //    ##     ##     
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x7F, 0x1F, 0x00, //  #######   ##### 
+	0x7F, 0x1F, 0x00, //  #######   ##### 
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3168 'L' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7F, 0x80, 0x00, //  ########        
+	0x7F, 0x80, 0x00, //  ########        
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x0C, 0x00, //     ##      ##   
+	0x0C, 0x0C, 0x00, //     ##      ##   
+	0x0C, 0x0C, 0x00, //     ##      ##   
+	0x0C, 0x0C, 0x00, //     ##      ##   
+	0x7F, 0xFC, 0x00, //  #############   
+	0x7F, 0xFC, 0x00, //  #############   
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3240 'M' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0xF0, 0x0F, 0x00, // ####        #### 
+	0xF8, 0x1F, 0x00, // #####      ##### 
+	0x38, 0x1C, 0x00, //   ###      ###   
+	0x3C, 0x3C, 0x00, //   ####    ####   
+	0x3C, 0x3C, 0x00, //   ####    ####   
+	0x36, 0x6C, 0x00, //   ## ##  ## ##   
+	0x36, 0x6C, 0x00, //   ## ##  ## ##   
+	0x33, 0xCC, 0x00, //   ##  ####  ##   
+	0x33, 0xCC, 0x00, //   ##  ####  ##   
+	0x31, 0x8C, 0x00, //   ##   ##   ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0xFE, 0x7F, 0x00, // #######  ####### 
+	0xFE, 0x7F, 0x00, // #######  ####### 
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3312 'N' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x78, 0xFE, 0x00, //  ####   #######  
+	0x78, 0xFE, 0x00, //  ####   #######  
+	0x1C, 0x18, 0x00, //    ###     ##    
+	0x1E, 0x18, 0x00, //    ####    ##    
+	0x1F, 0x18, 0x00, //    #####   ##    
+	0x1B, 0x18, 0x00, //    ## ##   ##    
+	0x1B, 0x98, 0x00, //    ## ###  ##    
+	0x19, 0xD8, 0x00, //    ##  ### ##    
+	0x18, 0xD8, 0x00, //    ##   ## ##    
+	0x18, 0xF8, 0x00, //    ##   #####    
+	0x18, 0x78, 0x00, //    ##    ####    
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x7F, 0x18, 0x00, //  #######   ##    
+	0x7F, 0x18, 0x00, //  #######   ##    
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3384 'O' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0xC0, 0x00, //       ####       
+	0x0F, 0xF0, 0x00, //     ########     
+	0x1C, 0x38, 0x00, //    ###    ###    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x38, 0x1C, 0x00, //   ###      ###   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x38, 0x1C, 0x00, //   ###      ###   
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x1C, 0x38, 0x00, //    ###    ###    
+	0x0F, 0xF0, 0x00, //     ########     
+	0x03, 0xC0, 0x00, //       ####       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3456 'P' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x3F, 0xF0, 0x00, //   ##########     
+	0x3F, 0xF8, 0x00, //   ###########    
+	0x0C, 0x1C, 0x00, //     ##     ###   
+	0x0C, 0x0C, 0x00, //     ##      ##   
+	0x0C, 0x0C, 0x00, //     ##      ##   
+	0x0C, 0x0C, 0x00, //     ##      ##   
+	0x0C, 0x18, 0x00, //     ##     ##    
+	0x0F, 0xF8, 0x00, //     #########    
+	0x0F, 0xE0, 0x00, //     #######      
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x3F, 0xC0, 0x00, //   ########       
+	0x3F, 0xC0, 0x00, //   ########       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3528 'Q' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0xC0, 0x00, //       ####       
+	0x0F, 0xF0, 0x00, //     ########     
+	0x1C, 0x38, 0x00, //    ###    ###    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x38, 0x1C, 0x00, //   ###      ###   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x38, 0x1C, 0x00, //   ###      ###   
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x1C, 0x38, 0x00, //    ###    ###    
+	0x0F, 0xF0, 0x00, //     ########     
+	0x07, 0xC0, 0x00, //      #####       
+	0x07, 0xCC, 0x00, //      #####  ##   
+	0x0F, 0xFC, 0x00, //     ##########   
+	0x0C, 0x38, 0x00, //     ##    ###    
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3600 'R' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7F, 0xE0, 0x00, //  ##########      
+	0x7F, 0xF0, 0x00, //  ###########     
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x1F, 0xF0, 0x00, //    #########     
+	0x1F, 0xC0, 0x00, //    #######       
+	0x18, 0xE0, 0x00, //    ##   ###      
+	0x18, 0x70, 0x00, //    ##    ###     
+	0x18, 0x30, 0x00, //    ##     ##     
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x7F, 0x1E, 0x00, //  #######   ####  
+	0x7F, 0x0E, 0x00, //  #######    ###  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3672 'S' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x07, 0xD8, 0x00, //      ##### ##    
+	0x0F, 0xF8, 0x00, //     #########    
+	0x1C, 0x38, 0x00, //    ###    ###    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x1E, 0x00, 0x00, //    ####          
+	0x0F, 0xC0, 0x00, //     ######       
+	0x03, 0xF0, 0x00, //       ######     
+	0x00, 0x78, 0x00, //          ####    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x1C, 0x38, 0x00, //    ###    ###    
+	0x1F, 0xF0, 0x00, //    #########     
+	0x1B, 0xE0, 0x00, //    ## #####      
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3744 'T' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x3F, 0xFC, 0x00, //   ############   
+	0x3F, 0xFC, 0x00, //   ############   
+	0x31, 0x8C, 0x00, //   ##   ##   ##   
+	0x31, 0x8C, 0x00, //   ##   ##   ##   
+	0x31, 0x8C, 0x00, //   ##   ##   ##   
+	0x31, 0x8C, 0x00, //   ##   ##   ##   
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x0F, 0xF0, 0x00, //     ########     
+	0x0F, 0xF0, 0x00, //     ########     
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3816 'U' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x0F, 0xF0, 0x00, //     ########     
+	0x03, 0xC0, 0x00, //       ####       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3888 'V' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7F, 0x7F, 0x00, //  ####### ####### 
+	0x7F, 0x7F, 0x00, //  ####### ####### 
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x0C, 0x18, 0x00, //     ##     ##    
+	0x0C, 0x18, 0x00, //     ##     ##    
+	0x0C, 0x18, 0x00, //     ##     ##    
+	0x06, 0x30, 0x00, //      ##   ##     
+	0x06, 0x30, 0x00, //      ##   ##     
+	0x03, 0x60, 0x00, //       ## ##      
+	0x03, 0x60, 0x00, //       ## ##      
+	0x03, 0x60, 0x00, //       ## ##      
+	0x01, 0xC0, 0x00, //        ###       
+	0x01, 0xC0, 0x00, //        ###       
+	0x00, 0x80, 0x00, //         #        
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @3960 'W' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0xFE, 0x3F, 0x80, // #######   #######
+	0xFE, 0x3F, 0x80, // #######   #######
+	0x30, 0x06, 0x00, //   ##         ##  
+	0x30, 0x06, 0x00, //   ##         ##  
+	0x30, 0x86, 0x00, //   ##    #    ##  
+	0x19, 0xCC, 0x00, //    ##  ###  ##   
+	0x19, 0xCC, 0x00, //    ##  ###  ##   
+	0x1B, 0x6C, 0x00, //    ## ## ## ##   
+	0x1B, 0x6C, 0x00, //    ## ## ## ##   
+	0x1E, 0x7C, 0x00, //    ####  #####   
+	0x0E, 0x38, 0x00, //     ###   ###    
+	0x0E, 0x38, 0x00, //     ###   ###    
+	0x0C, 0x18, 0x00, //     ##     ##    
+	0x0C, 0x18, 0x00, //     ##     ##    
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @4032 'X' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x03, 0xC0, 0x00, //       ####       
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x03, 0xC0, 0x00, //       ####       
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @4104 'Y' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7C, 0x7E, 0x00, //  #####   ######  
+	0x7C, 0x7E, 0x00, //  #####   ######  
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x03, 0xC0, 0x00, //       ####       
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x0F, 0xF0, 0x00, //     ########     
+	0x0F, 0xF0, 0x00, //     ########     
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @4176 'Z' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x30, 0x00, //    ##     ##     
+	0x18, 0x60, 0x00, //    ##    ##      
+	0x18, 0xC0, 0x00, //    ##   ##       
+	0x01, 0x80, 0x00, //        ##        
+	0x03, 0x00, 0x00, //       ##         
+	0x06, 0x18, 0x00, //      ##    ##    
+	0x0C, 0x18, 0x00, //     ##     ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x3F, 0xF8, 0x00, //   ###########    
+	0x3F, 0xF8, 0x00, //   ###########    
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @4248 '[' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x01, 0xF0, 0x00, //        #####     
+	0x01, 0xF0, 0x00, //        #####     
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0xF0, 0x00, //        #####     
+	0x01, 0xF0, 0x00, //        #####     
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @4320 '\' (17 pixels wide)
+	0x18, 0x00, 0x00, //    ##            
+	0x18, 0x00, 0x00, //    ##            
+	0x1C, 0x00, 0x00, //    ###           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0E, 0x00, 0x00, //     ###          
+	0x06, 0x00, 0x00, //      ##          
+	0x06, 0x00, 0x00, //      ##          
+	0x03, 0x00, 0x00, //       ##         
+	0x03, 0x00, 0x00, //       ##         
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x00, 0xC0, 0x00, //         ##       
+	0x00, 0xC0, 0x00, //         ##       
+	0x00, 0x60, 0x00, //          ##      
+	0x00, 0x60, 0x00, //          ##      
+	0x00, 0x70, 0x00, //          ###     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x38, 0x00, //           ###    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @4392 ']' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x0F, 0x80, 0x00, //     #####        
+	0x0F, 0x80, 0x00, //     #####        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x0F, 0x80, 0x00, //     #####        
+	0x0F, 0x80, 0x00, //     #####        
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @4464 '^' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x80, 0x00, //         #        
+	0x01, 0xC0, 0x00, //        ###       
+	0x03, 0xE0, 0x00, //       #####      
+	0x07, 0x70, 0x00, //      ### ###     
+	0x06, 0x30, 0x00, //      ##   ##     
+	0x0C, 0x18, 0x00, //     ##     ##    
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x10, 0x04, 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, //                  
+
+	// @4536 '_' (17 pixels wide)
+	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, //                  
+	0xFF, 0xFF, 0x00, // ################ 
+	0xFF, 0xFF, 0x00, // ################ 
+
+	// @4608 '`' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x03, 0x00, 0x00, //       ##         
+	0x03, 0x80, 0x00, //       ###        
+	0x00, 0xE0, 0x00, //         ###      
+	0x00, 0x60, 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, //                  
+
+	// @4680 'a' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x0F, 0xC0, 0x00, //     ######       
+	0x1F, 0xE0, 0x00, //    ########      
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x07, 0xF0, 0x00, //      #######     
+	0x1F, 0xF0, 0x00, //    #########     
+	0x38, 0x30, 0x00, //   ###     ##     
+	0x30, 0x30, 0x00, //   ##      ##     
+	0x30, 0x70, 0x00, //   ##     ###     
+	0x1F, 0xFC, 0x00, //    ###########   
+	0x0F, 0xBC, 0x00, //     ##### ####   
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @4752 'b' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x78, 0x00, 0x00, //  ####            
+	0x78, 0x00, 0x00, //  ####            
+	0x18, 0x00, 0x00, //    ##            
+	0x18, 0x00, 0x00, //    ##            
+	0x1B, 0xE0, 0x00, //    ## #####      
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x1C, 0x18, 0x00, //    ###     ##    
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x1C, 0x18, 0x00, //    ###     ##    
+	0x7F, 0xF8, 0x00, //  ############    
+	0x7B, 0xE0, 0x00, //  #### #####      
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @4824 'c' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0xEC, 0x00, //       ##### ##   
+	0x0F, 0xFC, 0x00, //     ##########   
+	0x1C, 0x1C, 0x00, //    ###     ###   
+	0x38, 0x0C, 0x00, //   ###       ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x30, 0x00, 0x00, //   ##             
+	0x30, 0x00, 0x00, //   ##             
+	0x38, 0x0C, 0x00, //   ###       ##   
+	0x1C, 0x1C, 0x00, //    ###     ###   
+	0x0F, 0xF8, 0x00, //     #########    
+	0x03, 0xF0, 0x00, //       ######     
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @4896 'd' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x78, 0x00, //          ####    
+	0x00, 0x78, 0x00, //          ####    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x07, 0xD8, 0x00, //      ##### ##    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x1F, 0xFE, 0x00, //    ############  
+	0x07, 0xDE, 0x00, //      ##### ####  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @4968 'e' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x07, 0xE0, 0x00, //      ######      
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x3F, 0xFC, 0x00, //   ############   
+	0x3F, 0xFC, 0x00, //   ############   
+	0x30, 0x00, 0x00, //   ##             
+	0x30, 0x00, 0x00, //   ##             
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x1F, 0xFC, 0x00, //    ###########   
+	0x07, 0xF0, 0x00, //      #######     
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5040 'f' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x01, 0xFC, 0x00, //        #######   
+	0x03, 0xFC, 0x00, //       ########   
+	0x06, 0x00, 0x00, //      ##          
+	0x06, 0x00, 0x00, //      ##          
+	0x3F, 0xF8, 0x00, //   ###########    
+	0x3F, 0xF8, 0x00, //   ###########    
+	0x06, 0x00, 0x00, //      ##          
+	0x06, 0x00, 0x00, //      ##          
+	0x06, 0x00, 0x00, //      ##          
+	0x06, 0x00, 0x00, //      ##          
+	0x06, 0x00, 0x00, //      ##          
+	0x06, 0x00, 0x00, //      ##          
+	0x06, 0x00, 0x00, //      ##          
+	0x3F, 0xF0, 0x00, //   ##########     
+	0x3F, 0xF0, 0x00, //   ##########     
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5112 'g' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x07, 0xDE, 0x00, //      ##### ####  
+	0x1F, 0xFE, 0x00, //    ############  
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x07, 0xD8, 0x00, //      ##### ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x38, 0x00, //           ###    
+	0x0F, 0xF0, 0x00, //     ########     
+	0x0F, 0xC0, 0x00, //     ######       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5184 'h' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x78, 0x00, 0x00, //  ####            
+	0x78, 0x00, 0x00, //  ####            
+	0x18, 0x00, 0x00, //    ##            
+	0x18, 0x00, 0x00, //    ##            
+	0x1B, 0xE0, 0x00, //    ## #####      
+	0x1F, 0xF0, 0x00, //    #########     
+	0x1C, 0x38, 0x00, //    ###    ###    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5256 'i' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x1F, 0x80, 0x00, //    ######        
+	0x1F, 0x80, 0x00, //    ######        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x3F, 0xFC, 0x00, //   ############   
+	0x3F, 0xFC, 0x00, //   ############   
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5328 'j' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0xC0, 0x00, //         ##       
+	0x00, 0xC0, 0x00, //         ##       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x1F, 0xF0, 0x00, //    #########     
+	0x1F, 0xF0, 0x00, //    #########     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x30, 0x00, //           ##     
+	0x00, 0x70, 0x00, //          ###     
+	0x1F, 0xE0, 0x00, //    ########      
+	0x1F, 0x80, 0x00, //    ######        
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5400 'k' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x3C, 0x00, 0x00, //   ####           
+	0x3C, 0x00, 0x00, //   ####           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0xF8, 0x00, //     ##  #####    
+	0x0C, 0xF8, 0x00, //     ##  #####    
+	0x0C, 0xC0, 0x00, //     ##  ##       
+	0x0D, 0x80, 0x00, //     ## ##        
+	0x0F, 0x80, 0x00, //     #####        
+	0x0F, 0x00, 0x00, //     ####         
+	0x0F, 0x80, 0x00, //     #####        
+	0x0D, 0xC0, 0x00, //     ## ###       
+	0x0C, 0xE0, 0x00, //     ##  ###      
+	0x3C, 0x7C, 0x00, //   ####   #####   
+	0x3C, 0x7C, 0x00, //   ####   #####   
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5472 'l' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x1F, 0x80, 0x00, //    ######        
+	0x1F, 0x80, 0x00, //    ######        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x3F, 0xFC, 0x00, //   ############   
+	0x3F, 0xFC, 0x00, //   ############   
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5544 'm' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0xF7, 0x78, 0x00, // #### ### ####    
+	0xFF, 0xFC, 0x00, // ##############   
+	0x39, 0xCC, 0x00, //   ###  ###  ##   
+	0x31, 0x8C, 0x00, //   ##   ##   ##   
+	0x31, 0x8C, 0x00, //   ##   ##   ##   
+	0x31, 0x8C, 0x00, //   ##   ##   ##   
+	0x31, 0x8C, 0x00, //   ##   ##   ##   
+	0x31, 0x8C, 0x00, //   ##   ##   ##   
+	0x31, 0x8C, 0x00, //   ##   ##   ##   
+	0xFD, 0xEF, 0x00, // ###### #### #### 
+	0xFD, 0xEF, 0x00, // ###### #### #### 
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5616 'n' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7B, 0xE0, 0x00, //  #### #####      
+	0x7F, 0xF0, 0x00, //  ###########     
+	0x1C, 0x38, 0x00, //    ###    ###    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x7E, 0x7E, 0x00, //  ######  ######  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5688 'o' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x03, 0xC0, 0x00, //       ####       
+	0x0F, 0xF0, 0x00, //     ########     
+	0x1C, 0x38, 0x00, //    ###    ###    
+	0x38, 0x1C, 0x00, //   ###      ###   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x30, 0x0C, 0x00, //   ##        ##   
+	0x38, 0x1C, 0x00, //   ###      ###   
+	0x1C, 0x38, 0x00, //    ###    ###    
+	0x0F, 0xF0, 0x00, //     ########     
+	0x03, 0xC0, 0x00, //       ####       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5760 'p' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7B, 0xE0, 0x00, //  #### #####      
+	0x7F, 0xF8, 0x00, //  ############    
+	0x1C, 0x18, 0x00, //    ###     ##    
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x1C, 0x18, 0x00, //    ###     ##    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x1B, 0xE0, 0x00, //    ## #####      
+	0x18, 0x00, 0x00, //    ##            
+	0x18, 0x00, 0x00, //    ##            
+	0x18, 0x00, 0x00, //    ##            
+	0x7F, 0x00, 0x00, //  #######         
+	0x7F, 0x00, 0x00, //  #######         
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5832 'q' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x07, 0xDE, 0x00, //      ##### ####  
+	0x1F, 0xFE, 0x00, //    ############  
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x30, 0x18, 0x00, //   ##       ##    
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x07, 0xD8, 0x00, //      ##### ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0x18, 0x00, //            ##    
+	0x00, 0xFE, 0x00, //         #######  
+	0x00, 0xFE, 0x00, //         #######  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5904 'r' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x3E, 0x78, 0x00, //   #####  ####    
+	0x3E, 0xFC, 0x00, //   ##### ######   
+	0x07, 0xCC, 0x00, //      #####  ##   
+	0x07, 0x00, 0x00, //      ###         
+	0x06, 0x00, 0x00, //      ##          
+	0x06, 0x00, 0x00, //      ##          
+	0x06, 0x00, 0x00, //      ##          
+	0x06, 0x00, 0x00, //      ##          
+	0x06, 0x00, 0x00, //      ##          
+	0x3F, 0xF0, 0x00, //   ##########     
+	0x3F, 0xF0, 0x00, //   ##########     
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @5976 's' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x07, 0xF8, 0x00, //      ########    
+	0x0F, 0xF8, 0x00, //     #########    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x1F, 0x80, 0x00, //    ######        
+	0x0F, 0xF0, 0x00, //     ########     
+	0x00, 0xF8, 0x00, //         #####    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x1F, 0xF0, 0x00, //    #########     
+	0x1F, 0xE0, 0x00, //    ########      
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @6048 't' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x3F, 0xF0, 0x00, //   ##########     
+	0x3F, 0xF0, 0x00, //   ##########     
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x00, 0x00, //     ##           
+	0x0C, 0x1C, 0x00, //     ##     ###   
+	0x07, 0xFC, 0x00, //      #########   
+	0x03, 0xF0, 0x00, //       ######     
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @6120 'u' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x78, 0x78, 0x00, //  ####    ####    
+	0x78, 0x78, 0x00, //  ####    ####    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x38, 0x00, //    ##     ###    
+	0x0F, 0xFE, 0x00, //     ###########  
+	0x07, 0xDE, 0x00, //      ##### ####  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @6192 'v' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7C, 0x3E, 0x00, //  #####    #####  
+	0x7C, 0x3E, 0x00, //  #####    #####  
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x18, 0x18, 0x00, //    ##      ##    
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x07, 0xE0, 0x00, //      ######      
+	0x03, 0xC0, 0x00, //       ####       
+	0x03, 0xC0, 0x00, //       ####       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @6264 'w' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x78, 0x3C, 0x00, //  ####     ####   
+	0x78, 0x3C, 0x00, //  ####     ####   
+	0x31, 0x18, 0x00, //   ##   #   ##    
+	0x33, 0x98, 0x00, //   ##  ###  ##    
+	0x33, 0x98, 0x00, //   ##  ###  ##    
+	0x1A, 0xB0, 0x00, //    ## # # ##     
+	0x1E, 0xF0, 0x00, //    #### ####     
+	0x1E, 0xF0, 0x00, //    #### ####     
+	0x1C, 0x60, 0x00, //    ###   ##      
+	0x0C, 0x60, 0x00, //     ##   ##      
+	0x0C, 0x60, 0x00, //     ##   ##      
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @6336 'x' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x3E, 0x7C, 0x00, //   #####  #####   
+	0x3E, 0x7C, 0x00, //   #####  #####   
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x03, 0xC0, 0x00, //       ####       
+	0x01, 0x80, 0x00, //        ##        
+	0x03, 0xC0, 0x00, //       ####       
+	0x06, 0x60, 0x00, //      ##  ##      
+	0x0C, 0x30, 0x00, //     ##    ##     
+	0x3E, 0x7C, 0x00, //   #####  #####   
+	0x3E, 0x7C, 0x00, //   #####  #####   
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @6408 'y' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x7E, 0x1F, 0x00, //  ######    ##### 
+	0x7E, 0x1F, 0x00, //  ######    ##### 
+	0x18, 0x0C, 0x00, //    ##       ##   
+	0x0C, 0x18, 0x00, //     ##     ##    
+	0x0C, 0x18, 0x00, //     ##     ##    
+	0x06, 0x30, 0x00, //      ##   ##     
+	0x06, 0x30, 0x00, //      ##   ##     
+	0x03, 0x60, 0x00, //       ## ##      
+	0x03, 0xE0, 0x00, //       #####      
+	0x01, 0xC0, 0x00, //        ###       
+	0x00, 0xC0, 0x00, //         ##       
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x03, 0x00, 0x00, //       ##         
+	0x3F, 0xC0, 0x00, //   ########       
+	0x3F, 0xC0, 0x00, //   ########       
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @6480 'z' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x18, 0x30, 0x00, //    ##     ##     
+	0x18, 0x60, 0x00, //    ##    ##      
+	0x00, 0xC0, 0x00, //         ##       
+	0x01, 0x80, 0x00, //        ##        
+	0x03, 0x00, 0x00, //       ##         
+	0x06, 0x18, 0x00, //      ##    ##    
+	0x0C, 0x18, 0x00, //     ##     ##    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x1F, 0xF8, 0x00, //    ##########    
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @6552 '{' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0xE0, 0x00, //         ###      
+	0x01, 0xE0, 0x00, //        ####      
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x03, 0x80, 0x00, //       ###        
+	0x07, 0x00, 0x00, //      ###         
+	0x03, 0x80, 0x00, //       ###        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0xE0, 0x00, //        ####      
+	0x00, 0xE0, 0x00, //         ###      
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @6624 '|' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @6696 '}' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x07, 0x00, 0x00, //      ###         
+	0x07, 0x80, 0x00, //      ####        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0xC0, 0x00, //        ###       
+	0x00, 0xE0, 0x00, //         ###      
+	0x01, 0xC0, 0x00, //        ###       
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x01, 0x80, 0x00, //        ##        
+	0x07, 0x80, 0x00, //      ####        
+	0x07, 0x00, 0x00, //      ###         
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+
+	// @6768 '~' (17 pixels wide)
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x00, 0x00, 0x00, //                  
+	0x0E, 0x00, 0x00, //     ###          
+	0x1F, 0x18, 0x00, //    #####   ##    
+	0x3B, 0xB8, 0x00, //   ### ### ###    
+	0x31, 0xF0, 0x00, //   ##   #####     
+	0x00, 0xE0, 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, //                  
+};
+
+sFONT Font24 = {
+  Font24_Table,
+  17, /* Width */
+  24, /* Height */
+};
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 1005 - 0
Arduino/epd2in7_V2/font8.cpp

@@ -0,0 +1,1005 @@
+/**
+  ******************************************************************************
+  * @file    Font8.cpp
+  * @author  MCD Application Team
+  * @version V1.0.0
+  * @date    18-February-2014
+  * @brief   This file provides text Font8. 
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "fonts.h"
+#include <avr/pgmspace.h>
+
+// 
+//  Font data for Courier New 12pt
+// 
+
+const uint8_t Font8_Table[] PROGMEM = 
+{
+	// @0 ' ' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+
+	// @8 '!' (5 pixels wide)
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x00, //      
+	0x20, //   #  
+	0x00, //      
+	0x00, //      
+
+	// @16 '"' (5 pixels wide)
+	0x50, //  # # 
+	0x50, //  # # 
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+
+	// @24 '#' (5 pixels wide)
+	0x28, //   # #
+	0x50, //  # # 
+	0xF8, // #####
+	0x50, //  # # 
+	0xF8, // #####
+	0x50, //  # # 
+	0xA0, // # #  
+	0x00, //      
+
+	// @32 '$' (5 pixels wide)
+	0x20, //   #  
+	0x30, //   ## 
+	0x60, //  ##  
+	0x30, //   ## 
+	0x10, //    # 
+	0x60, //  ##  
+	0x20, //   #  
+	0x00, //      
+
+	// @40 '%' (5 pixels wide)
+	0x20, //   #  
+	0x20, //   #  
+	0x18, //    ##
+	0x60, //  ##  
+	0x10, //    # 
+	0x10, //    # 
+	0x00, //      
+	0x00, //      
+
+	// @48 '&' (5 pixels wide)
+	0x00, //      
+	0x38, //   ###
+	0x20, //   #  
+	0x60, //  ##  
+	0x50, //  # # 
+	0x78, //  ####
+	0x00, //      
+	0x00, //      
+
+	// @56 ''' (5 pixels wide)
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+
+	// @64 '(' (5 pixels wide)
+	0x10, //    # 
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x10, //    # 
+	0x00, //      
+
+	// @72 ')' (5 pixels wide)
+	0x40, //  #   
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x40, //  #   
+	0x00, //      
+
+	// @80 '*' (5 pixels wide)
+	0x20, //   #  
+	0x70, //  ### 
+	0x20, //   #  
+	0x50, //  # # 
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+
+	// @88 '+' (5 pixels wide)
+	0x00, //      
+	0x20, //   #  
+	0x20, //   #  
+	0xF8, // #####
+	0x20, //   #  
+	0x20, //   #  
+	0x00, //      
+	0x00, //      
+
+	// @96 ',' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x10, //    # 
+	0x20, //   #  
+	0x20, //   #  
+	0x00, //      
+
+	// @104 '-' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x70, //  ### 
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+
+	// @112 '.' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x20, //   #  
+	0x00, //      
+	0x00, //      
+
+	// @120 '/' (5 pixels wide)
+	0x10, //    # 
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x40, //  #   
+	0x40, //  #   
+	0x80, // #    
+	0x00, //      
+
+	// @128 '0' (5 pixels wide)
+	0x20, //   #  
+	0x50, //  # # 
+	0x50, //  # # 
+	0x50, //  # # 
+	0x50, //  # # 
+	0x20, //   #  
+	0x00, //      
+	0x00, //      
+
+	// @136 '1' (5 pixels wide)
+	0x60, //  ##  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0xF8, // #####
+	0x00, //      
+	0x00, //      
+
+	// @144 '2' (5 pixels wide)
+	0x20, //   #  
+	0x50, //  # # 
+	0x20, //   #  
+	0x20, //   #  
+	0x40, //  #   
+	0x70, //  ### 
+	0x00, //      
+	0x00, //      
+
+	// @152 '3' (5 pixels wide)
+	0x20, //   #  
+	0x50, //  # # 
+	0x10, //    # 
+	0x20, //   #  
+	0x10, //    # 
+	0x60, //  ##  
+	0x00, //      
+	0x00, //      
+
+	// @160 '4' (5 pixels wide)
+	0x10, //    # 
+	0x30, //   ## 
+	0x50, //  # # 
+	0x78, //  ####
+	0x10, //    # 
+	0x38, //   ###
+	0x00, //      
+	0x00, //      
+
+	// @168 '5' (5 pixels wide)
+	0x70, //  ### 
+	0x40, //  #   
+	0x60, //  ##  
+	0x10, //    # 
+	0x50, //  # # 
+	0x20, //   #  
+	0x00, //      
+	0x00, //      
+
+	// @176 '6' (5 pixels wide)
+	0x30, //   ## 
+	0x40, //  #   
+	0x60, //  ##  
+	0x50, //  # # 
+	0x50, //  # # 
+	0x60, //  ##  
+	0x00, //      
+	0x00, //      
+
+	// @184 '7' (5 pixels wide)
+	0x70, //  ### 
+	0x50, //  # # 
+	0x10, //    # 
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x00, //      
+	0x00, //      
+
+	// @192 '8' (5 pixels wide)
+	0x20, //   #  
+	0x50, //  # # 
+	0x20, //   #  
+	0x50, //  # # 
+	0x50, //  # # 
+	0x20, //   #  
+	0x00, //      
+	0x00, //      
+
+	// @200 '9' (5 pixels wide)
+	0x30, //   ## 
+	0x50, //  # # 
+	0x50, //  # # 
+	0x30, //   ## 
+	0x10, //    # 
+	0x60, //  ##  
+	0x00, //      
+	0x00, //      
+
+	// @208 ':' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x20, //   #  
+	0x00, //      
+	0x00, //      
+	0x20, //   #  
+	0x00, //      
+	0x00, //      
+
+	// @216 ';' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x10, //    # 
+	0x00, //      
+	0x10, //    # 
+	0x20, //   #  
+	0x00, //      
+	0x00, //      
+
+	// @224 '<' (5 pixels wide)
+	0x00, //      
+	0x10, //    # 
+	0x20, //   #  
+	0xC0, // ##   
+	0x20, //   #  
+	0x10, //    # 
+	0x00, //      
+	0x00, //      
+
+	// @232 '=' (5 pixels wide)
+	0x00, //      
+	0x70, //  ### 
+	0x00, //      
+	0x70, //  ### 
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+
+	// @240 '>' (5 pixels wide)
+	0x00, //      
+	0x40, //  #   
+	0x20, //   #  
+	0x18, //    ##
+	0x20, //   #  
+	0x40, //  #   
+	0x00, //      
+	0x00, //      
+
+	// @248 '?' (5 pixels wide)
+	0x20, //   #  
+	0x50, //  # # 
+	0x10, //    # 
+	0x20, //   #  
+	0x00, //      
+	0x20, //   #  
+	0x00, //      
+	0x00, //      
+
+	// @256 '@' (5 pixels wide)
+	0x30, //   ## 
+	0x48, //  #  #
+	0x48, //  #  #
+	0x58, //  # ##
+	0x48, //  #  #
+	0x40, //  #   
+	0x38, //   ###
+	0x00, //      
+
+	// @264 'A' (5 pixels wide)
+	0x60, //  ##  
+	0x20, //   #  
+	0x50, //  # # 
+	0x70, //  ### 
+	0x88, // #   #
+	0xD8, // ## ##
+	0x00, //      
+	0x00, //      
+
+	// @272 'B' (5 pixels wide)
+	0xF0, // #### 
+	0x48, //  #  #
+	0x70, //  ### 
+	0x48, //  #  #
+	0x48, //  #  #
+	0xF0, // #### 
+	0x00, //      
+	0x00, //      
+
+	// @280 'C' (5 pixels wide)
+	0x70, //  ### 
+	0x50, //  # # 
+	0x40, //  #   
+	0x40, //  #   
+	0x40, //  #   
+	0x30, //   ## 
+	0x00, //      
+	0x00, //      
+
+	// @288 'D' (5 pixels wide)
+	0xF0, // #### 
+	0x48, //  #  #
+	0x48, //  #  #
+	0x48, //  #  #
+	0x48, //  #  #
+	0xF0, // #### 
+	0x00, //      
+	0x00, //      
+
+	// @296 'E' (5 pixels wide)
+	0xF8, // #####
+	0x48, //  #  #
+	0x60, //  ##  
+	0x40, //  #   
+	0x48, //  #  #
+	0xF8, // #####
+	0x00, //      
+	0x00, //      
+
+	// @304 'F' (5 pixels wide)
+	0xF8, // #####
+	0x48, //  #  #
+	0x60, //  ##  
+	0x40, //  #   
+	0x40, //  #   
+	0xE0, // ###  
+	0x00, //      
+	0x00, //      
+
+	// @312 'G' (5 pixels wide)
+	0x70, //  ### 
+	0x40, //  #   
+	0x40, //  #   
+	0x58, //  # ##
+	0x50, //  # # 
+	0x30, //   ## 
+	0x00, //      
+	0x00, //      
+
+	// @320 'H' (5 pixels wide)
+	0xE8, // ### #
+	0x48, //  #  #
+	0x78, //  ####
+	0x48, //  #  #
+	0x48, //  #  #
+	0xE8, // ### #
+	0x00, //      
+	0x00, //      
+
+	// @328 'I' (5 pixels wide)
+	0x70, //  ### 
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x70, //  ### 
+	0x00, //      
+	0x00, //      
+
+	// @336 'J' (5 pixels wide)
+	0x38, //   ###
+	0x10, //    # 
+	0x10, //    # 
+	0x50, //  # # 
+	0x50, //  # # 
+	0x20, //   #  
+	0x00, //      
+	0x00, //      
+
+	// @344 'K' (5 pixels wide)
+	0xD8, // ## ##
+	0x50, //  # # 
+	0x60, //  ##  
+	0x70, //  ### 
+	0x50, //  # # 
+	0xD8, // ## ##
+	0x00, //      
+	0x00, //      
+
+	// @352 'L' (5 pixels wide)
+	0xE0, // ###  
+	0x40, //  #   
+	0x40, //  #   
+	0x40, //  #   
+	0x48, //  #  #
+	0xF8, // #####
+	0x00, //      
+	0x00, //      
+
+	// @360 'M' (5 pixels wide)
+	0xD8, // ## ##
+	0xD8, // ## ##
+	0xD8, // ## ##
+	0xA8, // # # #
+	0x88, // #   #
+	0xD8, // ## ##
+	0x00, //      
+	0x00, //      
+
+	// @368 'N' (5 pixels wide)
+	0xD8, // ## ##
+	0x68, //  ## #
+	0x68, //  ## #
+	0x58, //  # ##
+	0x58, //  # ##
+	0xE8, // ### #
+	0x00, //      
+	0x00, //      
+
+	// @376 'O' (5 pixels wide)
+	0x30, //   ## 
+	0x48, //  #  #
+	0x48, //  #  #
+	0x48, //  #  #
+	0x48, //  #  #
+	0x30, //   ## 
+	0x00, //      
+	0x00, //      
+
+	// @384 'P' (5 pixels wide)
+	0xF0, // #### 
+	0x48, //  #  #
+	0x48, //  #  #
+	0x70, //  ### 
+	0x40, //  #   
+	0xE0, // ###  
+	0x00, //      
+	0x00, //      
+
+	// @392 'Q' (5 pixels wide)
+	0x30, //   ## 
+	0x48, //  #  #
+	0x48, //  #  #
+	0x48, //  #  #
+	0x48, //  #  #
+	0x30, //   ## 
+	0x18, //    ##
+	0x00, //      
+
+	// @400 'R' (5 pixels wide)
+	0xF0, // #### 
+	0x48, //  #  #
+	0x48, //  #  #
+	0x70, //  ### 
+	0x48, //  #  #
+	0xE8, // ### #
+	0x00, //      
+	0x00, //      
+
+	// @408 'S' (5 pixels wide)
+	0x70, //  ### 
+	0x50, //  # # 
+	0x20, //   #  
+	0x10, //    # 
+	0x50, //  # # 
+	0x70, //  ### 
+	0x00, //      
+	0x00, //      
+
+	// @416 'T' (5 pixels wide)
+	0xF8, // #####
+	0xA8, // # # #
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x70, //  ### 
+	0x00, //      
+	0x00, //      
+
+	// @424 'U' (5 pixels wide)
+	0xD8, // ## ##
+	0x48, //  #  #
+	0x48, //  #  #
+	0x48, //  #  #
+	0x48, //  #  #
+	0x30, //   ## 
+	0x00, //      
+	0x00, //      
+
+	// @432 'V' (5 pixels wide)
+	0xD8, // ## ##
+	0x88, // #   #
+	0x48, //  #  #
+	0x50, //  # # 
+	0x50, //  # # 
+	0x30, //   ## 
+	0x00, //      
+	0x00, //      
+
+	// @440 'W' (5 pixels wide)
+	0xD8, // ## ##
+	0x88, // #   #
+	0xA8, // # # #
+	0xA8, // # # #
+	0xA8, // # # #
+	0x50, //  # # 
+	0x00, //      
+	0x00, //      
+
+	// @448 'X' (5 pixels wide)
+	0xD8, // ## ##
+	0x50, //  # # 
+	0x20, //   #  
+	0x20, //   #  
+	0x50, //  # # 
+	0xD8, // ## ##
+	0x00, //      
+	0x00, //      
+
+	// @456 'Y' (5 pixels wide)
+	0xD8, // ## ##
+	0x88, // #   #
+	0x50, //  # # 
+	0x20, //   #  
+	0x20, //   #  
+	0x70, //  ### 
+	0x00, //      
+	0x00, //      
+
+	// @464 'Z' (5 pixels wide)
+	0x78, //  ####
+	0x48, //  #  #
+	0x10, //    # 
+	0x20, //   #  
+	0x48, //  #  #
+	0x78, //  ####
+	0x00, //      
+	0x00, //      
+
+	// @472 '[' (5 pixels wide)
+	0x30, //   ## 
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x30, //   ## 
+	0x00, //      
+
+	// @480 '\' (5 pixels wide)
+	0x80, // #    
+	0x40, //  #   
+	0x40, //  #   
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x10, //    # 
+	0x00, //      
+
+	// @488 ']' (5 pixels wide)
+	0x60, //  ##  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x60, //  ##  
+	0x00, //      
+
+	// @496 '^' (5 pixels wide)
+	0x20, //   #  
+	0x20, //   #  
+	0x50, //  # # 
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+
+	// @504 '_' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0xF8, // #####
+
+	// @512 '`' (5 pixels wide)
+	0x20, //   #  
+	0x10, //    # 
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x00, //      
+
+	// @520 'a' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x30, //   ## 
+	0x10, //    # 
+	0x70, //  ### 
+	0x78, //  ####
+	0x00, //      
+	0x00, //      
+
+	// @528 'b' (5 pixels wide)
+	0xC0, // ##   
+	0x40, //  #   
+	0x70, //  ### 
+	0x48, //  #  #
+	0x48, //  #  #
+	0xF0, // #### 
+	0x00, //      
+	0x00, //      
+
+	// @536 'c' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x70, //  ### 
+	0x40, //  #   
+	0x40, //  #   
+	0x70, //  ### 
+	0x00, //      
+	0x00, //      
+
+	// @544 'd' (5 pixels wide)
+	0x18, //    ##
+	0x08, //     #
+	0x38, //   ###
+	0x48, //  #  #
+	0x48, //  #  #
+	0x38, //   ###
+	0x00, //      
+	0x00, //      
+
+	// @552 'e' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x70, //  ### 
+	0x70, //  ### 
+	0x40, //  #   
+	0x30, //   ## 
+	0x00, //      
+	0x00, //      
+
+	// @560 'f' (5 pixels wide)
+	0x10, //    # 
+	0x20, //   #  
+	0x70, //  ### 
+	0x20, //   #  
+	0x20, //   #  
+	0x70, //  ### 
+	0x00, //      
+	0x00, //      
+
+	// @568 'g' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x38, //   ###
+	0x48, //  #  #
+	0x48, //  #  #
+	0x38, //   ###
+	0x08, //     #
+	0x30, //   ## 
+
+	// @576 'h' (5 pixels wide)
+	0xC0, // ##   
+	0x40, //  #   
+	0x70, //  ### 
+	0x48, //  #  #
+	0x48, //  #  #
+	0xE8, // ### #
+	0x00, //      
+	0x00, //      
+
+	// @584 'i' (5 pixels wide)
+	0x20, //   #  
+	0x00, //      
+	0x60, //  ##  
+	0x20, //   #  
+	0x20, //   #  
+	0x70, //  ### 
+	0x00, //      
+	0x00, //      
+
+	// @592 'j' (5 pixels wide)
+	0x20, //   #  
+	0x00, //      
+	0x70, //  ### 
+	0x10, //    # 
+	0x10, //    # 
+	0x10, //    # 
+	0x10, //    # 
+	0x70, //  ### 
+
+	// @600 'k' (5 pixels wide)
+	0xC0, // ##   
+	0x40, //  #   
+	0x58, //  # ##
+	0x70, //  ### 
+	0x50, //  # # 
+	0xD8, // ## ##
+	0x00, //      
+	0x00, //      
+
+	// @608 'l' (5 pixels wide)
+	0x60, //  ##  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x70, //  ### 
+	0x00, //      
+	0x00, //      
+
+	// @616 'm' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0xD0, // ## # 
+	0xA8, // # # #
+	0xA8, // # # #
+	0xA8, // # # #
+	0x00, //      
+	0x00, //      
+
+	// @624 'n' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0xF0, // #### 
+	0x48, //  #  #
+	0x48, //  #  #
+	0xC8, // ##  #
+	0x00, //      
+	0x00, //      
+
+	// @632 'o' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x30, //   ## 
+	0x48, //  #  #
+	0x48, //  #  #
+	0x30, //   ## 
+	0x00, //      
+	0x00, //      
+
+	// @640 'p' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0xF0, // #### 
+	0x48, //  #  #
+	0x48, //  #  #
+	0x70, //  ### 
+	0x40, //  #   
+	0xE0, // ###  
+
+	// @648 'q' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x38, //   ###
+	0x48, //  #  #
+	0x48, //  #  #
+	0x38, //   ###
+	0x08, //     #
+	0x18, //    ##
+
+	// @656 'r' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x78, //  ####
+	0x20, //   #  
+	0x20, //   #  
+	0x70, //  ### 
+	0x00, //      
+	0x00, //      
+
+	// @664 's' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x30, //   ## 
+	0x20, //   #  
+	0x10, //    # 
+	0x60, //  ##  
+	0x00, //      
+	0x00, //      
+
+	// @672 't' (5 pixels wide)
+	0x00, //      
+	0x40, //  #   
+	0xF0, // #### 
+	0x40, //  #   
+	0x48, //  #  #
+	0x30, //   ## 
+	0x00, //      
+	0x00, //      
+
+	// @680 'u' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0xD8, // ## ##
+	0x48, //  #  #
+	0x48, //  #  #
+	0x38, //   ###
+	0x00, //      
+	0x00, //      
+
+	// @688 'v' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0xC8, // ##  #
+	0x48, //  #  #
+	0x30, //   ## 
+	0x30, //   ## 
+	0x00, //      
+	0x00, //      
+
+	// @696 'w' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0xD8, // ## ##
+	0xA8, // # # #
+	0xA8, // # # #
+	0x50, //  # # 
+	0x00, //      
+	0x00, //      
+
+	// @704 'x' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x48, //  #  #
+	0x30, //   ## 
+	0x30, //   ## 
+	0x48, //  #  #
+	0x00, //      
+	0x00, //      
+
+	// @712 'y' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0xD8, // ## ##
+	0x50, //  # # 
+	0x50, //  # # 
+	0x20, //   #  
+	0x20, //   #  
+	0x60, //  ##  
+
+	// @720 'z' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x78, //  ####
+	0x50, //  # # 
+	0x28, //   # #
+	0x78, //  ####
+	0x00, //      
+	0x00, //      
+
+	// @728 '{' (5 pixels wide)
+	0x10, //    # 
+	0x20, //   #  
+	0x20, //   #  
+	0x60, //  ##  
+	0x20, //   #  
+	0x20, //   #  
+	0x10, //    # 
+	0x00, //      
+
+	// @736 '|' (5 pixels wide)
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x20, //   #  
+	0x00, //      
+
+	// @744 '}' (5 pixels wide)
+	0x40, //  #   
+	0x20, //   #  
+	0x20, //   #  
+	0x30, //   ## 
+	0x20, //   #  
+	0x20, //   #  
+	0x40, //  #   
+	0x00, //      
+
+	// @752 '~' (5 pixels wide)
+	0x00, //      
+	0x00, //      
+	0x00, //      
+	0x28, //   # #
+	0x50, //  # # 
+	0x00, //      
+	0x00, //      
+	0x00, //      
+};
+
+sFONT Font8 = {
+  Font8_Table,
+  5, /* Width */
+  8, /* Height */
+};
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 65 - 0
Arduino/epd2in7_V2/fonts.h

@@ -0,0 +1,65 @@
+/**
+  ******************************************************************************
+  * @file    fonts.h
+  * @author  MCD Application Team
+  * @version V1.0.0
+  * @date    18-February-2014
+  * @brief   Header for fonts.c file
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without modification,
+  * are permitted provided that the following conditions are met:
+  *   1. Redistributions of source code must retain the above copyright notice,
+  *      this list of conditions and the following disclaimer.
+  *   2. Redistributions in binary form must reproduce the above copyright notice,
+  *      this list of conditions and the following disclaimer in the documentation
+  *      and/or other materials provided with the distribution.
+  *   3. Neither the name of STMicroelectronics nor the names of its contributors
+  *      may be used to endorse or promote products derived from this software
+  *      without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __FONTS_H
+#define __FONTS_H
+
+/* Max size of bitmap will based on a font24 (17x24) */
+#define MAX_HEIGHT_FONT         24
+#define MAX_WIDTH_FONT          17
+#define OFFSET_BITMAP           54
+
+/* Includes ------------------------------------------------------------------*/
+#include <stdint.h>
+
+struct sFONT {
+  const uint8_t *table;
+  uint16_t Width;
+  uint16_t Height;
+};
+
+extern sFONT Font24;
+extern sFONT Font20;
+extern sFONT Font16;
+extern sFONT Font12;
+extern sFONT Font8;
+
+#endif /* __FONTS_H */
+ 
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 1125 - 0
Arduino/epd2in7_V2/imagedata.cpp

@@ -0,0 +1,1125 @@
+/**
+ *  @filename   :   imagedata.cpp
+ *  @brief      :   data file for epd demo
+ *
+ *  Copyright (C) Waveshare     August 18 2017
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "imagedata.h"
+#include <avr/pgmspace.h>
+
+const unsigned char IMAGE_DATA[5808] PROGMEM = { 
+/* 0X00,0X01,0XB0,0X00,0X08,0X01, */
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0X80,0X00,0X00,0X00,0X00,0X03,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0X80,0X00,0X00,0X00,
+0X00,0X03,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFE,0X1F,0X80,0X00,0X00,0X00,0X00,0X03,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0X80,0X00,0X00,0X00,0X00,0X03,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0XFF,0XFF,0XFE,0X1F,0X80,0X00,
+0X00,0X00,0X00,0X03,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,
+0X1F,0XFF,0XFE,0X1F,0X83,0XFF,0XFF,0XFF,0XFF,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X0F,0XFF,0XFE,0X1F,0X83,0XFF,0XFF,0XFF,0XFF,0X83,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X0E,0X07,0XFF,0XFE,0X1F,
+0X83,0XFF,0XFF,0XFF,0XFF,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XF8,0X3F,0X83,0XFF,0XFE,0X1F,0X83,0XFF,0XFF,0XFF,0XFF,0X83,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,0XFE,0X1F,0X83,0XFF,0XFF,0XFF,
+0XFF,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0XFF,0XF1,0XFF,
+0XFE,0X1F,0X83,0XFF,0XC0,0X00,0X01,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0X01,0XFF,0XF1,0XFF,0XFE,0X1F,0X83,0X00,0X00,0X00,0X01,0X83,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X01,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0X00,
+0X00,0X00,0X01,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XFF,
+0XF0,0XFF,0XFE,0X1F,0X83,0X00,0X00,0X00,0X01,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XF0,0X7F,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0X00,0X00,0X00,0X01,0X83,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0XFF,0XFF,0XF0,0XFF,0XFE,0X1F,
+0X83,0X01,0XFF,0XFF,0XFF,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC3,
+0XFF,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0X00,0X3F,0XFF,0XFF,0X83,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XC7,0XFF,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0X00,0X07,0XFF,
+0XFF,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X87,0XFF,0XFF,0XF0,0XFF,
+0XFE,0X1F,0X83,0XE0,0X00,0X7F,0XFF,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0X8F,0XFF,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0XFE,0X00,0X0F,0XFF,0X83,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0XFF,
+0XE0,0X03,0XFF,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,
+0XF0,0XFF,0XFE,0X1F,0X83,0XFF,0XFE,0X03,0XFF,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0XFF,0XE0,0X03,0XFF,0X83,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XF0,0XFF,0XFE,0X1F,
+0X83,0XFE,0X00,0X03,0XFF,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,
+0XFF,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0XE0,0X00,0X1F,0XFF,0X83,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X87,0XFF,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0X00,0X01,0XFF,
+0XFF,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X87,0XFF,0XFF,0XF0,0XFF,
+0XFE,0X1F,0X83,0X00,0X1F,0XFF,0XFF,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XC3,0XFF,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0X00,0XFF,0XFF,0XFF,0X83,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9,0XC1,0XFF,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0X00,
+0X00,0X00,0X1F,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XE0,0XFF,0XFF,
+0XF0,0XFF,0XFE,0X1F,0X83,0X00,0X00,0X00,0X01,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFC,0X70,0X1F,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0X00,0X00,0X00,0X01,0X83,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X38,0X1F,0XFF,0XF0,0XFF,0XFE,0X1F,
+0X83,0X00,0X00,0X00,0X01,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3E,
+0X1F,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0XFF,0XC0,0X00,0X01,0X83,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XBE,0X1F,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0XFF,0XFF,0XFF,
+0XFF,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XBE,0X1F,0XFF,0XF0,0XFF,
+0XFE,0X1F,0X83,0XFF,0XFF,0XFF,0XFF,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0X0F,0X1E,0X1F,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0XFF,0XFF,0XFF,0XE1,0X83,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X82,0X0E,0X1F,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0XFF,
+0XFF,0XFF,0X01,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X1E,0X1F,0XFF,
+0XF0,0XFF,0XFE,0X1F,0X83,0XFF,0XFF,0XF0,0X01,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFC,0X3F,0X0F,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0XFF,0XFF,0X80,0X01,0X83,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X3F,0X07,0XFF,0XF0,0XFF,0XFE,0X1F,
+0X83,0XFF,0XF8,0X00,0X01,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X7F,
+0X81,0XFF,0XF0,0XFF,0XFE,0X1F,0X83,0XFF,0XC0,0X00,0X01,0X83,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XF8,0X7F,0XC0,0X0F,0XF0,0XFF,0XFE,0X1F,0X83,0XFC,0X00,0X00,
+0X07,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X7F,0XE0,0X1F,0XF0,0XFF,
+0XFE,0X1F,0X83,0XE0,0X00,0X00,0X7F,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
+0X00,0X7F,0XFC,0X1F,0XF0,0XFF,0XFE,0X1F,0X83,0X00,0X00,0X00,0X7F,0X83,0XE1,0XFF,
+0XFF,0XFE,0X3F,0XFF,0XFF,0XFF,0XFC,0X7F,0XFE,0X1F,0XF0,0XFF,0XFE,0X1F,0X83,0X00,
+0X00,0X70,0X7F,0X83,0XE1,0XFF,0XFF,0XFC,0X1F,0XFF,0XFF,0XFF,0XFC,0X3F,0XFE,0X1F,
+0XF0,0XFF,0XFE,0X1F,0X83,0X00,0X07,0XF0,0X7F,0X83,0XE1,0XFF,0XFF,0XFC,0X1F,0XFF,
+0XFF,0XFF,0XFC,0X1F,0XFF,0X1F,0XF1,0XFF,0XFE,0X1F,0X83,0X00,0X7F,0XF0,0X7F,0X83,
+0XE1,0XFF,0XFF,0XFE,0X3F,0XFF,0XFF,0XFF,0XF8,0X0F,0XFF,0X0F,0XE1,0XFF,0XFE,0X1F,
+0X83,0X07,0XFF,0XF0,0X7F,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X01,
+0X0F,0X83,0XC1,0XFF,0XFE,0X1F,0X83,0X00,0X7F,0XF0,0X7F,0X83,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XC3,0X80,0X07,0X80,0X03,0XFF,0XFE,0X1F,0X83,0X00,0X0F,0XF0,
+0X7F,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XC0,0X03,0XC0,0X07,0XFF,
+0XFE,0X1F,0X83,0X00,0X00,0XF0,0X7F,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0X9F,0XC0,0X19,0XF0,0X1F,0XFF,0XFE,0X1F,0X83,0X80,0X00,0X10,0X7F,0X83,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9E,0X7C,0XFC,0X7F,0XFF,0XFE,0X1F,0X83,0XF0,
+0X00,0X00,0X7F,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0X7C,0X7F,
+0XFF,0XFF,0XFE,0X1F,0X83,0XFE,0X00,0X00,0X3F,0X83,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0X3F,0X7E,0X7F,0XFF,0XFF,0XFE,0X1F,0X83,0XFF,0XE0,0X00,0X03,0X83,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X7F,0X3F,0XFF,0XFF,0XFE,0X1F,
+0X83,0XFF,0XFC,0X00,0X01,0X83,0XE1,0XFF,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFE,0X7F,
+0X3F,0XBF,0XFF,0XFF,0XFE,0X1F,0X83,0XFF,0XFF,0XC0,0X01,0X83,0XE1,0XFF,0X00,0X00,
+0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFE,0X1F,0X83,0XFF,0XFF,0XF8,
+0X01,0X83,0XE1,0XFF,0XF8,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
+0XFE,0X1F,0X83,0XFF,0XFF,0XFF,0X01,0X83,0XE1,0XFF,0XF9,0XFE,0X3F,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0X83,0XFF,0XFF,0XFF,0XF1,0X83,0XE1,0XFF,
+0XF9,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0X83,0XFF,
+0XFF,0XFF,0XFF,0X83,0XE1,0XFF,0XF9,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFE,0X1F,0X83,0XFF,0XFF,0XFF,0XFF,0X83,0XE1,0XFF,0XF9,0XFF,0X9F,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0X83,0XFF,0XFF,0XFF,0XFF,0X83,
+0XE1,0XFF,0XFC,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,
+0X83,0XFF,0XFF,0XFF,0XFF,0X83,0XE1,0XFF,0XFC,0X7F,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0X80,0X00,0X00,0X00,0X00,0X03,0XE1,0XFF,0XFE,0X00,
+0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0X80,0X00,0X00,0X00,
+0X00,0X03,0XE1,0XFF,0XFF,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFE,0X1F,0X80,0X00,0X00,0X00,0X00,0X03,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0X80,0X00,0X00,0X00,0X00,0X03,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0X80,0X00,
+0X00,0X00,0X00,0X03,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XE1,0XFF,0XFF,0X07,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFE,0X07,0XBF,0XFF,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFC,0X67,
+0X9F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XE1,0XFF,0XF8,0XE7,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XF9,0XE7,0X9F,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,
+0XF9,0XE7,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XF9,0XE7,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XF9,0XE7,0X1F,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XE1,0XFF,0XFC,0XE7,0X3F,0XFF,0XFF,0XF8,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFC,0X00,0X3F,0XFF,0XFF,0XF0,0X01,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFE,0X00,
+0X7F,0XFF,0XFF,0XC1,0XE0,0X3F,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XE1,0XFF,0XFF,0X81,0XFF,0XFF,0XFF,0X0F,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,
+0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,
+0XFF,0X07,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X38,0X63,0X83,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0X80,0X1F,0XFF,0XFF,0XF8,0X70,0X31,0XC1,0XFF,0XFF,
+0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0X80,0X00,0X1F,0XFF,
+0XF0,0X60,0X30,0XC1,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFC,0X00,0X03,0XFF,0XFF,
+0XE1,0XFF,0XFF,0XFC,0X1F,0XFF,0XE0,0X60,0X30,0X40,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,
+0XFF,0XC0,0X00,0X00,0X7F,0XFF,0XE1,0XFF,0XFF,0XFE,0X1F,0XFF,0XE0,0X60,0X30,0X60,
+0X00,0X00,0X00,0X01,0XFE,0X1F,0XFF,0X00,0X00,0X00,0X1F,0XFF,0XE1,0XFF,0XFF,0XF0,
+0X7F,0XFF,0XC0,0X70,0X30,0X60,0X00,0X00,0X00,0X01,0XFE,0X1F,0XFE,0X00,0X00,0X00,
+0X07,0XFF,0XE1,0XFF,0XFF,0X83,0XFF,0XFF,0XC0,0X30,0X70,0X60,0X00,0X00,0X00,0X01,
+0XFE,0X1F,0XFC,0X00,0X00,0X00,0X03,0XFF,0XE1,0XFF,0XFE,0X1F,0XFF,0XFF,0X80,0X3F,
+0XE0,0X60,0X00,0X00,0X00,0X01,0XFE,0X1F,0XF8,0X00,0X3F,0XFC,0X01,0XFF,0XE1,0XFF,
+0XFE,0X0F,0XFF,0XFF,0X80,0X1F,0XC0,0X00,0X00,0X00,0X00,0X01,0XFE,0X1F,0XF0,0X18,
+0X1F,0XFF,0X80,0XFF,0XE1,0XFF,0XFF,0XC1,0XFF,0XFF,0X80,0X03,0X00,0X00,0X00,0X00,
+0X00,0X01,0XFE,0X1F,0XE0,0X7C,0X0F,0XFF,0XE0,0XFF,0XE1,0XFF,0XFF,0XF8,0X3F,0XFF,
+0X80,0X00,0X00,0X00,0X1F,0XFF,0XF0,0X01,0XFE,0X1F,0XE0,0XFE,0X07,0XFF,0XF0,0X7F,
+0XE1,0XFF,0XFF,0XFF,0X1F,0XFF,0X80,0X00,0X00,0X00,0X1F,0XFF,0XE0,0X01,0XFE,0X1F,
+0XE1,0XFF,0X07,0XFF,0XF8,0X7F,0XE1,0XFF,0XE0,0X00,0X1F,0XFF,0X80,0X00,0X00,0X00,
+0X1F,0XFF,0XC0,0X01,0XFE,0X1F,0XC1,0XFF,0X03,0XFF,0XF8,0X7F,0XE1,0XFF,0X80,0X00,
+0X1F,0XFF,0X80,0X07,0XFC,0X00,0X1F,0XFF,0X80,0X01,0XFE,0X1F,0XC3,0XFF,0X81,0XFF,
+0XFC,0X3F,0XE1,0XFF,0X83,0XFF,0XFF,0XFF,0X80,0X1F,0XFF,0X00,0X1F,0XFF,0X00,0X01,
+0XFE,0X1F,0XC3,0XFF,0XC0,0XFF,0XFC,0X3F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X3C,
+0X67,0X80,0X1F,0XFE,0X00,0X81,0XFE,0X1F,0XC3,0XFF,0XE0,0XFF,0XFC,0X3F,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0X80,0X30,0X21,0XC0,0X1F,0XFC,0X01,0X81,0XFE,0X1F,0XC3,0XFF,
+0XE0,0X7F,0XFC,0X3F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X60,0X30,0XC0,0X3F,0XF8,
+0X03,0X81,0XFE,0X1F,0XC3,0XFF,0XF0,0X3F,0XFC,0X3F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XC0,0X60,0X30,0XC0,0X7F,0XF0,0X0F,0X81,0XFE,0X1F,0XE1,0XFF,0XF8,0X3F,0XF8,0X3F,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X60,0X30,0X60,0X7F,0XE0,0X1F,0X81,0XFE,0X1F,
+0XE1,0XFF,0XFC,0X1F,0XF8,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X60,0X30,0X60,
+0XFF,0XC0,0X3F,0X81,0XFE,0X1F,0XE0,0XFF,0XFC,0X0F,0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XE0,0X30,0X70,0X60,0XFF,0X80,0X7F,0X81,0XFE,0X1F,0XF0,0X7F,0XFE,0X07,
+0XC0,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X38,0XE0,0X61,0XFE,0X00,0XFF,0X81,
+0XFE,0X1F,0XF0,0X1F,0XFF,0X07,0X80,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,
+0XE0,0X61,0XFC,0X01,0XFF,0X81,0XFE,0X1F,0XF8,0X03,0XFF,0X00,0X01,0XFF,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X0F,0X80,0X00,0XF8,0X03,0XFF,0X81,0XFE,0X1F,0XFC,0X00,
+0X00,0X00,0X01,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X70,0X07,
+0XFF,0X81,0XFE,0X1F,0XFE,0X00,0X00,0X00,0X07,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0X00,0X00,0X00,0X20,0X0F,0XFF,0X81,0XFE,0X1F,0XFF,0X80,0X00,0X00,0X0F,0XFF,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X60,0X00,0X1F,0XFF,0X81,0XFE,0X1F,
+0XFF,0XE0,0X00,0X00,0X3F,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X01,0XF0,
+0X00,0X3F,0XFF,0X81,0XFE,0X1F,0XFF,0XFC,0X00,0X03,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0X81,0XFF,0XF8,0X00,0XFF,0XFF,0X81,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0XFF,0XFC,0X01,0XFF,0XFF,0X81,
+0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,
+0XFF,0XFE,0X01,0XFF,0XFF,0X81,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0XFF,0XFE,0X01,0XFF,0XFF,0X81,0XFE,0X1F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XC0,0XFF,0XFF,0XFF,0X81,0XFF,0XFF,0X00,0XFF,
+0XFF,0X81,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0X9F,0X80,0X3F,0XFF,
+0XFF,0X81,0XFF,0XFF,0X80,0X7F,0XFF,0X81,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XE1,0XFF,0X9F,0X9E,0X3F,0XFF,0XFF,0X81,0XFF,0XFF,0XC0,0X3F,0XFF,0X81,0XFE,0X1F,
+0XFF,0XFC,0X00,0X03,0XFF,0XFF,0XE1,0XFF,0X9F,0X3F,0X1F,0XFF,0XFF,0X81,0XFF,0XFF,
+0XE0,0X1F,0XFF,0X81,0XFE,0X1F,0XFF,0XC0,0X00,0X00,0X7F,0XFF,0XE1,0XFF,0X9F,0X3F,
+0X9F,0XFF,0XFF,0X81,0XFF,0XFF,0XF0,0X0F,0XFF,0X81,0XFE,0X1F,0XFF,0X00,0X00,0X00,
+0X1F,0XFF,0XE1,0XFF,0X9F,0X3F,0X9F,0XFF,0XFF,0X81,0XFF,0XFF,0XF8,0X0F,0XFF,0X81,
+0XFE,0X1F,0XFE,0X00,0X00,0X00,0X07,0XFF,0XE1,0XFF,0XCF,0X3F,0X9F,0XFF,0XFF,0X81,
+0XFF,0XFF,0XFC,0X07,0XFF,0X81,0XFE,0X1F,0XFC,0X00,0X00,0X00,0X03,0XFF,0XE1,0XFF,
+0XCF,0X3F,0X9F,0XFF,0XFF,0X81,0XFF,0XFF,0XFE,0X03,0XFF,0X81,0XFE,0X1F,0XF8,0X00,
+0X3F,0XFC,0X01,0XFF,0XE1,0XFF,0XE3,0X9F,0X3F,0XFF,0XFF,0X81,0XFF,0XFF,0XFE,0X03,
+0XFF,0X81,0XFE,0X1F,0XF0,0X18,0X1F,0XFF,0X80,0XFF,0XE1,0XFF,0XF0,0X00,0X3F,0XFF,
+0XFF,0X81,0XFF,0XFF,0XFC,0X03,0XFF,0X81,0XFE,0X1F,0XE0,0X7C,0X0F,0XFF,0XE0,0XFF,
+0XE1,0XFF,0XF8,0X00,0X7F,0XFF,0XFF,0X81,0XFF,0XFF,0XF8,0X07,0XFF,0X81,0XFE,0X1F,
+0XE0,0XFE,0X07,0XFF,0XF0,0X7F,0XE1,0XFF,0XFF,0X03,0XFF,0XFF,0XFF,0X81,0XFF,0XFF,
+0XF0,0X0F,0XFF,0X81,0XFE,0X1F,0XE1,0XFF,0X07,0XFF,0XF8,0X7F,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0X81,0XFF,0XFF,0XE0,0X1F,0XFF,0X81,0XFE,0X1F,0XC1,0XFF,0X03,0XFF,
+0XF8,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0XFF,0XFF,0XC0,0X3F,0XFF,0X81,
+0XFE,0X1F,0XC3,0XFF,0X81,0XFF,0XFC,0X3F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,
+0XFF,0XFF,0XC0,0X7F,0XFF,0X81,0XFE,0X1F,0XC3,0XFF,0XC0,0XFF,0XFC,0X3F,0XE1,0XFF,
+0XFF,0XFF,0X9F,0XFF,0XFF,0X81,0XFF,0XFF,0X80,0XFF,0XFF,0X81,0XFE,0X1F,0XC3,0XFF,
+0XE0,0XFF,0XFC,0X3F,0XE1,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0X81,0XFF,0XFF,0X01,0XFF,
+0XFF,0X81,0XFE,0X1F,0XC3,0XFF,0XE0,0X7F,0XFC,0X3F,0XE1,0XFF,0XFF,0XFF,0X9F,0XFF,
+0XFF,0X81,0XFF,0XFE,0X01,0XFF,0XFF,0X81,0XFE,0X1F,0XC3,0XFF,0XF0,0X3F,0XFC,0X3F,
+0XE1,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0X81,0XFF,0XFC,0X01,0XFF,0XFF,0X81,0XFE,0X1F,
+0XE1,0XFF,0XF8,0X3F,0XF8,0X3F,0XE1,0XFF,0X80,0X00,0X1F,0XFF,0XFF,0X81,0XFF,0XF8,
+0X00,0XFF,0XFF,0X81,0XFE,0X1F,0XE1,0XFF,0XFC,0X1F,0XF8,0X7F,0XE1,0XFF,0X80,0X00,
+0X1F,0XFF,0XFF,0X81,0XFF,0XF0,0X00,0X7F,0XFF,0X81,0XFE,0X1F,0XE0,0XFF,0XFC,0X0F,
+0XF0,0X7F,0XE1,0XFF,0X80,0X00,0X1F,0XFF,0XFF,0X81,0XFF,0XE0,0X00,0X3F,0XFF,0X81,
+0XFE,0X1F,0XF0,0X7F,0XFE,0X07,0XC0,0X7F,0XE1,0XFF,0XDF,0XFF,0X9F,0XFF,0XFF,0X81,
+0XFF,0XE0,0X00,0X1F,0XFF,0X81,0XFE,0X1F,0XF0,0X1F,0XFF,0X07,0X80,0XFF,0XE1,0XFF,
+0XCF,0XFF,0X9F,0XFF,0XFF,0X81,0XFF,0XC0,0X70,0X0F,0XFF,0X81,0XFE,0X1F,0XF8,0X03,
+0XFF,0X00,0X01,0XFF,0XE1,0XFF,0XE7,0XFF,0X9F,0XFF,0XFF,0X81,0XFF,0X80,0XF8,0X07,
+0XFF,0X81,0XFE,0X1F,0XFC,0X00,0X00,0X00,0X01,0XFF,0XE1,0XFF,0XE7,0XFF,0X9F,0XFF,
+0XFF,0X81,0XFF,0X01,0XFC,0X01,0XFF,0X81,0XFE,0X1F,0XFE,0X00,0X00,0X00,0X07,0XFF,
+0XE1,0XFF,0XF7,0XFF,0X9F,0XFF,0XFF,0X81,0XFE,0X01,0XFE,0X00,0XFF,0X81,0XFE,0X1F,
+0XFF,0X80,0X00,0X00,0X0F,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0XFC,0X03,
+0XFF,0X00,0X7F,0X81,0XFE,0X1F,0XFF,0XE0,0X00,0X00,0X3F,0XFF,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0X81,0XF8,0X07,0XFF,0X80,0X3F,0X81,0XFE,0X1F,0XFF,0XFC,0X00,0X03,
+0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0XF0,0X0F,0XFF,0XC0,0X1F,0X81,
+0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,
+0XE0,0X1F,0XFF,0XE0,0X0F,0X81,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0XE0,0X3F,0XFF,0XF0,0X07,0X81,0XFE,0X1F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0XC0,0X7F,0XFF,0XFC,
+0X03,0X81,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0X81,0X80,0XFF,0XFF,0XFE,0X01,0X81,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0X00,0XFF,0XFF,0XFF,0X00,0X81,0XFE,0X1F,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X01,0XFF,
+0XFF,0XFF,0X80,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0X80,0X03,0XFF,0XFF,0XFF,0XC0,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X07,0XFF,0XFF,0XFF,0XE0,0X01,
+0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,
+0X0F,0XFF,0XFF,0XFF,0XF0,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X0F,0XFF,0XFF,0XFF,0XF0,0X01,0XFE,0X1F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,
+0X00,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X1F,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,
+0X00,0X00,0X00,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X1F,0XFF,0XFC,0X7F,0XFF,
+0XF1,0XFF,0XE1,0XFF,0XF9,0XFF,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFE,0X1F,0XFF,0XF0,0X1F,0XFF,0XC0,0X7F,0XE1,0XFF,0XF9,0XFF,0XC3,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XF0,0X1F,0XFF,0XC0,0X7F,0XE1,0XFF,
+0XF8,0X0F,0X81,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XE0,
+0X0F,0XFF,0X80,0X3F,0XE1,0XFF,0XF8,0X07,0X99,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFE,0X1F,0XFF,0XE0,0X0F,0XFF,0X80,0X3F,0XE1,0XFF,0XF8,0XE7,0X9C,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XE0,0X0F,0XFF,0X80,0X3F,
+0XE1,0XFF,0XF9,0XF3,0X9C,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,
+0XFF,0XF0,0X1F,0XFF,0XC0,0X7F,0XE1,0XFF,0XF9,0XF3,0X9C,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XF0,0X1F,0XFF,0XC0,0X7F,0XE1,0XFF,0XF9,0XF3,
+0X9C,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFC,0X7F,0XFF,
+0XF1,0XFF,0XE1,0XFF,0XF9,0XF3,0X9C,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFC,0XE7,0X9C,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,
+0XFC,0X00,0X09,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFE,0X08,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFC,0X61,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XF8,0X00,0X1F,0XFF,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,
+0XF8,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFE,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0X3F,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XE1,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,
+0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFC,0X00,0X03,
+0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFE,0X1F,0XFF,0XC0,0X00,0X00,0X7F,0XFF,0XE1,0XFF,0XFF,0XFC,0X1F,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0X00,0X00,0X00,0X1F,0XFF,0XE1,0XFF,
+0XF8,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFE,0X00,
+0X00,0X00,0X07,0XFF,0XE1,0XFF,0XF8,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFE,0X1F,0XFC,0X00,0X00,0X00,0X03,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X01,0XFE,0X1F,0XF8,0X00,0X3F,0XFC,0X01,0XFF,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X01,0XFE,0X1F,
+0XF0,0X18,0X1F,0XFF,0X80,0XFF,0XE1,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFE,0X00,
+0X00,0X00,0X00,0X01,0XFE,0X1F,0XE0,0X7C,0X0F,0XFF,0XE0,0XFF,0XE1,0XFF,0XFF,0XFE,
+0X1F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X01,0XFE,0X1F,0XE0,0XFE,0X07,0XFF,
+0XF0,0X7F,0XE1,0XFF,0XFF,0XF0,0X1F,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X01,
+0XFE,0X1F,0XE1,0XFF,0X07,0XFF,0XF8,0X7F,0XE1,0XFF,0XFF,0X80,0X7F,0XFF,0XFF,0XFF,
+0XC0,0X00,0X00,0X80,0X00,0X01,0XFE,0X1F,0XC1,0XFF,0X03,0XFF,0XF8,0X7F,0XE1,0XFF,
+0XFC,0X01,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X03,0XE0,0X00,0X01,0XFE,0X1F,0XC3,0XFF,
+0X81,0XFF,0XFC,0X3F,0XE1,0XFF,0XE0,0X39,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X0F,0XF8,
+0X00,0X01,0XFE,0X1F,0XC3,0XFF,0XC0,0XFF,0XFC,0X3F,0XE1,0XFF,0X81,0XF9,0XFF,0XFF,
+0XFF,0XFE,0X00,0X00,0X3F,0XFE,0X00,0X01,0XFE,0X1F,0XC3,0XFF,0XE0,0XFF,0XFC,0X3F,
+0XE1,0XFF,0X8F,0XF9,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0XFF,0XFF,0XE0,0X01,0XFE,0X1F,
+0XC3,0XFF,0XE0,0X7F,0XFC,0X3F,0XE1,0XFF,0X87,0XF9,0XFF,0XFF,0XFF,0XF8,0X00,0X03,
+0XFC,0X0F,0XF0,0X01,0XFE,0X1F,0XC3,0XFF,0XF0,0X3F,0XFC,0X3F,0XE1,0XFF,0X80,0XF9,
+0XFF,0XFF,0XFF,0XF0,0X00,0X0F,0XF0,0X03,0XF0,0X01,0XFE,0X1F,0XE1,0XFF,0XF8,0X3F,
+0XF8,0X3F,0XE1,0XFF,0XF0,0X19,0XFF,0XFF,0XFF,0XF0,0X00,0X1F,0XF0,0X00,0XF8,0X01,
+0XFE,0X1F,0XE1,0XFF,0XFC,0X1F,0XF8,0X7F,0XE1,0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XE0,
+0X00,0X1F,0XF0,0X00,0XFC,0X01,0XFE,0X1F,0XE0,0XFF,0XFC,0X0F,0XF0,0X7F,0XE1,0XFF,
+0XFF,0XC0,0X3F,0XFF,0XFF,0XE0,0X00,0X0F,0XF8,0X00,0X00,0X01,0XFE,0X1F,0XF0,0X7F,
+0XFE,0X07,0XC0,0X7F,0XE1,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XC0,0X00,0X03,0XFE,0X00,
+0X00,0X01,0XFE,0X1F,0XF0,0X1F,0XFF,0X07,0X80,0XFF,0XE1,0XFF,0XFF,0XFF,0X9F,0XFF,
+0XFF,0XC0,0X00,0X00,0XFF,0X80,0X00,0X01,0XFE,0X1F,0XF8,0X03,0XFF,0X00,0X01,0XFF,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X3F,0XE0,0X00,0X01,0XFE,0X1F,
+0XFC,0X00,0X00,0X00,0X01,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,
+0X07,0XFC,0X00,0X01,0XFE,0X1F,0XFE,0X00,0X00,0X00,0X07,0XFF,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0X80,0X00,0X00,0X03,0XFC,0X00,0X01,0XFE,0X1F,0XFF,0X80,0X00,0X00,
+0X0F,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X1F,0XC0,0X03,0XFC,0X00,0X01,
+0XFE,0X1F,0XFF,0XE0,0X00,0X00,0X3F,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
+0X0F,0XC0,0X03,0XFC,0X00,0X01,0XFE,0X1F,0XFF,0XFC,0X00,0X03,0XFF,0XFF,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X07,0XF8,0X1F,0XF0,0X00,0X01,0XFE,0X1F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X03,0XFE,0X3F,0X00,
+0X00,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0X00,0X01,0XFF,0XFE,0X00,0X00,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFE,0X00,0X00,0X01,0XFE,0X1F,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X03,
+0XFE,0X00,0X00,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0X00,0X00,0X00,0XFF,0X80,0X00,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X3F,0XE0,0X00,0X01,
+0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
+0X00,0X00,0X1F,0XFC,0X00,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X1F,0XFC,0X00,0X01,0XFE,0X1F,0XFF,0XFF,
+0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X1F,0XFC,
+0X00,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0X00,0X00,0X00,0XFF,0XE0,0X00,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XF0,0X7F,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X07,0XFF,0X00,0X00,0X01,0XFE,0X1F,
+0XFF,0XFF,0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X1F,
+0XFC,0X00,0X00,0X01,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XF0,0X00,0X00,0X03,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,
+0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XF0,0X00,0X00,0X03,
+0XFE,0X1F,0XE0,0X00,0X00,0X00,0X00,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
+0X00,0X0F,0XF0,0X00,0X00,0X03,0XFE,0X1F,0XE0,0X00,0X00,0X00,0X00,0X7F,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X01,0XFE,0X00,0X00,0X07,0XFE,0X1F,0XE0,0X00,
+0X00,0X00,0X00,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X3F,0XC0,
+0X00,0X07,0XFE,0X1F,0XE0,0X00,0X00,0X00,0X00,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0X00,0X00,0X00,0X3F,0XF8,0X00,0X0F,0XFE,0X1F,0XE0,0X00,0X00,0X00,0X00,0X7F,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X3F,0XFC,0X00,0X0F,0XFE,0X1F,
+0XE0,0X00,0X00,0X00,0X00,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,
+0X7F,0XFC,0X00,0X1F,0XFE,0X1F,0XF0,0XFF,0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0X00,0X00,0X03,0XFF,0XF8,0X00,0X3F,0XFE,0X1F,0XF8,0X7F,0XFF,0XFF,
+0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X0F,0XFF,0XC0,0X00,0X3F,
+0XFE,0X1F,0XF8,0X3F,0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
+0X00,0X1F,0XFE,0X00,0X00,0X7F,0XFE,0X1F,0XFC,0X3F,0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XF0,0X00,0X00,0XFF,0XFE,0X1F,0XFC,0X1F,
+0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X1F,0X80,0X00,
+0X01,0XFF,0XFE,0X1F,0XFE,0X0F,0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0X00,0X00,0X1C,0X00,0X00,0X03,0XFF,0XFE,0X1F,0XFE,0X0F,0XFF,0XFF,0XF0,0X7F,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XFE,0X1F,
+0XFF,0X07,0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,
+0X00,0X00,0X1F,0XFF,0XFE,0X1F,0XFF,0X83,0XFF,0XFF,0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFE,0X1F,0XFF,0X87,0XFF,0XFF,
+0XF0,0X7F,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,
+0XFE,0X1F,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
+0X00,0X00,0X00,0X03,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
+};
+
+
+const unsigned char IMAGE_DATA_4Gray[11616] PROGMEM = { /* 0X00,0X02,0XB0,0X00,0X08,0X01, */
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X55,0X55,0X55,
+0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X55,0X55,0X55,0X55,0X55,0X55,0X55,
+0X55,0X55,0X55,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X55,0X55,0X55,
+0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,
+0X03,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XA8,0X00,0X3F,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XC0,0X0A,0XAA,0X80,0X0F,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X2A,0XAA,
+0XA8,0X03,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XAA,0XAA,0XAA,0X03,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XF5,0X55,0X55,0X55,0X55,0X57,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0X00,0X02,0XAA,0XAA,0XAA,0X03,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,
+0X00,0X02,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,
+0X55,0X55,0X55,0X55,0X55,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X0A,0XAA,0XAA,
+0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,0X55,0X55,0X55,0X55,
+0X55,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X2A,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X57,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFC,0X00,0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0X55,0X57,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X0A,
+0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,
+0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X2A,0XAA,0XAA,0XAA,0XAA,
+0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,0X55,0X7F,0XFF,0XFF,
+0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X2A,0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFD,0X55,0X55,0X55,0X7F,0XFF,0XFF,0XFF,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XC0,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0XFF,0XFD,0X55,0X55,0X55,0XFF,0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,
+0XFD,0X55,0X55,0X5F,0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFF,0XFD,0X55,0X5F,
+0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFD,0X55,0X55,0X5F,0XFF,0XFF,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XC0,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0XFF,0XFD,0X55,0X55,0X55,0X5F,0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFD,0X55,
+0X55,0X55,0X57,0XFF,0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X2A,0XAA,0XAA,0XAA,0XAA,
+0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,0X55,0X57,0XFF,0XFF,
+0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X2A,0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,0X57,0XFF,0XFF,0XFF,0XFF,0XFF,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XF0,0X0A,0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0X55,0X55,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XC3,0XF0,0X02,
+0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,
+0X55,0X55,0X55,0X55,0X57,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XFC,0X00,0XAA,0XAA,0XAA,0XAA,
+0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,0X55,0X55,0X55,0X55,
+0X55,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X3F,0X00,0X02,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X57,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X0F,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0F,0XFC,
+0X02,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,
+0XF5,0X55,0X55,0X55,0X55,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XCF,0XFC,0X02,0XAA,0XAA,0XAA,
+0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0X0F,0XFF,0XCF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0X00,0XFF,0X03,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XC0,0X0C,0X00,0XFC,
+0X02,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0X55,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X03,0XFC,0X02,0XAA,0XAA,0XAA,
+0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0X55,
+0X55,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X0F,0XFF,0X00,0XAA,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XD5,0X55,0X55,0X57,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XF0,0X0F,0XFF,0X00,0X2A,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0XFF,0XFF,0XFF,0XD5,0X55,0X55,0X55,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X3F,0XFF,
+0XC0,0X02,0XAA,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,
+0XF5,0X55,0X55,0X55,0X55,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X3F,0XFF,0XF0,0X00,0X00,0XAA,
+0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XF5,0X55,0X55,0X55,0X55,
+0X55,0X7F,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X3F,0XFF,0XFC,0X00,0X02,0XAA,0XAA,0X00,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFD,0X55,0X55,0X55,0X55,0X55,0X7F,0XFF,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XF0,
+0X00,0X00,0X3F,0XFF,0XFF,0XF0,0X02,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0X55,0X55,0X55,0X55,0X55,0X55,0X7F,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XA8,0X0A,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X3F,0XFF,
+0XFF,0XFC,0X02,0XAA,0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,
+0X55,0X55,0X7F,0X55,0X7F,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XA0,
+0X02,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X0F,0XFF,0XFF,0XFC,0X02,0XAA,
+0XAA,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,0X55,0X7F,0XFF,0X55,
+0X7F,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XA0,0X02,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X03,0XFF,0XFF,0XFF,0X02,0XAA,0XAA,0X03,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,0X7F,0XFF,0XFF,0X55,0X7F,0XFF,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XA8,0X0A,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XC0,0X00,0XFF,0XFF,0XFF,0X00,0XAA,0XA8,0X03,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0X55,0X7F,0XFF,0XFF,0XFF,0X55,0X7F,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X03,
+0X00,0XFF,0XC0,0X0A,0XA0,0X03,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,
+0X7F,0XFF,0XFF,0X55,0X7F,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XF0,0X0F,0XC0,0X00,0X00,0X3F,0XC0,0X00,
+0X00,0X0F,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,0X55,0XFF,0XFF,0X55,
+0X7F,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XC0,0XFF,0XF0,0X00,0X00,0X0F,0XF0,0X00,0X00,0X3F,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0X55,0X55,0X55,0X55,0XFF,0X55,0X7F,0XFF,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XC3,0XFF,0XF0,0X00,0X03,0XC3,0XFF,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0XD5,0X55,0X55,0X55,0X57,0X55,0X7F,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC3,0XFC,
+0X3F,0XF0,0XFF,0XF0,0X3F,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0X55,
+0X55,0X55,0X55,0X55,0X7F,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC3,0XFF,0X3F,0XF0,0X3F,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFD,0X55,0X55,0X55,0X55,
+0X5F,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0F,0XFF,0X3F,0XFC,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFD,0X55,0X55,0X55,0X55,0X5F,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0X0F,0XFF,0X3F,0XFF,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0XFF,0XFF,0XFF,0XF5,0X55,0X55,0X55,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0X00,0X00,0X00,0X00,0X02,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,
+0X0F,0XFF,0XCF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,
+0XFF,0XFF,0XF5,0X55,0X55,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0X00,0X00,0X00,0X00,
+0X02,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0F,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XD5,
+0X55,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0X80,0XAA,0XA0,0X2A,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X55,0X57,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0X82,0XAA,0XA8,0X0A,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X57,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0X82,0XAA,0XAA,0X0A,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0X82,0XAA,0XAA,
+0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0X82,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XD5,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XA0,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XD5,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XA0,0X2A,0XAA,0X02,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X55,0X55,0X55,
+0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XA8,0X00,0X00,
+0X0A,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X55,0X55,0X55,0X55,0X55,0X55,0X55,
+0X55,0X55,0X55,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0X00,0X00,0X2A,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XD5,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X5F,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XD5,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X5F,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XD5,0X55,0X55,0X55,
+0X55,0X55,0X55,0X55,0X55,0X55,0X55,0X5F,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0X00,0X2A,0XAA,0XAA,0XAA,0XAA,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XA8,0X00,0X2A,0X8A,0XAA,0XAA,0XAA,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XA0,0X28,0X2A,
+0X82,0XAA,0XAA,0XAA,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0X80,0XA8,0X2A,0X82,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0X82,0XA8,0X2A,0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0X82,0XA8,0X2A,0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0X82,0XA8,0X2A,
+0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0X82,0XA8,0X2A,0X02,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XA0,0XA8,0X2A,0X0A,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XC0,
+0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XA0,0X00,0X00,0X0A,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0X00,0X00,0X03,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XA8,0X00,0X00,
+0X2A,0XAA,0XAA,0XAA,0XFF,0XFF,0XF0,0X03,0XFC,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0X80,0X02,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0X00,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFC,0X0F,0XFF,
+0XFF,0XFF,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XF0,0X0F,0XC0,0X3C,0X0F,0XC0,0X0F,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0X80,0X00,0X02,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XC0,0X3F,0X00,0X0F,0X03,0XF0,0X03,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0X80,0X00,0X00,0X00,0X02,0XAA,0XAA,0XAA,
+0XFF,0X00,0X3C,0X00,0X0F,0X00,0XF0,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XA0,0X02,0XAA,0XAA,0XAA,0XFC,0X00,0X3C,0X00,
+0X0F,0X00,0X30,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XA8,0X02,0XAA,0XAA,0XAA,0XFC,0X00,0X3C,0X00,0X0F,0X00,0X3C,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0X00,0X00,
+0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0X00,
+0X2A,0XAA,0XAA,0XAA,0XF0,0X00,0X3F,0X00,0X0F,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X3F,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0X80,0X0A,0XAA,0XAA,0XAA,0XAA,
+0XF0,0X00,0X0F,0X00,0X3F,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XA8,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XC0,0X00,0X0F,0XFF,
+0XFC,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XC0,0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X03,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XA8,0X00,0XAA,0XAA,0XAA,0XAA,0XAA,0XC0,0X00,0X03,0XFF,0XF0,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0X00,0X03,0XC0,
+0X03,0XFF,0XFF,0XFF,0XC0,0X00,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XA0,0X02,
+0XAA,0XAA,0XAA,0XAA,0XC0,0X00,0X00,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFC,0X00,0X3F,0XF0,0X00,0XFF,0XFF,0XFF,
+0XFC,0X00,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0X80,0X0A,0XAA,0XAA,0XAA,
+0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X02,0XAA,0XAA,0XAA,0XAA,0X00,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XFC,0X00,0XFF,0XFC,0X00,0X3F,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0X02,0XAA,0XAA,0XAA,0XC0,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X02,0XAA,0XAA,0XAA,0XA8,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,
+0XFC,0X03,0XFF,0XFF,0X00,0X3F,0XFF,0XFF,0XFF,0XC0,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XA8,0X00,0X00,0X00,0X02,0XAA,0XAA,0XAA,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X02,0XAA,0XAA,0XAA,0XA0,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XF0,0X03,0XFF,0XFF,
+0X00,0X0F,0XFF,0XFF,0XFF,0XC0,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0X80,0X00,0X00,0X00,
+0X02,0XAA,0XAA,0XAA,0XC0,0X00,0X00,0X3F,0XFF,0XF0,0X00,0X00,0X02,0XAA,0XAA,0XAA,
+0X80,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XF0,0X0F,0XFF,0XFF,0XC0,0X03,0XFF,0XFF,
+0XFF,0XF0,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,0X80,0X0A,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XC0,0X00,0X03,0XFF,0XFF,0XFF,0X00,0X00,0X02,0XAA,0XAA,0XAA,0X00,0X00,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XF0,0X0F,0XFF,0XFF,0XF0,0X00,0XFF,0XFF,0XFF,0XF0,0X0F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XC0,0X00,0X0F,0XF0,
+0X3C,0X3F,0XC0,0X00,0X02,0XAA,0XAA,0XA8,0X00,0X00,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XF0,0X0F,0XFF,0XFF,0XFC,0X00,0XFF,0XFF,0XFF,0XF0,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XC0,0X00,0X0F,0X00,0X0C,0X03,0XF0,0X00,
+0X02,0XAA,0XAA,0XA0,0X00,0X02,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XF0,0X0F,0XFF,0XFF,
+0XFC,0X00,0X3F,0XFF,0XFF,0XF0,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XF0,0X00,0X3C,0X00,0X0F,0X00,0XF0,0X00,0X0A,0XAA,0XAA,0X80,
+0X00,0X0A,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XF0,0X0F,0XFF,0XFF,0XFF,0X00,0X0F,0XFF,
+0XFF,0XF0,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XF0,0X00,0X3C,0X00,0X0F,0X00,0XF0,0X00,0X2A,0XAA,0XAA,0X00,0X00,0XAA,0X80,0X03,
+0XFF,0XFC,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XC0,0X0F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XF0,0X00,0X3C,0X00,
+0X0F,0X00,0X3C,0X00,0X2A,0XAA,0XA8,0X00,0X02,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XFC,0X03,0XFF,0XFF,0XFF,0XF0,0X03,0XFF,0XFF,0XC0,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFC,0X00,0X3C,0X00,0X0F,0X00,0X3C,0X00,
+0XAA,0XAA,0XA0,0X00,0X0A,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFC,0X00,0XFF,0XFF,
+0XFF,0XF0,0X00,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFC,0X00,0X0F,0X00,0X3F,0X00,0X3C,0X00,0XAA,0XAA,0X80,0X00,
+0X2A,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0X00,0X3F,0XFF,0XFF,0XFC,0X00,0X3F,
+0XF0,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0X00,0X0F,0XC0,0XFC,0X00,0X3C,0X02,0XAA,0XA8,0X00,0X00,0XAA,0XAA,0X80,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0X00,0X03,0XFF,0XFF,0XFF,0X00,0X3F,0XC0,0X00,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XC0,0X03,0XFF,
+0XFC,0X00,0X3C,0X02,0XAA,0XA0,0X00,0X02,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XC0,0X00,0X0F,0XFF,0XFF,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XF0,0X00,0XFF,0XC0,0X00,0X00,0X00,
+0XAA,0X80,0X00,0X0A,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XF0,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X2A,0X00,0X00,0X2A,
+0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X3F,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X08,0X00,0X00,0XAA,0XAA,0XAA,0X80,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X00,
+0X00,0X00,0X28,0X00,0X00,0X00,0X02,0XAA,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X00,0X00,0X02,0XAA,0X00,
+0X00,0X00,0X0A,0XAA,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XF0,
+0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0X80,0X00,0X00,0XAA,0XAA,
+0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XA0,0X00,0X02,0XAA,0XAA,0XAA,0XAA,0X80,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,
+0XAA,0XAA,0XAA,0XA8,0X00,0X02,0XAA,0XAA,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XA8,
+0X00,0X02,0XAA,0XAA,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XA0,0X00,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,0X00,0X00,0XAA,0XAA,
+0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0X82,0XAA,0X80,0X00,0X0A,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,0X80,0X00,0X2A,0XAA,0XAA,0XAA,0X80,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0X82,0XAA,0X82,0XA8,0X0A,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,
+0XAA,0XAA,0XAA,0XAA,0XA0,0X00,0X0A,0XAA,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0X82,0XAA,0X0A,0XAA,0X02,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,
+0XA8,0X00,0X02,0XAA,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XF0,0X00,
+0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0X82,0XAA,0X0A,0XAA,
+0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0X00,0XAA,
+0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,
+0X03,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0X82,0XAA,0X0A,0XAA,0X82,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0X80,0X00,0XAA,0XAA,0XAA,0X80,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XA0,0XAA,0X0A,0XAA,0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XA0,0X00,0X2A,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XA0,0XAA,0X0A,0XAA,0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XA8,0X00,0X0A,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XC0,0X00,0X00,
+0X0F,0XFF,0XFF,0XF0,0X00,0X03,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XA8,0X0A,0X82,0XAA,
+0X0A,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XA8,0X00,0X0A,
+0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0X00,0X03,0XC0,0X03,0XFF,0XFF,0XFF,
+0XC0,0X00,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0X00,0X00,0X00,0X0A,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XA0,0X00,0X0A,0XAA,0XAA,0X80,0X03,
+0XFF,0XFC,0X03,0XFF,0XFC,0X00,0X3F,0XF0,0X00,0XFF,0XFF,0XFF,0XFC,0X00,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0X80,0X00,0X00,0X2A,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,
+0XAA,0XAA,0XAA,0XAA,0XAA,0X80,0X00,0X2A,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XFC,0X00,0XFF,0XFC,0X00,0X3F,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0X00,0X0A,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,
+0XAA,0X00,0X00,0XAA,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFC,0X03,0XFF,0XFF,
+0X00,0X3F,0XFF,0XFF,0XFF,0XC0,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,0XA8,0X00,0X02,0XAA,
+0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XF0,0X03,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,
+0XFF,0XC0,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,0XA0,0X00,0X0A,0XAA,0XAA,0XAA,0X80,0X03,
+0XFF,0XFC,0X03,0XFF,0XF0,0X0F,0XFF,0XFF,0XC0,0X03,0XFF,0XFF,0XFF,0XF0,0X0F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,
+0XAA,0XAA,0XAA,0XAA,0XA0,0X00,0X2A,0XAA,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XF0,0X0F,0XFF,0XFF,0XF0,0X00,0XFF,0XFF,0XFF,0XF0,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,
+0X80,0X00,0XAA,0XAA,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XF0,0X0F,0XFF,0XFF,
+0XFC,0X00,0XFF,0XFF,0XFF,0XF0,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XAA,0X00,0X02,0XAA,0XAA,
+0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XF0,0X0F,0XFF,0XFF,0XFC,0X00,0X3F,0XFF,
+0XFF,0XF0,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0XA8,0X00,0X02,0XAA,0XAA,0XAA,0XAA,0X80,0X03,
+0XFF,0XFC,0X03,0XFF,0XF0,0X0F,0XFF,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XF0,0X0F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,
+0XAA,0XAA,0XAA,0XA0,0X00,0X02,0XAA,0XAA,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XFC,0X03,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XC0,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,
+0X80,0X00,0X00,0X00,0X02,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0X80,
+0X00,0X00,0XAA,0XAA,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFC,0X03,0XFF,0XFF,
+0XFF,0XF0,0X03,0XFF,0XFF,0XC0,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0X80,0X00,0X00,0X00,
+0X02,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XAA,0X00,0X00,0X00,0X2A,0XAA,
+0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFC,0X00,0XFF,0XFF,0XFF,0XF0,0X00,0XFF,
+0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0X80,0X00,0X00,0X00,0X02,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XA8,0X00,0X00,0X00,0X0A,0XAA,0XAA,0XAA,0X80,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0X00,0X3F,0XFF,0XFF,0XFC,0X00,0X3F,0XF0,0X00,0X3F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XA2,0XAA,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,
+0XAA,0XAA,0XA8,0X00,0X00,0X00,0X02,0XAA,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0X00,0X03,0XFF,0XFF,0XFF,0X00,0X3F,0XC0,0X00,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XA0,0XAA,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0XA0,0X00,
+0X2A,0X00,0X00,0XAA,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XC0,0X00,0X0F,
+0XFF,0XFF,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XA8,0X2A,0XAA,0XAA,
+0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0X80,0X00,0XAA,0X80,0X00,0X2A,
+0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X03,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XA8,0X2A,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XC0,0X02,0XAA,0XAA,0X00,0X02,0XAA,0XA0,0X00,0X02,0XAA,0XAA,0X80,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0X2A,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,
+0XAA,0XA8,0X00,0X02,0XAA,0XA8,0X00,0X00,0XAA,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0XA0,0X00,0X0A,
+0XAA,0XAA,0X00,0X00,0X2A,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFC,0X00,
+0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XAA,0X80,0X00,0X2A,0XAA,0XAA,0X80,0X00,
+0X0A,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X0F,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XC0,0X02,0XAA,0X00,0X00,0XAA,0XAA,0XAA,0XA0,0X00,0X02,0XAA,0X80,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,
+0XA8,0X00,0X02,0XAA,0XAA,0XAA,0XA8,0X00,0X00,0XAA,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XA8,0X00,0X0A,0XAA,
+0XAA,0XAA,0XAA,0X00,0X00,0X2A,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,0XA0,0X00,0X2A,0XAA,0XAA,0XAA,0XAA,0XA0,
+0X00,0X0A,0X80,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XC0,0X02,0X80,0X00,0XAA,0XAA,0XAA,0XAA,0XAA,0XA8,0X00,0X02,0X80,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X02,
+0X00,0X00,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0X00,0X80,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X00,0X00,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0X80,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X00,0X00,0X0A,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XA0,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XC0,0X00,0X00,0X2A,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XA8,0X00,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X00,
+0X00,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X00,0X00,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XF0,0X3F,0XFF,0XFF,0XFF,
+0XFF,0X03,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0X82,0XAA,0XAA,0XA8,0X2A,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X3F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0X82,0XAA,0XAA,0XA0,0X0A,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0X80,0X00,0XAA,0X80,0X02,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFC,0X00,
+0X00,0XFF,0XFF,0XFF,0XC0,0X00,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0X80,0X00,0X2A,
+0X82,0X82,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0XFF,0XFF,0XFF,
+0XC0,0X00,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0X80,0XA8,0X2A,0X82,0XA0,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0XFF,0XFF,0XFF,0XC0,0X00,0X0F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0X82,0XAA,0X0A,0X82,0XA0,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0X82,0XAA,0X0A,0X82,0XA0,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0X00,
+0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0X82,0XAA,0X0A,
+0X82,0XA0,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XF0,0X3F,0XFF,0XFF,0XFF,
+0XFF,0X03,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0X82,0XAA,0X0A,0X82,0XA0,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XA0,0XA8,0X2A,0X82,0XA0,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XA0,0X00,0X00,0X00,0X82,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XA8,0X00,0X80,
+0X00,0X02,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XA0,0X28,0X02,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0X80,0X00,0X00,0X02,0XAA,0XAA,0XAA,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0X80,0X00,0X00,0X02,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XA8,
+0X2A,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0X0A,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0X82,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X0F,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XA0,0X02,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0X80,0X00,0X00,0X0A,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFC,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0X80,0X00,0X00,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X0F,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XC0,0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X03,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0X00,0X03,0XC0,0X03,0XFF,0XFF,0XFF,0XC0,0X00,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XA2,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFC,0X00,0X3F,0XF0,
+0X00,0XFF,0XFF,0XFF,0XFC,0X00,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XA8,
+0X02,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFC,0X00,0XFF,0XFC,0X00,0X3F,0XFF,0XFF,
+0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0X00,0X02,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0X00,0X3F,0XFF,0XFF,0XFF,0XC0,0X3F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0X80,0X00,0X2A,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XF0,0X00,0X00,0X00,0X00,0X00,0XC0,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,
+0XF0,0X03,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XC0,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XA0,0X00,0X02,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,
+0X00,0X0F,0XFC,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XF0,0X0F,0XFF,0XFF,
+0XC0,0X03,0XFF,0XFF,0XFF,0XF0,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,0XA8,0X00,0X0A,0X82,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XC0,
+0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XF0,0X0F,0XFF,0XFF,0XF0,0X00,0XFF,0XFF,
+0XFF,0XF0,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,0X80,0X02,0XAA,0X82,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XF0,0X0F,0XFF,0XFF,0XFC,0X00,0XFF,0XFF,0XFF,0XF0,0X0F,0XFF,
+0XFC,0X02,0XAA,0XAA,0X80,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XF0,
+0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,
+0XF0,0X0F,0XFF,0XFF,0XFC,0X00,0X3F,0XFF,0XFF,0XF0,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,
+0X80,0X2A,0XAA,0X82,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X0F,
+0XFF,0XF0,0X00,0XFF,0XFF,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XF0,0X0F,0XFF,0XFF,
+0XFF,0X00,0X0F,0XFF,0XFF,0XF0,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,0X80,0X00,0XAA,0X82,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0X00,0X00,0X0F,
+0XFF,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,
+0XFF,0XC0,0X0F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0X00,0X02,0X82,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0X00,0X00,0X00,0X03,0XFF,0XFF,0X00,0X00,0X00,0XFF,0XC0,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XF0,0X03,0XFF,0XFF,0XC0,0X3F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XA8,0X00,0X02,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFC,0X00,
+0X00,0X00,0X03,0XFF,0XFF,0X00,0X00,0X00,0XFF,0XF0,0X00,0X03,0XFF,0XFC,0X03,0XFF,
+0XFC,0X00,0XFF,0XFF,0XFF,0XF0,0X00,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XA0,0X00,0X0A,0XAA,0XAA,0XAA,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0XFF,
+0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0X00,0X3F,0XFF,
+0XFF,0XFC,0X00,0X3F,0XF0,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0X80,
+0X02,0XAA,0XAA,0XAA,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFC,0X00,0X00,
+0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0X00,0X03,0XFF,0XFF,0XFF,0X00,0X3F,
+0XC0,0X00,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0X82,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XC0,0X00,0X0F,0XFF,0XFF,0X00,0X00,0X00,0X03,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X00,
+0X00,0X00,0X00,0X00,0X0F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,
+0X00,0X3F,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFC,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XF0,
+0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,
+0X00,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0X00,0X00,0X03,0XFF,0XF0,0X00,0X00,0X0F,0XFF,0XF0,0X00,0X00,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,
+0X00,0XFF,0XF0,0X00,0X00,0X0F,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X3F,0XFF,0XC0,
+0X03,0XFF,0XFF,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X0F,0XFF,0XFC,0X0F,0XFF,0X00,0X00,
+0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,
+0X00,0X00,0X03,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X0F,
+0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XC0,0X00,
+0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,
+0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,
+0X03,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XF0,
+0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X03,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,
+0X00,0X00,0X00,0X3F,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X03,0XFF,
+0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0X00,0X00,0X00,
+0X00,0X00,0X00,0X0F,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,
+0XFF,0XFC,0X03,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,
+0X00,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFC,0X03,0XFF,
+0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X03,
+0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFC,0X03,0XFF,0XFC,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XF0,0X00,
+0X00,0X00,0X00,0X3F,0XFF,0XFC,0X03,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XC0,0X00,0X00,0X00,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,
+0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XF0,0X00,0X00,0X00,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,
+0X3F,0XFF,0XFF,0XF0,0X00,0X00,0X03,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0X00,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XC0,
+0X00,0X00,0X0F,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X0F,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,
+0X00,0X00,0X03,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XF0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X03,0XFF,
+0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XF0,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X03,0XFF,0XC0,0X00,0X00,0X00,
+0X00,0X03,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0X00,0X00,0X00,0X00,0X03,0XF0,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XC0,0X0F,
+0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X0F,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,0XFF,
+0XFF,0X00,0X3F,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+0XAA,0XAA,0XAA,0XAA,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
+0XFF,0XFF,0XFF,0XFF,0XFC,0X02,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,0XAA,
+};
+

+ 32 - 0
Arduino/epd2in7_V2/imagedata.h

@@ -0,0 +1,32 @@
+/**
+ *  @filename   :   imagedata.h
+ *  @brief      :   head file for imagedata.cpp
+ *
+ *  Copyright (C) Waveshare     August 18 2017
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+extern const unsigned char IMAGE_DATA[];
+extern const unsigned char IMAGE_DATA_4Gray[];
+
+/* END OF FILE*/
+
+
+

+ 128 - 20
RaspberryPi_JetsonNano/c/examples/EPD_2in7_V2_test.c

@@ -5,7 +5,7 @@
 * | Info        :
 * | Info        :
 *----------------
 *----------------
 * |	This version:   V1.0
 * |	This version:   V1.0
-* | Date        :   2021-04-22
+* | Date        :   2022-08-18
 * | Info        :
 * | Info        :
 * -----------------------------------------------------------------------------
 * -----------------------------------------------------------------------------
 #
 #
@@ -60,7 +60,6 @@ int EPD_2in7_V2_test(void)
 	Paint_Clear(WHITE);
 	Paint_Clear(WHITE);
 	
 	
 #if 1   // show bmp
 #if 1   // show bmp
-	Paint_NewImage(BlackImage, EPD_2IN7_V2_WIDTH, EPD_2IN7_V2_HEIGHT, 90, WHITE);
     printf("show window BMP-----------------\r\n");
     printf("show window BMP-----------------\r\n");
     Paint_SelectImage(BlackImage);
     Paint_SelectImage(BlackImage);
     GUI_ReadBmp("./pic/100x100.bmp", 10, 10);
     GUI_ReadBmp("./pic/100x100.bmp", 10, 10);
@@ -72,27 +71,76 @@ int EPD_2in7_V2_test(void)
     GUI_ReadBmp("./pic/2in7.bmp", 0, 0);
     GUI_ReadBmp("./pic/2in7.bmp", 0, 0);
     EPD_2IN7_V2_Display(BlackImage);
     EPD_2IN7_V2_Display(BlackImage);
     DEV_Delay_ms(3000);
     DEV_Delay_ms(3000);
+
 #endif
 #endif
 
 
-#if 1  //show image for array  
-    Paint_NewImage(BlackImage, EPD_2IN7_V2_WIDTH, EPD_2IN7_V2_HEIGHT, 90, WHITE);  
-    printf("show image for array\r\n");
+#if 1  // Drawing on the image
+	Paint_NewImage(BlackImage, EPD_2IN7_V2_WIDTH, EPD_2IN7_V2_HEIGHT, 90, WHITE);  	
+    printf("Drawing\r\n");
+    //1.Select Image
     Paint_SelectImage(BlackImage);
     Paint_SelectImage(BlackImage);
     Paint_Clear(WHITE);
     Paint_Clear(WHITE);
-    Paint_DrawBitMap(gImage_2in7);
+	
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+    Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT);
 
 
-    EPD_2IN7_V2_Display(BlackImage);
+    Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+
+    Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+
+    Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+
+    Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+
+    Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE);
+    Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK);
+
+    Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE);
+    Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK);
+
+    Paint_DrawString_CN(130, 0,"ÄãºÃabc", &Font12CN, BLACK, WHITE);
+    Paint_DrawString_CN(130, 20, "΢ѩµç×Ó", &Font24CN, WHITE, BLACK);
+
+    EPD_2IN7_V2_Display_Base(BlackImage);
     DEV_Delay_ms(3000);
     DEV_Delay_ms(3000);
 #endif
 #endif
 
 
-#if 1  // Drawing on the image
+#if 1  // Fast Drawing on the image
+    // Fast refresh
+    printf("This is followed by a quick refresh demo\r\n");
+    printf("First, clear the screen\r\n");
+    EPD_2IN7_V2_Init();
+    EPD_2IN7_V2_Clear();
+
+    printf("e-Paper Init Fast\r\n");
+    EPD_2IN7_V2_Init_Fast();
 	Paint_NewImage(BlackImage, EPD_2IN7_V2_WIDTH, EPD_2IN7_V2_HEIGHT, 90, WHITE);  	
 	Paint_NewImage(BlackImage, EPD_2IN7_V2_WIDTH, EPD_2IN7_V2_HEIGHT, 90, WHITE);  	
     printf("Drawing\r\n");
     printf("Drawing\r\n");
     //1.Select Image
     //1.Select Image
     Paint_SelectImage(BlackImage);
     Paint_SelectImage(BlackImage);
     Paint_Clear(WHITE);
     Paint_Clear(WHITE);
-	
+
+    printf("show window BMP-----------------\r\n");
+    Paint_SelectImage(BlackImage);
+    GUI_ReadBmp("./pic/100x100.bmp", 10, 10);
+    EPD_2IN7_V2_Display_Fast(BlackImage);
+    DEV_Delay_ms(3000);
+
+    printf("show bmp------------------------\r\n");
+    Paint_SelectImage(BlackImage);
+    GUI_ReadBmp("./pic/2in7.bmp", 0, 0);
+    EPD_2IN7_V2_Display_Fast(BlackImage);
+    DEV_Delay_ms(3000);
+
     // 2.Drawing on the image
     // 2.Drawing on the image
+    Paint_Clear(WHITE);
     printf("Drawing:BlackImage\r\n");
     printf("Drawing:BlackImage\r\n");
     Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT);
     Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT);
     Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT);
     Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT);
@@ -116,23 +164,34 @@ int EPD_2in7_V2_test(void)
     Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE);
     Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE);
     Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK);
     Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK);
 
 
-    Paint_DrawString_CN(130, 0,"你好abc", &Font12CN, BLACK, WHITE);
-    Paint_DrawString_CN(130, 20, "微雪电�", &Font24CN, WHITE, BLACK);
+    Paint_DrawString_CN(130, 0,"ÄãºÃabc", &Font12CN, BLACK, WHITE);
+    Paint_DrawString_CN(130, 20, "΢ѩµç×Ó", &Font24CN, WHITE, BLACK);
 
 
-    EPD_2IN7_V2_Display_Base(BlackImage);
+    EPD_2IN7_V2_Display_Fast(BlackImage);
     DEV_Delay_ms(3000);
     DEV_Delay_ms(3000);
+
+    
+
 #endif
 #endif
 
 
-#if 1   //Partial refresh, example shows time    		
-	Paint_NewImage(BlackImage, EPD_2IN7_V2_WIDTH, EPD_2IN7_V2_HEIGHT, 90, WHITE);  
+#if 1   //Partial refresh, example shows time    	
+    // If you didn't use the EPD_2IN7_V2_Display_Base() function to refresh the image before,
+    // use the EPD_2IN7_V2_Display_Base_color() function to refresh the background color, 
+    // otherwise the background color will be garbled 
+    EPD_2IN7_V2_Init();
+    // EPD_2IN7_V2_Display_Base_color(WHITE);
+	Paint_NewImage(BlackImage, 50, 120, 90, WHITE);
+    
     printf("Partial refresh\r\n");
     printf("Partial refresh\r\n");
     Paint_SelectImage(BlackImage);
     Paint_SelectImage(BlackImage);
-	
+	Paint_SetScale(2);
+    Paint_Clear(WHITE);
+    
     PAINT_TIME sPaint_time;
     PAINT_TIME sPaint_time;
     sPaint_time.Hour = 12;
     sPaint_time.Hour = 12;
     sPaint_time.Min = 34;
     sPaint_time.Min = 34;
     sPaint_time.Sec = 56;
     sPaint_time.Sec = 56;
-    UBYTE num = 10;
+    UBYTE num = 15;
     for (;;) {
     for (;;) {
         sPaint_time.Sec = sPaint_time.Sec + 1;
         sPaint_time.Sec = sPaint_time.Sec + 1;
         if (sPaint_time.Sec == 60) {
         if (sPaint_time.Sec == 60) {
@@ -148,16 +207,65 @@ int EPD_2in7_V2_test(void)
                 }
                 }
             }
             }
         }
         }
-        Paint_ClearWindows(150, 80, 150 + Font20.Width * 7, 80 + Font20.Height, WHITE);
-        Paint_DrawTime(150, 80, &sPaint_time, &Font20, WHITE, BLACK);
+        
+        Paint_Clear(WHITE);
+		Paint_DrawRectangle(1, 1, 120, 50, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+        Paint_DrawTime(10, 15, &sPaint_time, &Font20, WHITE, BLACK);
 
 
         num = num - 1;
         num = num - 1;
         if(num == 0) {
         if(num == 0) {
             break;
             break;
         }
         }
-		EPD_2IN7_V2_Display_Partial(BlackImage);
-        DEV_Delay_ms(500);//Analog clock 1s
+		printf("Part refresh...\r\n");
+        EPD_2IN7_V2_Display_Partial(BlackImage, 60, 134, 110, 254); // Xstart must be a multiple of 8
+        DEV_Delay_ms(500);
+    }
+#endif
+
+#if 1 // show image for array
+    free(BlackImage);
+    printf("show Gray------------------------\r\n");
+    Imagesize = ((EPD_2IN7_V2_WIDTH % 4 == 0)? (EPD_2IN7_V2_WIDTH / 4 ): (EPD_2IN7_V2_WIDTH / 4 + 1)) * EPD_2IN7_V2_HEIGHT;
+    if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) {
+        printf("Failed to apply for black memory...\r\n");
+        return -1;
     }
     }
+    EPD_2IN7_V2_Init_4GRAY();
+    printf("4 grayscale display\r\n");
+    Paint_NewImage(BlackImage, EPD_2IN7_V2_WIDTH, EPD_2IN7_V2_HEIGHT, 90, WHITE);
+    Paint_SetScale(4);
+    Paint_Clear(0xff);
+    
+    Paint_DrawPoint(10, 80, GRAY4, DOT_PIXEL_1X1, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 90, GRAY4, DOT_PIXEL_2X2, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 100, GRAY4, DOT_PIXEL_3X3, DOT_STYLE_DFT);
+    Paint_DrawLine(20, 70, 70, 120, GRAY4, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawLine(70, 70, 20, 120, GRAY4, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawRectangle(20, 70, 70, 120, GRAY4, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawRectangle(80, 70, 130, 120, GRAY4, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawCircle(45, 95, 20, GRAY4, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawCircle(105, 95, 20, GRAY2, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawLine(85, 95, 125, 95, GRAY4, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawLine(105, 75, 105, 115, GRAY4, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawString_EN(10, 0, "waveshare", &Font16, GRAY4, GRAY1);
+    Paint_DrawString_EN(10, 20, "hello world", &Font12, GRAY3, GRAY1);
+    Paint_DrawNum(10, 33, 123456789, &Font12, GRAY4, GRAY2);
+    Paint_DrawNum(10, 50, 987654321, &Font16, GRAY1, GRAY4);
+    Paint_DrawString_CN(150, 0,"ÄãºÃabc", &Font12CN, GRAY4, GRAY1);
+    Paint_DrawString_CN(150, 20,"ÄãºÃabc", &Font12CN, GRAY3, GRAY2);
+    Paint_DrawString_CN(150, 40,"ÄãºÃabc", &Font12CN, GRAY2, GRAY3);
+    Paint_DrawString_CN(150, 60,"ÄãºÃabc", &Font12CN, GRAY1, GRAY4);
+    Paint_DrawString_CN(10, 130, "΢ѩµç×Ó", &Font24CN, GRAY1, GRAY4);
+    EPD_2IN7_V2_4GrayDisplay(BlackImage);
+    DEV_Delay_ms(3000);
+
+    Paint_NewImage(BlackImage, EPD_2IN7_V2_WIDTH, EPD_2IN7_V2_HEIGHT, 0, WHITE);
+    Paint_SetScale(4);
+    Paint_Clear(WHITE);
+    GUI_ReadBmp_4Gray("./pic/2in7_Scale.bmp", 0, 0);
+    EPD_2IN7_V2_4GrayDisplay(BlackImage);
+    DEV_Delay_ms(3000);
+
 #endif
 #endif
 
 
 	printf("Clear...\r\n");
 	printf("Clear...\r\n");

+ 306 - 95
RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in7_V2.c

@@ -5,7 +5,7 @@
 * | Info        :
 * | Info        :
 *----------------
 *----------------
 * |	This version:   V1.0
 * |	This version:   V1.0
-* | Date        :   2021-04-22
+* | Date        :   2022-08-18
 * | Info        :
 * | Info        :
 * -----------------------------------------------------------------------------
 * -----------------------------------------------------------------------------
 #
 #
@@ -31,27 +31,27 @@
 #include "EPD_2in7_V2.h"
 #include "EPD_2in7_V2.h"
 #include "Debug.h"
 #include "Debug.h"
 
 
-UBYTE WF_PARTIAL_2in7_V2[159] =
+UBYTE LUT_DATA_4Gray[159] =
 {
 {
-0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0xF,0x0,0x0,0x0,0x0,0x0,0x1,
-0x1,0x1,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0,
-0x22,0x17,0x41,0xB0,0x32,0x32,
+0x40,	0x48,	0x80,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0x8,	0x48,	0x10,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0x2,	0x48,	0x4,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0x20,	0x48,	0x1,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0xA,	0x19,	0x0,	0x3,	0x8,	0x0,	0x0,					
+0x14,	0x1,	0x0,	0x14,	0x1,	0x0,	0x3,					
+0xA,	0x3,	0x0,	0x8,	0x19,	0x0,	0x0,					
+0x1,	0x0,	0x0,	0x0,	0x0,	0x0,	0x1,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x22,	0x22,	0x22,	0x22,	0x22,	0x22,	0x0,	0x0,	0x0,			
+0x22,	0x17,	0x41,	0x0,	0x32,	0x1C
 };
 };
 
 
 /******************************************************************************
 /******************************************************************************
@@ -115,84 +115,173 @@ parameter:
 ******************************************************************************/
 ******************************************************************************/
 static void EPD_2IN7_V2_TurnOnDisplay(void)
 static void EPD_2IN7_V2_TurnOnDisplay(void)
 {
 {
-	EPD_2IN7_V2_SendCommand(0x20);
+	EPD_2IN7_V2_SendCommand(0x22); //Display Update Control
+    EPD_2IN7_V2_SendData(0xF7);
+	EPD_2IN7_V2_SendCommand(0x20); //Activate Display Update Sequence
+    EPD_2IN7_V2_ReadBusy();
+}
+
+static void EPD_2IN7_V2_TurnOnDisplay_Fast(void)
+{
+	EPD_2IN7_V2_SendCommand(0x22); //Display Update Control
+    EPD_2IN7_V2_SendData(0xC7);
+	EPD_2IN7_V2_SendCommand(0x20); //Activate Display Update Sequence
     EPD_2IN7_V2_ReadBusy();
     EPD_2IN7_V2_ReadBusy();
 }
 }
 
 
 static void EPD_2IN7_V2_TurnOnDisplay_Partial(void)
 static void EPD_2IN7_V2_TurnOnDisplay_Partial(void)
 {
 {
     EPD_2IN7_V2_SendCommand(0x22);
     EPD_2IN7_V2_SendCommand(0x22);
-    EPD_2IN7_V2_SendData(0x0f);
+    EPD_2IN7_V2_SendData(0xFF);
 	EPD_2IN7_V2_SendCommand(0x20);
 	EPD_2IN7_V2_SendCommand(0x20);
     EPD_2IN7_V2_ReadBusy();
     EPD_2IN7_V2_ReadBusy();
 }
 }
 
 
+static void EPD_2IN7_V2_TurnOnDisplay_4GRAY(void)
+{
+    EPD_2IN7_V2_SendCommand(0x22);
+    EPD_2IN7_V2_SendData(0xC7);
+	EPD_2IN7_V2_SendCommand(0x20);
+    EPD_2IN7_V2_ReadBusy();
+}
 /******************************************************************************
 /******************************************************************************
 function :	set the look-up tables
 function :	set the look-up tables
 parameter:
 parameter:
 ******************************************************************************/
 ******************************************************************************/
-static void EPD_2IN7_V2_SetLut(void)
+static void EPD_2IN7_V2_Lut(void)
 {
 {
     unsigned int count;
     unsigned int count;
     EPD_2IN7_V2_SendCommand(0x32); //vcom
     EPD_2IN7_V2_SendCommand(0x32); //vcom
     for(count = 0; count < 153; count++) {
     for(count = 0; count < 153; count++) {
-        EPD_2IN7_V2_SendData(WF_PARTIAL_2in7_V2[count]);
+        EPD_2IN7_V2_SendData(LUT_DATA_4Gray[count]);
     }
     }
 }
 }
 
 
+
 /******************************************************************************
 /******************************************************************************
-function :	Setting the display window
+function :	Initialize the e-Paper register
 parameter:
 parameter:
 ******************************************************************************/
 ******************************************************************************/
-static void EPD_2IN7_V2_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend)
+void EPD_2IN7_V2_Init(void)
 {
 {
-    EPD_2IN7_V2_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION
-    EPD_2IN7_V2_SendData((Xstart>>3) & 0xFF);
-    EPD_2IN7_V2_SendData((Xend>>3) & 0xFF);
+    EPD_2IN7_V2_Reset();
+	EPD_2IN7_V2_ReadBusy();
 	
 	
-    EPD_2IN7_V2_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION
-    EPD_2IN7_V2_SendData(Ystart & 0xFF);
-    EPD_2IN7_V2_SendData((Ystart >> 8) & 0xFF);
-    EPD_2IN7_V2_SendData(Yend & 0xFF);
-    EPD_2IN7_V2_SendData((Yend >> 8) & 0xFF);
-}
+	EPD_2IN7_V2_SendCommand(0x12); //SWRESET
+	EPD_2IN7_V2_ReadBusy();
 
 
-/******************************************************************************
-function :	Set Cursor
-parameter:
-******************************************************************************/
-static void EPD_2IN7_V2_SetCursor(UWORD Xstart, UWORD Ystart)
-{
-    EPD_2IN7_V2_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER
-    EPD_2IN7_V2_SendData(Xstart & 0xFF);
+    EPD_2IN7_V2_SendCommand(0x45); //set Ram-Y address start/end position          
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x07); //0x0107-->(263+1)=264
+	EPD_2IN7_V2_SendData(0x01);
 
 
-    EPD_2IN7_V2_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER
-    EPD_2IN7_V2_SendData(Ystart & 0xFF);
-    EPD_2IN7_V2_SendData((Ystart >> 8) & 0xFF);
-}
+    EPD_2IN7_V2_SendCommand(0x4F);   // set RAM y address count to 0;    
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x00);
 
 
-/******************************************************************************
-function :	Initialize the e-Paper register
-parameter:
-******************************************************************************/
-void EPD_2IN7_V2_Init(void)
+    EPD_2IN7_V2_SendCommand(0x11);   // data entry mode
+	EPD_2IN7_V2_SendData(0x03);
+
+}
+void EPD_2IN7_V2_Init_Fast(void)
 {
 {
     EPD_2IN7_V2_Reset();
     EPD_2IN7_V2_Reset();
+    EPD_2IN7_V2_ReadBusy();
+
+    EPD_2IN7_V2_SendCommand(0x12); //SWRESET
+    EPD_2IN7_V2_ReadBusy();
+
+    EPD_2IN7_V2_SendCommand(0x18); //Read built-in temperature sensor
+    EPD_2IN7_V2_SendData(0x80);	
+
+    EPD_2IN7_V2_SendCommand(0x22); // Load temperature value
+    EPD_2IN7_V2_SendData(0xB1);		
+    EPD_2IN7_V2_SendCommand(0x20);	
+    EPD_2IN7_V2_ReadBusy();
+
+    EPD_2IN7_V2_SendCommand(0x1A); // Write to temperature register
+    EPD_2IN7_V2_SendData(0x64);		
+    EPD_2IN7_V2_SendData(0x00);	
+
+    EPD_2IN7_V2_SendCommand(0x45); //set Ram-Y address start/end position          
+	EPD_2IN7_V2_SendData(0x00);   
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x07); //0x0107-->(263+1)=264
+	EPD_2IN7_V2_SendData(0x01);
+
+    EPD_2IN7_V2_SendCommand(0x4F);   // set RAM y address count to 0;    
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x00);
+
+    EPD_2IN7_V2_SendCommand(0x11);   // data entry mode      
+	EPD_2IN7_V2_SendData(0x03);
+                
+    EPD_2IN7_V2_SendCommand(0x22); // Load temperature value
+    EPD_2IN7_V2_SendData(0x91);		
+    EPD_2IN7_V2_SendCommand(0x20);	
+    EPD_2IN7_V2_ReadBusy(); 
+}
+void EPD_2IN7_V2_Init_4GRAY(void)
+{
+	EPD_2IN7_V2_Reset();
+
 	EPD_2IN7_V2_ReadBusy();
 	EPD_2IN7_V2_ReadBusy();
-	
-	EPD_2IN7_V2_SendCommand(0x12);
+	EPD_2IN7_V2_SendCommand(0x12); // soft reset
 	EPD_2IN7_V2_ReadBusy();
 	EPD_2IN7_V2_ReadBusy();
 
 
+	EPD_2IN7_V2_SendCommand(0x74); //set analog block control       
+	EPD_2IN7_V2_SendData(0x54);
+	EPD_2IN7_V2_SendCommand(0x7E); //set digital block control          
+	EPD_2IN7_V2_SendData(0x3B);
+
 	EPD_2IN7_V2_SendCommand(0x01); //Driver output control      
 	EPD_2IN7_V2_SendCommand(0x01); //Driver output control      
-	EPD_2IN7_V2_SendData(0x27);
+	EPD_2IN7_V2_SendData(0x07);
 	EPD_2IN7_V2_SendData(0x01);
 	EPD_2IN7_V2_SendData(0x01);
 	EPD_2IN7_V2_SendData(0x00);
 	EPD_2IN7_V2_SendData(0x00);
-	
+
 	EPD_2IN7_V2_SendCommand(0x11); //data entry mode       
 	EPD_2IN7_V2_SendCommand(0x11); //data entry mode       
 	EPD_2IN7_V2_SendData(0x03);
 	EPD_2IN7_V2_SendData(0x03);
+
+	EPD_2IN7_V2_SendCommand(0x44); //set Ram-X address start/end position   
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x15);    //0x15-->(21+1)*8=176
+
+	EPD_2IN7_V2_SendCommand(0x45); //set Ram-Y address start/end position          
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x07);//0x0107-->(263+1)=264
+	EPD_2IN7_V2_SendData(0x01);
+
+
+	EPD_2IN7_V2_SendCommand(0x3C); //BorderWavefrom
+	EPD_2IN7_V2_SendData(0x00);	
+
+
+	EPD_2IN7_V2_SendCommand(0x2C);     //VCOM Voltage
+	EPD_2IN7_V2_SendData(LUT_DATA_4Gray[158]);    //0x1C
+
+
+	EPD_2IN7_V2_SendCommand(0x3F); //EOPQ    
+	EPD_2IN7_V2_SendData(LUT_DATA_4Gray[153]);
 	
 	
-	EPD_2IN7_V2_SetWindows(0, 0, EPD_2IN7_V2_WIDTH-1, EPD_2IN7_V2_HEIGHT-1);
-	EPD_2IN7_V2_SetCursor(0, 0);
+	EPD_2IN7_V2_SendCommand(0x03); //VGH      
+	EPD_2IN7_V2_SendData(LUT_DATA_4Gray[154]);
+
+	EPD_2IN7_V2_SendCommand(0x04); //      
+	EPD_2IN7_V2_SendData(LUT_DATA_4Gray[155]); //VSH1   
+	EPD_2IN7_V2_SendData(LUT_DATA_4Gray[156]); //VSH2   
+	EPD_2IN7_V2_SendData(LUT_DATA_4Gray[157]); //VSL   
+   
+	EPD_2IN7_V2_Lut(); //LUT
+
+	
+	EPD_2IN7_V2_SendCommand(0x4E);   // set RAM x address count to 0;
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendCommand(0x4F);   // set RAM y address count to 0X199;    
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x00);
+    EPD_2IN7_V2_ReadBusy();
 }
 }
 
 
 /******************************************************************************
 /******************************************************************************
@@ -212,12 +301,6 @@ void EPD_2IN7_V2_Clear(void)
         }
         }
     }
     }
 
 
-    EPD_2IN7_V2_SendCommand(0x26);
-    for (UWORD j = 0; j < Height; j++) {
-        for (UWORD i = 0; i < Width; i++) {
-            EPD_2IN7_V2_SendData(0X00);
-        }
-    }
 	EPD_2IN7_V2_TurnOnDisplay();
 	EPD_2IN7_V2_TurnOnDisplay();
 }
 }
 
 
@@ -241,6 +324,21 @@ void EPD_2IN7_V2_Display(UBYTE *Image)
 	EPD_2IN7_V2_TurnOnDisplay();
 	EPD_2IN7_V2_TurnOnDisplay();
 }
 }
 
 
+void EPD_2IN7_V2_Display_Fast(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN7_V2_WIDTH % 8 == 0)? (EPD_2IN7_V2_WIDTH / 8 ): (EPD_2IN7_V2_WIDTH / 8 + 1);
+    Height = EPD_2IN7_V2_HEIGHT;
+	
+    EPD_2IN7_V2_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN7_V2_SendData(Image[i + j * Width]);
+        }
+    }
+	EPD_2IN7_V2_TurnOnDisplay_Fast();
+}
+
 void EPD_2IN7_V2_Display_Base(UBYTE *Image)
 void EPD_2IN7_V2_Display_Base(UBYTE *Image)
 {
 {
     UWORD Width, Height;
     UWORD Width, Height;
@@ -262,48 +360,161 @@ void EPD_2IN7_V2_Display_Base(UBYTE *Image)
 	EPD_2IN7_V2_TurnOnDisplay();	
 	EPD_2IN7_V2_TurnOnDisplay();	
 }
 }
 
 
-void EPD_2IN7_V2_Display_Partial(UBYTE *Image)
+void EPD_2IN7_V2_Display_Base_color(UBYTE color)
 {
 {
     UWORD Width, Height;
     UWORD Width, Height;
     Width = (EPD_2IN7_V2_WIDTH % 8 == 0)? (EPD_2IN7_V2_WIDTH / 8 ): (EPD_2IN7_V2_WIDTH / 8 + 1);
     Width = (EPD_2IN7_V2_WIDTH % 8 == 0)? (EPD_2IN7_V2_WIDTH / 8 ): (EPD_2IN7_V2_WIDTH / 8 + 1);
     Height = EPD_2IN7_V2_HEIGHT;
     Height = EPD_2IN7_V2_HEIGHT;
 
 
-    DEV_Digital_Write(EPD_RST_PIN, 0);
-    DEV_Delay_ms(1);
-    DEV_Digital_Write(EPD_RST_PIN, 1);
-	
-	EPD_2IN7_V2_ReadBusy();
-	EPD_2IN7_V2_SetLut();
-	EPD_2IN7_V2_SendCommand(0x37);
-	EPD_2IN7_V2_SendData(0x00);
-	EPD_2IN7_V2_SendData(0x00);
-	EPD_2IN7_V2_SendData(0x00);
-	EPD_2IN7_V2_SendData(0x00);
-	EPD_2IN7_V2_SendData(0x00);
-	EPD_2IN7_V2_SendData(0x40);
-	EPD_2IN7_V2_SendData(0x00);
-	EPD_2IN7_V2_SendData(0x00);
-	EPD_2IN7_V2_SendData(0x00);
-	EPD_2IN7_V2_SendData(0x00);
-
-	EPD_2IN7_V2_SendCommand(0x3c);
-	EPD_2IN7_V2_SendData(0x80);
-	
-	EPD_2IN7_V2_SendCommand(0x22);
-	EPD_2IN7_V2_SendData(0xc0);
-	EPD_2IN7_V2_SendCommand(0x20);
-	EPD_2IN7_V2_ReadBusy();
-
-    EPD_2IN7_V2_SendCommand(0x24);
+	EPD_2IN7_V2_SendCommand(0x24);   //Write Black and White image to RAM
     for (UWORD j = 0; j < Height; j++) {
     for (UWORD j = 0; j < Height; j++) {
         for (UWORD i = 0; i < Width; i++) {
         for (UWORD i = 0; i < Width; i++) {
-            EPD_2IN7_V2_SendData(Image[i + j * Width]);
+            EPD_2IN7_V2_SendData(color);
         }
         }
     }
     }
-	
+	EPD_2IN7_V2_SendCommand(0x26);   //Write Black and White image to RAM
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN7_V2_SendData(color);
+        }
+    }
+	// EPD_2IN7_V2_TurnOnDisplay();	
+}
+
+void EPD_2IN7_V2_Display_Partial(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend)
+{
+    if((Xstart % 8 + Xend % 8 == 8 && Xstart % 8 > Xend % 8) || Xstart % 8 + Xend % 8 == 0 || (Xend - Xstart)%8 == 0)
+    {
+        Xstart = Xstart / 8 ;
+        Xend = Xend / 8;
+    }
+    else
+    {
+        Xstart = Xstart / 8 ;
+        Xend = Xend % 8 == 0 ? Xend / 8 : Xend / 8 + 1;
+    }
+    
+
+    UWORD i, Width;
+	Width = Xend -  Xstart;
+	UWORD IMAGE_COUNTER = Width * (Yend-Ystart);
+
+	Xend -= 1;
+	Yend -= 1;	
+    //Reset
+    EPD_2IN7_V2_Reset();
+
+    EPD_2IN7_V2_SendCommand(0x3C); //BorderWavefrom
+    EPD_2IN7_V2_SendData(0x80);	
+    //	
+    EPD_2IN7_V2_SendCommand(0x44);       // set RAM x address start/end, in page 35
+    EPD_2IN7_V2_SendData(Xstart & 0xff);    // RAM x address start at 00h;
+    EPD_2IN7_V2_SendData(Xend & 0xff);    // RAM x address end at 0fh(15+1)*8->128 
+    EPD_2IN7_V2_SendCommand(0x45);       // set RAM y address start/end, in page 35
+    EPD_2IN7_V2_SendData(Ystart & 0xff);    // RAM y address start at 0127h;
+    EPD_2IN7_V2_SendData((Ystart>>8) & 0x01);    // RAM y address start at 0127h;
+    EPD_2IN7_V2_SendData(Yend & 0xff);    // RAM y address end at 00h;
+    EPD_2IN7_V2_SendData((Yend>>8) & 0x01); 
+
+    EPD_2IN7_V2_SendCommand(0x4E);   // set RAM x address count to 0;
+    EPD_2IN7_V2_SendData(Xstart & 0xff); 
+    EPD_2IN7_V2_SendCommand(0x4F);   // set RAM y address count to 0X127;    
+    EPD_2IN7_V2_SendData(Ystart & 0xff);
+    EPD_2IN7_V2_SendData((Ystart>>8) & 0x01);
+
+
+    EPD_2IN7_V2_SendCommand(0x24);   //Write Black and White image to RAM
+    for (i = 0; i < IMAGE_COUNTER; i++) {
+	    EPD_2IN7_V2_SendData(Image[i]);
+	}
 	EPD_2IN7_V2_TurnOnDisplay_Partial();
 	EPD_2IN7_V2_TurnOnDisplay_Partial();
 }
 }
 
 
+
+void EPD_2IN7_V2_4GrayDisplay(UBYTE *Image)
+{
+    UDOUBLE i,j,k;
+    UBYTE temp1,temp2,temp3;
+
+    // old  data
+    EPD_2IN7_V2_SendCommand(0x24);
+    for(i=0; i<5808; i++) {             //5808*4  46464
+        temp3=0;
+        for(j=0; j<2; j++) {
+            temp1 = Image[i*2+j];
+            for(k=0; k<2; k++) {
+                temp2 = temp1&0xC0;
+                if(temp2 == 0xC0)
+                    temp3 |= 0x00;
+                else if(temp2 == 0x00)
+                    temp3 |= 0x01; 
+                else if(temp2 == 0x80)
+                    temp3 |= 0x01; 
+                else //0x40
+                    temp3 |= 0x00; 
+                temp3 <<= 1;
+
+                temp1 <<= 2;
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0) 
+                    temp3 |= 0x00;
+                else if(temp2 == 0x00) 
+                    temp3 |= 0x01;
+                else if(temp2 == 0x80)
+                    temp3 |= 0x01; 
+                else    //0x40
+                    temp3 |= 0x00;	
+                if(j!=1 || k!=1)
+                    temp3 <<= 1;
+
+                temp1 <<= 2;
+            }
+
+        }
+        EPD_2IN7_V2_SendData(temp3);
+        // printf("%x",temp3);
+    }
+
+    EPD_2IN7_V2_SendCommand(0x26);   //write RAM for black(0)/white (1)
+    for(i=0; i<5808; i++) {             //5808*4  46464
+        temp3=0;
+        for(j=0; j<2; j++) {
+            temp1 = Image[i*2+j];
+            for(k=0; k<2; k++) {
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)
+                    temp3 |= 0x00;//white
+                else if(temp2 == 0x00)
+                    temp3 |= 0x01;  //black
+                else if(temp2 == 0x80)
+                    temp3 |= 0x00;  //gray1
+                else //0x40
+                    temp3 |= 0x01; //gray2
+                temp3 <<= 1;
+
+                temp1 <<= 2;
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)  //white
+                    temp3 |= 0x00;
+                else if(temp2 == 0x00) //black
+                    temp3 |= 0x01;
+                else if(temp2 == 0x80)
+                    temp3 |= 0x00; //gray1
+                else    //0x40
+                    temp3 |= 0x01;	//gray2
+                if(j!=1 || k!=1)
+                    temp3 <<= 1;
+
+                temp1 <<= 2;
+            }
+        }
+        EPD_2IN7_V2_SendData(temp3);
+        // printf("%x",temp3);
+    }
+
+    EPD_2IN7_V2_TurnOnDisplay_4GRAY();
+}
+
 /******************************************************************************
 /******************************************************************************
 function :	Enter sleep mode
 function :	Enter sleep mode
 parameter:
 parameter:

+ 8 - 4
RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in7_V2.h

@@ -5,7 +5,7 @@
 * | Info        :
 * | Info        :
 *----------------
 *----------------
 * |	This version:   V1.0
 * |	This version:   V1.0
-* | Date        :   2021-04-22
+* | Date        :   2022-08-18
 * | Info        :
 * | Info        :
 * -----------------------------------------------------------------------------
 * -----------------------------------------------------------------------------
 #
 #
@@ -38,11 +38,15 @@
 #define EPD_2IN7_V2_HEIGHT      264
 #define EPD_2IN7_V2_HEIGHT      264
 
 
 void EPD_2IN7_V2_Init(void);
 void EPD_2IN7_V2_Init(void);
+void EPD_2IN7_V2_Init_Fast(void);
+void EPD_2IN7_V2_Init_4GRAY(void);
 void EPD_2IN7_V2_Clear(void);
 void EPD_2IN7_V2_Clear(void);
 void EPD_2IN7_V2_Display(UBYTE *Image);
 void EPD_2IN7_V2_Display(UBYTE *Image);
-void EPD_2IN7_V2_Sleep(void);
-
+void EPD_2IN7_V2_Display_Fast(UBYTE *Image);
 void EPD_2IN7_V2_Display_Base(UBYTE *Image);
 void EPD_2IN7_V2_Display_Base(UBYTE *Image);
-void EPD_2IN7_V2_Display_Partial(UBYTE *Image);
+void EPD_2IN7_V2_Display_Base_color(UBYTE color);
+void EPD_2IN7_V2_Display_Partial(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yende);
+void EPD_2IN7_V2_4GrayDisplay(UBYTE *Image);
+void EPD_2IN7_V2_Sleep(void);
 
 
 #endif
 #endif

+ 158 - 0
RaspberryPi_JetsonNano/python/examples/epd_2in7_V2_test.py

@@ -0,0 +1,158 @@
+#!/usr/bin/python
+# -*- coding:utf-8 -*-
+import sys
+import os
+picdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'pic')
+libdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'lib')
+if os.path.exists(libdir):
+    sys.path.append(libdir)
+
+import logging
+from waveshare_epd import epd2in7_V2
+import time
+from PIL import Image,ImageDraw,ImageFont
+import traceback
+
+logging.basicConfig(level=logging.DEBUG)
+
+try:
+
+    logging.info("epd2in7 Demo")   
+    epd = epd2in7_V2.EPD()
+    
+    '''2Gray(Black and white) display'''
+    logging.info("init and Clear")
+    epd.init()
+    epd.clear()
+    font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24)
+    font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18)
+    font35 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 35)
+    
+    # Quick refresh
+    logging.info("Quick refresh demo")
+    epd.init_Fast()
+    # Drawing on the Vertical image
+    logging.info("1.Drawing on the Vertical image...")
+    Limage = Image.new('1', (epd.width, epd.height), 255)  # 255: clear the frame
+    draw = ImageDraw.Draw(Limage)
+    draw.text((2, 0), 'hello world', font = font18, fill = 0)
+    draw.text((20, 50), u'微雪电子', font = font18, fill = 0)
+    draw.line((10, 90, 60, 140), fill = 0)
+    draw.line((60, 90, 10, 140), fill = 0)
+    draw.rectangle((10, 90, 60, 140), outline = 0)
+    draw.line((95, 90, 95, 140), fill = 0)
+    draw.line((70, 115, 120, 115), fill = 0)
+    draw.arc((70, 90, 120, 140), 0, 360, fill = 0)
+    draw.rectangle((10, 150, 60, 200), fill = 0)
+    draw.chord((70, 150, 120, 200), 0, 360, fill = 0)
+    epd.display_Fast(epd.getbuffer(Limage))
+    time.sleep(2)
+    
+    logging.info("2.read bmp file")
+    Himage = Image.open(os.path.join(picdir, '2in7.bmp'))
+    epd.display_Fast(epd.getbuffer(Himage))
+    time.sleep(2)
+    
+    # Normal refresh
+    logging.info("Normal refresh demo")
+    epd.init()
+    logging.info("3.read bmp file on window")
+    Himage2 = Image.new('1', (epd.height, epd.width), 255)  # 255: clear the frame
+    bmp = Image.open(os.path.join(picdir, '100x100.bmp'))
+    Himage2.paste(bmp, (50,10))
+    epd.display(epd.getbuffer(Himage2))
+    time.sleep(2)
+    
+    # Drawing on the Horizontal image
+    logging.info("4.Drawing on the Horizontal image...")
+    Himage = Image.new('1', (epd.height, epd.width), 255)  # 255: clear the frame
+    draw = ImageDraw.Draw(Himage)
+    draw.text((10, 0), 'hello world', font = font24, fill = 0)
+    draw.text((150, 0), u'微雪电子', font = font24, fill = 0)    
+    draw.line((20, 50, 70, 100), fill = 0)
+    draw.line((70, 50, 20, 100), fill = 0)
+    draw.rectangle((20, 50, 70, 100), outline = 0)
+    draw.line((165, 50, 165, 100), fill = 0)
+    draw.line((140, 75, 190, 75), fill = 0)
+    draw.arc((140, 50, 190, 100), 0, 360, fill = 0)
+    draw.rectangle((80, 50, 130, 100), fill = 0)
+    draw.chord((200, 50, 250, 100), 0, 360, fill = 0)
+    epd.display_Base(epd.getbuffer(Himage))
+    time.sleep(2)
+    
+    # partial update
+    logging.info("5.show time")
+    epd.init()   
+    '''
+    # If you didn't use the EPD_2IN7_V2_Display_Base() function to refresh the image before,
+    # use the EPD_2IN7_V2_Display_Base_color() function to refresh the background color, 
+    # otherwise the background color will be garbled 
+    '''
+    # epd.display_Base_color(0xff)
+    # Himage = Image.new('1', (epd.height ,epd.width), 0xff)
+    # draw = ImageDraw.Draw(time_image)
+    num = 0
+    while (True):
+        draw.rectangle((10, 110, 120, 150), fill = 255)
+        draw.text((10, 110), time.strftime('%H:%M:%S'), font = font24, fill = 0)
+        newimage = Himage.crop([10, 110, 120, 150])
+        Himage.paste(newimage, (10,110)) 
+        epd.display_Partial(epd.getbuffer(Himage),110, epd.height - 120, 150, epd.height - 10)
+        num = num + 1
+        if(num == 10):
+            break
+    
+    # epd.init() 
+    # epd.clear()
+    # epd.display_Base_color(0xff)
+    # Himage = Image.new('1', (epd.width ,epd.height), 0xff)
+    # draw = ImageDraw.Draw(Himage)
+    # num = 0
+    # while (True):
+        # draw.rectangle((10, 10, 120, 50), fill = 255)
+        # draw.text((10, 10), time.strftime('%H:%M:%S'), font = font24, fill = 0)
+        # newimage = Himage.crop([10, 10, 120, 50])
+        # Himage.paste(newimage, (10,10)) 
+        # epd.display_Partial(epd.getbuffer(Himage),10, 10, 120, 50)
+        # num = num + 1
+        # if(num == 10):
+            # break
+    
+    '''4Gray display'''
+    logging.info("4Gray display--------------------------------")
+    epd.Init_4Gray()
+    
+    Limage = Image.new('L', (epd.width, epd.height), 0)  # 255: clear the frame
+    draw = ImageDraw.Draw(Limage)
+    draw.text((20, 0), u'微雪电子', font = font35, fill = epd.GRAY1)
+    draw.text((20, 35), u'微雪电子', font = font35, fill = epd.GRAY2)
+    draw.text((20, 70), u'微雪电子', font = font35, fill = epd.GRAY3)
+    draw.text((40, 110), 'hello world', font = font18, fill = epd.GRAY1)
+    draw.line((10, 140, 60, 190), fill = epd.GRAY1)
+    draw.line((60, 140, 10, 190), fill = epd.GRAY1)
+    draw.rectangle((10, 140, 60, 190), outline = epd.GRAY1)
+    draw.line((95, 140, 95, 190), fill = epd.GRAY1)
+    draw.line((70, 165, 120, 165), fill = epd.GRAY1)
+    draw.arc((70, 140, 120, 190), 0, 360, fill = epd.GRAY1)
+    draw.rectangle((10, 200, 60, 250), fill = epd.GRAY1)
+    draw.chord((70, 200, 120, 250), 0, 360, fill = epd.GRAY1)
+    epd.display_4Gray(epd.getbuffer_4Gray(Limage))
+    time.sleep(2)
+    
+    #display 4Gra bmp
+    Himage = Image.open(os.path.join(picdir, '2in7_Scale.bmp'))
+    epd.display_4Gray(epd.getbuffer_4Gray(Himage))
+    time.sleep(2)
+
+    logging.info("Clear...")
+    epd.clear()
+    logging.info("Goto Sleep...")
+    epd.sleep()
+        
+except IOError as e:
+    logging.info(e)
+    
+except KeyboardInterrupt:    
+    logging.info("ctrl + c:")
+    epd2in7.epdconfig.module_exit()
+    exit()

+ 519 - 0
RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in7_V2.py

@@ -0,0 +1,519 @@
+# *****************************************************************************
+# * | File        :	  epd2in7_V2.py
+# * | Author      :   Waveshare team
+# * | Function    :   Electronic paper driver
+# * | Info        :
+# *----------------
+# * | This version:   V1.0
+# * | Date        :   2022-09-17
+# # | Info        :   python demo
+# -----------------------------------------------------------------------------
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+
+import logging
+from . import epdconfig
+
+# Display resolution
+EPD_WIDTH       = 176
+EPD_HEIGHT      = 264
+
+GRAY1  = 0xff #white
+GRAY2  = 0xC0
+GRAY3  = 0x80 #gray
+GRAY4  = 0x00 #Blackest
+
+logger = logging.getLogger(__name__)
+
+class EPD:
+    def __init__(self):
+        self.reset_pin = epdconfig.RST_PIN
+        self.dc_pin = epdconfig.DC_PIN
+        self.busy_pin = epdconfig.BUSY_PIN
+        self.cs_pin = epdconfig.CS_PIN
+        self.width = EPD_WIDTH
+        self.height = EPD_HEIGHT
+        self.GRAY1  = GRAY1 #white
+        self.GRAY2  = GRAY2
+        self.GRAY3  = GRAY3 #gray
+        self.GRAY4  = GRAY4 #Blackest
+
+    LUT_DATA_4Gray = [
+        0x40,0x48,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+        0x8,0x48,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+        0x2,0x48,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+        0x20,0x48,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+        0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+        0xA,0x19,0x0,0x3,0x8,0x0,0x0,					
+        0x14,0x1,0x0,0x14,0x1,0x0,0x3,					
+        0xA,0x3,0x0,0x8,0x19,0x0,0x0,					
+        0x1,0x0,0x0,0x0,0x0,0x0,0x1,					
+        0x0,0x0,0x0,0x0,0x0,0x0,0x0,					
+        0x0,0x0,0x0,0x0,0x0,0x0,0x0,					
+        0x0,0x0,0x0,0x0,0x0,0x0,0x0,					
+        0x0,0x0,0x0,0x0,0x0,0x0,0x0,					
+        0x0,0x0,0x0,0x0,0x0,0x0,0x0,					
+        0x0,0x0,0x0,0x0,0x0,0x0,0x0,					
+        0x0,0x0,0x0,0x0,0x0,0x0,0x0,					
+        0x0,0x0,0x0,0x0,0x0,0x0,0x0,					
+        0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0,			
+        0x22,0x17,0x41,0x0,0x32,0x1C,
+        ]
+    
+    # Hardware reset
+    def reset(self):
+        epdconfig.digital_write(self.reset_pin, 1)
+        epdconfig.delay_ms(200) 
+        epdconfig.digital_write(self.reset_pin, 0)
+        epdconfig.delay_ms(2)
+        epdconfig.digital_write(self.reset_pin, 1)
+        epdconfig.delay_ms(200)   
+
+    def send_command(self, command):
+        epdconfig.digital_write(self.dc_pin, 0)
+        epdconfig.digital_write(self.cs_pin, 0)
+        epdconfig.spi_writebyte([command])
+        epdconfig.digital_write(self.cs_pin, 1)
+
+    def send_data(self, data):
+        epdconfig.digital_write(self.dc_pin, 1)
+        epdconfig.digital_write(self.cs_pin, 0)
+        epdconfig.spi_writebyte([data])
+        epdconfig.digital_write(self.cs_pin, 1)
+        
+    def ReadBusy(self):        
+        logger.debug("e-Paper busy")
+        while(epdconfig.digital_read(self.busy_pin) == 1):      #  1: idle, 0: busy
+            epdconfig.delay_ms(20)                
+        logger.debug("e-Paper busy release")
+    
+    def TurnOnDisplay(self):
+        self.send_command(0x22) #Display Update Control
+        self.send_data(0xF7)
+        self.send_command(0x20) #Activate Display Update Sequence
+        self.ReadBusy()
+        
+    def TurnOnDisplay_Fast(self):
+        self.send_command(0x22) #Display Update Control
+        self.send_data(0xC7)
+        self.send_command(0x20) #Activate Display Update Sequence
+        self.ReadBusy()
+        
+    def TurnOnDisplay_Partial(self):
+        self.send_command(0x22) #Display Update Control
+        self.send_data(0xFF)
+        self.send_command(0x20) #Activate Display Update Sequence
+        self.ReadBusy()
+        
+    def TurnOnDisplay_4GRAY(self):
+        self.send_command(0x22) #Display Update Control
+        self.send_data(0xC7)
+        self.send_command(0x20) #Activate Display Update Sequence
+        self.ReadBusy()
+        
+    def Lut(self):
+        self.send_command(0x32)
+        for i in range(159):
+            self.send_data(self.LUT_DATA_4Gray[i])
+    
+    def init(self):
+        if (epdconfig.module_init() != 0):
+            return -1
+            
+        # EPD hardware init start
+        self.reset()
+        self.ReadBusy()
+
+        self.send_command(0x12) #SWRESET
+        self.ReadBusy()
+
+        self.send_command(0x45) #set Ram-Y address start/end position          
+        self.send_data(0x00)
+        self.send_data(0x00)
+        self.send_data(0x07) #0x0107-->(263+1)=264
+        self.send_data(0x01)
+
+        self.send_command(0x4F)   # set RAM y address count to 0;    
+        self.send_data(0x00)
+        self.send_data(0x00)
+
+        self.send_command(0x11)  # data entry mode
+        self.send_data(0x03)
+        return 0
+        
+    def init_Fast(self):
+        if (epdconfig.module_init() != 0):
+            return -1
+            
+        # EPD hardware init start
+        self.reset()
+        self.ReadBusy()
+
+        self.send_command(0x12) #SWRESET
+        self.ReadBusy()
+
+        self.send_command(0x12) #SWRESET
+        self.ReadBusy()
+
+        self.send_command(0x18) #Read built-in temperature sensor
+        self.send_data(0x80)	
+
+        self.send_command(0x22) # Load temperature value
+        self.send_data(0xB1)	
+        self.send_command(0x20)	
+        self.ReadBusy()
+
+        self.send_command(0x1A) # Write to temperature register
+        self.send_data(0x64)	
+        self.send_data(0x00)	
+
+        self.send_command(0x45) #set Ram-Y address start/end position          
+        self.send_data(0x00)   
+        self.send_data(0x00)
+        self.send_data(0x07) #0x0107-->(263+1)=264
+        self.send_data(0x01)
+
+        self.send_command(0x4F)   # set RAM y address count to 0;    
+        self.send_data(0x00)
+        self.send_data(0x00)
+
+        self.send_command(0x11)   # data entry mode      
+        self.send_data(0x03)
+
+        self.send_command(0x22) # Load temperature value
+        self.send_data(0x91)	
+        self.send_command(0x20)	
+        self.ReadBusy()
+        return 0
+
+    def Init_4Gray(self):
+        if (epdconfig.module_init() != 0):
+            return -1
+        self.reset()
+        
+        self.send_command(0x12) # soft reset
+        self.ReadBusy();
+
+        self.send_command(0x74) #set analog block control       
+        self.send_data(0x54)
+        self.send_command(0x7E) #set digital block control          
+        self.send_data(0x3B)
+        
+        self.send_command(0x01) #Driver output control      
+        self.send_data(0x07)
+        self.send_data(0x01)
+        self.send_data(0x00) 
+        
+        self.send_command(0x11) #data entry mode       
+        self.send_data(0x03)
+
+        self.send_command(0x44) #set Ram-X address start/end position   
+        self.send_data(0x00)
+        self.send_data(0x15)   #0x15-->(21+1)*8=176
+
+        self.send_command(0x45) #set Ram-Y address start/end position          
+        self.send_data(0x00)
+        self.send_data(0x00)
+        self.send_data(0x07) #0x0107-->(263+1)=264
+        self.send_data(0x01)
+
+
+        self.send_command(0x3C) #BorderWavefrom
+        self.send_data(0x00)	
+
+
+        self.send_command(0x2C)     #VCOM Voltage
+        self.send_data(self.LUT_DATA_4Gray[158])    #0x1C
+
+
+        self.send_command(0x3F) #EOPQ    
+        self.send_data(self.LUT_DATA_4Gray[153])
+
+        self.send_command(0x03) #VGH      
+        self.send_data(self.LUT_DATA_4Gray[154])
+
+        self.send_command(0x04) #      
+        self.send_data(self.LUT_DATA_4Gray[155]) #VSH1   
+        self.send_data(self.LUT_DATA_4Gray[156]) #VSH2   
+        self.send_data(self.LUT_DATA_4Gray[157]) #VSL   
+
+        self.Lut() #LUT
+
+
+        self.send_command(0x4E)   # set RAM x address count to 0;
+        self.send_data(0x00)
+        self.send_command(0x4F)  # set RAM y address count to 0X199;    
+        self.send_data(0x00)
+        self.send_data(0x00)
+        self.ReadBusy()
+        return 0
+
+    def getbuffer(self, image):
+        # logger.debug("bufsiz = ",int(self.width/8) * self.height)
+        buf = [0xFF] * (int(self.width/8) * self.height)
+        image_monocolor = image.convert('1')
+        imwidth, imheight = image_monocolor.size
+        pixels = image_monocolor.load()
+        # logger.debug("imwidth = %d, imheight = %d",imwidth,imheight)
+        if(imwidth == self.width and imheight == self.height):
+            logger.debug("Vertical")
+            for y in range(imheight):
+                for x in range(imwidth):
+                    # Set the bits for the column of pixels at the current position.
+                    if pixels[x, y] == 0:
+                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
+        elif(imwidth == self.height and imheight == self.width):
+            logger.debug("Horizontal")
+            for y in range(imheight):
+                for x in range(imwidth):
+                    newx = y
+                    newy = self.height - x - 1
+                    if pixels[x, y] == 0:
+                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
+        return buf
+    
+    def getbuffer_4Gray(self, image):
+        # logger.debug("bufsiz = ",int(self.width/8) * self.height)
+        buf = [0xFF] * (int(self.width / 4) * self.height)
+        image_monocolor = image.convert('L')
+        imwidth, imheight = image_monocolor.size
+        pixels = image_monocolor.load()
+        i=0
+        # logger.debug("imwidth = %d, imheight = %d",imwidth,imheight)
+        if(imwidth == self.width and imheight == self.height):
+            logger.debug("Vertical")
+            for y in range(imheight):
+                for x in range(imwidth):
+                    # Set the bits for the column of pixels at the current position.
+                    if(pixels[x, y] == 0xC0):
+                        pixels[x, y] = 0x80
+                    elif (pixels[x, y] == 0x80):
+                        pixels[x, y] = 0x40
+                    i= i+1
+                    if(i%4 == 0):
+                        buf[int((x + (y * self.width))/4)] = ((pixels[x-3, y]&0xc0) | (pixels[x-2, y]&0xc0)>>2 | (pixels[x-1, y]&0xc0)>>4 | (pixels[x, y]&0xc0)>>6)
+                        
+        elif(imwidth == self.height and imheight == self.width):
+            logger.debug("Horizontal")
+            for x in range(imwidth):
+                for y in range(imheight):
+                    newx = y
+                    newy = self.height - x - 1
+                    if(pixels[x, y] == 0xC0):
+                        pixels[x, y] = 0x80
+                    elif (pixels[x, y] == 0x80):
+                        pixels[x, y] = 0x40
+                    i= i+1
+                    if(i%4 == 0):
+                        buf[int((newx + (newy * self.width))/4)] = ((pixels[x, y-3]&0xc0) | (pixels[x, y-2]&0xc0)>>2 | (pixels[x, y-1]&0xc0)>>4 | (pixels[x, y]&0xc0)>>6) 
+        return buf
+    
+    def clear(self):
+        if(self.width % 8 == 0):
+            Width = self.width // 8
+        else:
+            Width = self.width // 8 +1
+        Height = self.height
+        self.send_command(0x24)
+        for j in range(Height):
+            for i in range(Width):
+                self.send_data(0XFF)
+        self.TurnOnDisplay()
+    
+    def display(self, image):
+        if(self.width % 8 == 0):
+            Width = self.width // 8
+        else:
+            Width = self.width // 8 +1
+        Height = self.height
+        self.send_command(0x24)
+        for j in range(Height):
+            for i in range(Width):
+                self.send_data(image[i + j * Width])
+        self.TurnOnDisplay()
+        
+    def display_Fast(self, image):
+        if(self.width % 8 == 0):
+            Width = self.width // 8
+        else:
+            Width = self.width // 8 +1
+        Height = self.height
+        self.send_command(0x24)
+        for j in range(Height):
+            for i in range(Width):
+                self.send_data(image[i + j * Width])
+        self.TurnOnDisplay_Fast()
+        
+    def display_Base(self, image):
+        if(self.width % 8 == 0):
+            Width = self.width // 8
+        else:
+            Width = self.width // 8 +1
+        Height = self.height
+        self.send_command(0x24)   #Write Black and White image to RAM
+        for j in range(Height):
+            for i in range(Width):
+                self.send_data(image[i + j * Width])
+                
+        self.send_command(0x26)  #Write Black and White image to RAM
+        for j in range(Height):
+            for i in range(Width):
+                self.send_data(image[i + j * Width])
+        self.TurnOnDisplay()
+        
+    def display_Base_color(self, color):
+        if(self.width % 8 == 0):
+            Width = self.width // 8
+        else:
+            Width = self.width // 8 +1
+        Height = self.height
+        self.send_command(0x24)   #Write Black and White image to RAM
+        for j in range(Height):
+            for i in range(Width):
+                self.send_data(color)
+                
+        self.send_command(0x26)  #Write Black and White image to RAM
+        for j in range(Height):
+            for i in range(Width):
+                self.send_data(color)
+        # self.TurnOnDisplay()
+    
+    def display_Partial(self, Image, Xstart, Ystart, Xend, Yend):
+        if((Xstart % 8 + Xend % 8 == 8 & Xstart % 8 > Xend % 8) | Xstart % 8 + Xend % 8 == 0 | (Xend - Xstart)%8 == 0):
+            Xstart = Xstart // 8
+            Xend = Xend // 8
+        else:
+            Xstart = Xstart // 8 
+            if Xend % 8 == 0:
+                Xend = Xend // 8
+            else:
+                Xend = Xend // 8 + 1
+                
+        if(self.width % 8 == 0):
+            Width = self.width // 8
+        else:
+            Width = self.width // 8 +1
+        Height = self.height
+
+        Xend -= 1
+        Yend -= 1
+        
+        # Reset
+        self.reset()
+
+        self.send_command(0x3C) #BorderWavefrom
+        self.send_data(0x80)
+	
+        self.send_command(0x44)       # set RAM x address start/end, in page 35
+        self.send_data(Xstart & 0xff)    # RAM x address start at 00h;
+        self.send_data(Xend & 0xff)    # RAM x address end at 0fh(15+1)*8->128 
+        self.send_command(0x45)       # set RAM y address start/end, in page 35
+        self.send_data(Ystart & 0xff)    # RAM y address start at 0127h;
+        self.send_data((Ystart>>8) & 0x01)    # RAM y address start at 0127h;
+        self.send_data(Yend & 0xff)    # RAM y address end at 00h;
+        self.send_data((Yend>>8) & 0x01)   
+
+        self.send_command(0x4E)   # set RAM x address count to 0;
+        self.send_data(Xstart & 0xff)
+        self.send_command(0x4F)   # set RAM y address count to 0X127;    
+        self.send_data(Ystart & 0xff)
+        self.send_data((Ystart>>8) & 0x01)
+
+        self.send_command(0x24)   #Write Black and White image to RAM
+        for j in range(Height):
+            for i in range(Width):
+                if((j > Ystart-1) & (j < (Yend + 1)) & (i > Xstart-1) & (i < (Xend + 1))):
+                    self.send_data(Image[i + j * Width])
+        self.TurnOnDisplay_Partial()
+  
+    def display_4Gray(self, image):
+        self.send_command(0x24)
+        for i in range(0, 5808):                     #5808*4  46464
+            temp3=0
+            for j in range(0, 2):
+                temp1 = image[i*2+j]
+                for k in range(0, 2):
+                    temp2 = temp1&0xC0 
+                    if(temp2 == 0xC0):
+                        temp3 |= 0x00
+                    elif(temp2 == 0x00):
+                        temp3 |= 0x01  
+                    elif(temp2 == 0x80): 
+                        temp3 |= 0x01 
+                    else: #0x40
+                        temp3 |= 0x00 
+                    temp3 <<= 1	
+                    
+                    temp1 <<= 2
+                    temp2 = temp1&0xC0 
+                    if(temp2 == 0xC0): 
+                        temp3 |= 0x00
+                    elif(temp2 == 0x00): 
+                        temp3 |= 0x01
+                    elif(temp2 == 0x80):
+                        temp3 |= 0x01
+                    else :   #0x40
+                        temp3 |= 0x00	
+                    if(j!=1 or k!=1):				
+                        temp3 <<= 1
+                    temp1 <<= 2
+            self.send_data(temp3)
+            
+        self.send_command(0x26)	       
+        for i in range(0, 5808):                #5808*4  46464
+            temp3=0
+            for j in range(0, 2):
+                temp1 = image[i*2+j]
+                for k in range(0, 2):
+                    temp2 = temp1&0xC0 
+                    if(temp2 == 0xC0):
+                        temp3 |= 0x00
+                    elif(temp2 == 0x00):
+                        temp3 |= 0x01
+                    elif(temp2 == 0x80):
+                        temp3 |= 0x00
+                    else: #0x40
+                        temp3 |= 0x01 
+                    temp3 <<= 1	
+                    
+                    temp1 <<= 2
+                    temp2 = temp1&0xC0 
+                    if(temp2 == 0xC0): 
+                        temp3 |= 0x00
+                    elif(temp2 == 0x00): 
+                        temp3 |= 0x01
+                    elif(temp2 == 0x80):
+                        temp3 |= 0x00 
+                    else:    #0x40
+                            temp3 |= 0x01	
+                    if(j!=1 or k!=1):					
+                        temp3 <<= 1
+                    temp1 <<= 2
+            self.send_data(temp3)
+        
+        self.TurnOnDisplay_4GRAY()
+
+    def sleep(self):
+        self.send_command(0X10)
+        self.send_data(0x01)
+        
+        epdconfig.delay_ms(2000)
+        epdconfig.module_exit()
+### END OF FILE ###
+

+ 97 - 0
STM32/STM32-F103ZET6/MDK-ARM/DebugConfig/EPD_2in7_V2_test_STM32F103ZE.dbgconf

@@ -0,0 +1,97 @@
+// <<< Use Configuration Wizard in Context Menu >>>
+// <h> Debug MCU Configuration
+//   <o0.0>    DBG_SLEEP
+// <i> Debug Sleep Mode
+// <i> 0: (FCLK=On, HCLK=Off) FCLK is clocked by the system clock as previously configured by the software while HCLK is disabled
+// <i> 1: (FCLK=On, HCLK=On) HCLK is fed by the same clock that is provided to FCLK
+//   <o0.1>    DBG_STOP
+// <i> Debug Stop Mode
+// <i> 0: (FCLK=Off, HCLK=Off) Clock controller disables all clocks
+// <i> 1: (FCLK=On, HCLK=On) FCLK and HCLK are provided by the internal RC oscillator which remains active
+//   <o0.2>    DBG_STANDBY
+// <i> Debug Standby Mode
+// <i> 0: (FCLK=Off, HCLK=Off) The whole digital part is unpowered.
+// <i> 1: (FCLK=On, HCLK=On) Digital part is powered and FCLK and HCLK are provided by the internal RC oscillator which remains active
+//   <o0.8>    DBG_IWDG_STOP
+// <i> Debug independent watchdog stopped when core is halted
+// <i> 0: The watchdog counter clock continues even if the core is halted
+// <i> 1: The watchdog counter clock is stopped when the core is halted
+//   <o0.9>    DBG_WWDG_STOP
+// <i> Debug window watchdog stopped when core is halted
+// <i> 0: The window watchdog counter clock continues even if the core is halted
+// <i> 1: The window watchdog counter clock is stopped when the core is halted
+//   <o0.10>   DBG_TIM1_STOP
+// <i> Timer 1 counter stopped when core is halted
+// <i> 0: The clock of the involved Timer Counter is fed even if the core is halted
+// <i> 1: The clock of the involved Timer counter is stopped when the core is halted
+//   <o0.11>   DBG_TIM2_STOP
+// <i> Timer 2 counter stopped when core is halted
+// <i> 0: The clock of the involved Timer Counter is fed even if the core is halted
+// <i> 1: The clock of the involved Timer counter is stopped when the core is halted
+//   <o0.12>   DBG_TIM3_STOP
+// <i> Timer 3 counter stopped when core is halted
+// <i> 0: The clock of the involved Timer Counter is fed even if the core is halted
+// <i> 1: The clock of the involved Timer counter is stopped when the core is halted
+//   <o0.13>   DBG_TIM4_STOP
+// <i> Timer 4 counter stopped when core is halted
+// <i> 0: The clock of the involved Timer Counter is fed even if the core is halted
+// <i> 1: The clock of the involved Timer counter is stopped when the core is halted
+//   <o0.14>   DBG_CAN1_STOP
+// <i> Debug CAN1 stopped when Core is halted
+// <i> 0: Same behavior as in normal mode
+// <i> 1: CAN1 receive registers are frozen
+//   <o0.15>   DBG_I2C1_SMBUS_TIMEOUT
+// <i> I2C1 SMBUS timeout mode stopped when Core is halted
+// <i> 0: Same behavior as in normal mode
+// <i> 1: The SMBUS timeout is frozen
+//   <o0.16>   DBG_I2C2_SMBUS_TIMEOUT
+// <i> I2C2 SMBUS timeout mode stopped when Core is halted
+// <i> 0: Same behavior as in normal mode
+// <i> 1: The SMBUS timeout is frozen
+//   <o0.17>   DBG_TIM8_STOP
+// <i> Timer 8 counter stopped when core is halted
+// <i> 0: The clock of the involved timer counter is fed even if the core is halted, and the outputs behave normally.
+// <i> 1: The clock of the involved timer counter is stopped when the core is halted, and the outputs are disabled (as if there were an emergency stop in response to a break event).
+//   <o0.18>   DBG_TIM5_STOP
+// <i> Timer 5 counter stopped when core is halted
+// <i> 0: The clock of the involved timer counter is fed even if the core is halted, and the outputs behave normally.
+// <i> 1: The clock of the involved timer counter is stopped when the core is halted, and the outputs are disabled (as if there were an emergency stop in response to a break event).
+//   <o0.19>   DBG_TIM6_STOP
+// <i> Timer 6 counter stopped when core is halted
+// <i> 0: The clock of the involved timer counter is fed even if the core is halted, and the outputs behave normally.
+// <i> 1: The clock of the involved timer counter is stopped when the core is halted, and the outputs are disabled (as if there were an emergency stop in response to a break event).
+//   <o0.20>   DBG_TIM7_STOP
+// <i> Timer 7 counter stopped when core is halted
+// <i> 0: The clock of the involved timer counter is fed even if the core is halted, and the outputs behave normally.
+// <i> 1: The clock of the involved timer counter is stopped when the core is halted, and the outputs are disabled (as if there were an emergency stop in response to a break event).
+//   <o0.21>   DBG_CAN2_STOP
+// <i> Debug CAN2 stopped when Core is halted
+// <i> 0: Same behavior as in normal mode
+// <i> 1: CAN2 receive registers are frozen
+//   <o0.25>   DBG_TIM12_STOP
+// <i> Timer 12 counter stopped when core is halted
+// <i> 0: The clock of the involved timer counter is fed even if the core is halted, and the outputs behave normally.
+// <i> 1: The clock of the involved timer counter is stopped when the core is halted, and the outputs are disabled (as if there were an emergency stop in response to a break event).
+//   <o0.26>   DBG_TIM13_STOP
+// <i> Timer 13 counter stopped when core is halted
+// <i> 0: The clock of the involved timer counter is fed even if the core is halted, and the outputs behave normally.
+// <i> 1: The clock of the involved timer counter is stopped when the core is halted, and the outputs are disabled (as if there were an emergency stop in response to a break event).
+//   <o0.27>   DBG_TIM14_STOP
+// <i> Timer 14 counter stopped when core is halted
+// <i> 0: The clock of the involved timer counter is fed even if the core is halted, and the outputs behave normally.
+// <i> 1: The clock of the involved timer counter is stopped when the core is halted, and the outputs are disabled (as if there were an emergency stop in response to a break event).
+//   <o0.28>   DBG_TIM9_STOP
+// <i> Timer 9 counter stopped when core is halted
+// <i> 0: The clock of the involved timer counter is fed even if the core is halted, and the outputs behave normally.
+// <i> 1: The clock of the involved timer counter is stopped when the core is halted, and the outputs are disabled (as if there were an emergency stop in response to a break event).
+//   <o0.29>   DBG_TIM10_STOP
+// <i> Timer 10 counter stopped when core is halted
+// <i> 0: The clock of the involved timer counter is fed even if the core is halted, and the outputs behave normally.
+// <i> 1: The clock of the involved timer counter is stopped when the core is halted, and the outputs are disabled (as if there were an emergency stop in response to a break event).
+//   <o0.30>   DBG_TIM11_STOP
+// <i> Timer 11 counter stopped when core is halted
+// <i> 0: The clock of the involved timer counter is fed even if the core is halted, and the outputs behave normally.
+// <i> 1: The clock of the involved timer counter is stopped when the core is halted, and the outputs are disabled (as if there were an emergency stop in response to a break event).
+// </h>
+DbgMCU_CR = 0x00000007;
+// <<< end of configuration section >>>

+ 20 - 0
STM32/STM32-F103ZET6/MDK-ARM/RTE/_EPD_2in7_V2_test/RTE_Components.h

@@ -0,0 +1,20 @@
+
+/*
+ * Auto generated Run-Time-Environment Component Configuration File
+ *      *** Do not modify ! ***
+ *
+ * Project: 'epd-demo' 
+ * Target:  'EPD_2in7_V2_test' 
+ */
+
+#ifndef RTE_COMPONENTS_H
+#define RTE_COMPONENTS_H
+
+
+/*
+ * Define the Device Header File: 
+ */
+#define CMSIS_device_header "stm32f10x.h"
+
+
+#endif /* RTE_COMPONENTS_H */

File diff suppressed because it is too large
+ 0 - 1
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.liuyujian


File diff suppressed because it is too large
+ 306 - 47
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx


File diff suppressed because it is too large
+ 7165 - 114
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx


+ 43 - 43
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm

@@ -3,92 +3,92 @@
 <pre>
 <pre>
 <h1>µVision Build Log</h1>
 <h1>µVision Build Log</h1>
 <h2>Tool Versions:</h2>
 <h2>Tool Versions:</h2>
-IDE-Version: ¦ÌVision V5.25.2.0
+IDE-Version: ¦ÌVision V5.26.2.0
 Copyright (C) 2018 ARM Ltd and ARM Germany GmbH. All rights reserved.
 Copyright (C) 2018 ARM Ltd and ARM Germany GmbH. All rights reserved.
-License Information: ass ass, ass, LIC=JL2UH-W872P-CJR6Z-JYZTW-ESB48-R6YF4
+License Information:  ,  , LIC=RC93N-YLJYL-JJH6S-LI3Z1-D1AV2-99PL8
  
  
 Tool Versions:
 Tool Versions:
-Toolchain:       MDK-ARM Plus  Version: 5.25.2.0
-Toolchain Path:  D:\Program Files\keil5\ARM\ARMCC\Bin
+Toolchain:       MDK-ARM Plus  Version: 5.26.2.0
+Toolchain Path:  D:\KEIL\azwz\ARM\ARMCC\Bin
 C Compiler:      Armcc.exe V5.06 update 6 (build 750)
 C Compiler:      Armcc.exe V5.06 update 6 (build 750)
 Assembler:       Armasm.exe V5.06 update 6 (build 750)
 Assembler:       Armasm.exe V5.06 update 6 (build 750)
 Linker/Locator:  ArmLink.exe V5.06 update 6 (build 750)
 Linker/Locator:  ArmLink.exe V5.06 update 6 (build 750)
 Library Manager: ArmAr.exe V5.06 update 6 (build 750)
 Library Manager: ArmAr.exe V5.06 update 6 (build 750)
 Hex Converter:   FromElf.exe V5.06 update 6 (build 750)
 Hex Converter:   FromElf.exe V5.06 update 6 (build 750)
-CPU DLL:         SARMCM3.DLL V5.25.2.0
-Dialog DLL:      DCM.DLL V1.17.1.0
-Target DLL:      STLink\ST-LINKIII-KEIL_SWO.dll V3.0.1.0
-Dialog DLL:      TCM.DLL V1.35.1.0
+CPU DLL:         SARMCM3.DLL V5.26.2.0
+Dialog DLL:      DCM.DLL V1.17.2.0
+Target DLL:      STLink\ST-LINKIII-KEIL_SWO.dll V3.0.5.0
+Dialog DLL:      TCM.DLL V1.36.1.0
  
  
 <h2>Project:</h2>
 <h2>Project:</h2>
-E:\github\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx
-Project File Date:  10/20/2022
+E:\ÏîÄ¿\e-Paper\Code\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx
+Project File Date:  10/27/2022
 
 
 <h2>Output:</h2>
 <h2>Output:</h2>
-*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Program Files\keil5\ARM\ARMCC\Bin'
-Build target 'epd-demo'
+*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\KEIL\azwz\ARM\ARMCC\Bin'
+Build target 'EPD_2in7_V2_test'
 assembling startup_stm32f103xe.s...
 assembling startup_stm32f103xe.s...
-compiling spi.c...
-compiling usart.c...
 compiling gpio.c...
 compiling gpio.c...
-compiling stm32f1xx_hal_msp.c...
-compiling DEV_Config.c...
+compiling usart.c...
 compiling stm32f1xx_it.c...
 compiling stm32f1xx_it.c...
 compiling main.c...
 compiling main.c...
+compiling spi.c...
+compiling ImageData.c...
+compiling DEV_Config.c...
+compiling stm32f1xx_hal_msp.c...
 compiling font8.c...
 compiling font8.c...
+compiling EPD_2in7_V2.c...
 compiling font12.c...
 compiling font12.c...
+compiling EPD_2in7_V2_test.c...
 compiling font12CN.c...
 compiling font12CN.c...
 compiling font16.c...
 compiling font16.c...
-compiling font24CN.c...
 compiling font20.c...
 compiling font20.c...
-compiling GUI_Paint.c...
 compiling font24.c...
 compiling font24.c...
-compiling system_stm32f1xx.c...
-compiling stm32f1xx_hal_gpio.c...
+compiling font24CN.c...
+compiling GUI_Paint.c...
 compiling stm32f1xx_hal_gpio_ex.c...
 compiling stm32f1xx_hal_gpio_ex.c...
-compiling stm32f1xx_hal.c...
+compiling system_stm32f1xx.c...
 compiling stm32f1xx_hal_spi.c...
 compiling stm32f1xx_hal_spi.c...
+compiling stm32f1xx_hal.c...
+compiling stm32f1xx_hal_rcc.c...
+compiling stm32f1xx_hal_pwr.c...
+compiling stm32f1xx_hal_cortex.c...
 compiling stm32f1xx_hal_rcc_ex.c...
 compiling stm32f1xx_hal_rcc_ex.c...
 compiling stm32f1xx_hal_dma.c...
 compiling stm32f1xx_hal_dma.c...
-compiling stm32f1xx_hal_rcc.c...
-compiling stm32f1xx_hal_flash.c...
+compiling stm32f1xx_hal_gpio.c...
 compiling stm32f1xx_hal_tim.c...
 compiling stm32f1xx_hal_tim.c...
-compiling stm32f1xx_hal_exti.c...
 compiling stm32f1xx_hal_tim_ex.c...
 compiling stm32f1xx_hal_tim_ex.c...
-compiling stm32f1xx_hal_pwr.c...
-compiling stm32f1xx_hal_cortex.c...
+compiling stm32f1xx_hal_exti.c...
 compiling stm32f1xx_hal_flash_ex.c...
 compiling stm32f1xx_hal_flash_ex.c...
+compiling stm32f1xx_hal_flash.c...
 compiling stm32f1xx_hal_uart.c...
 compiling stm32f1xx_hal_uart.c...
 linking...
 linking...
-epd-demo\epd-demo.axf: Error: L6218E: Undefined symbol EPD_test (referred from main.o).
-Not enough information to list image symbols.
-Not enough information to list load addresses in the image map.
-Finished: 2 information, 0 warning and 1 error messages.
-"epd-demo\epd-demo.axf" - 1 Error(s), 0 Warning(s).
+Program Size: Code=27652 RO-data=31976 RW-data=236 ZI-data=53428  
+FromELF: creating hex file...
+"epd-demo\epd-demo.axf" - 0 Error(s), 0 Warning(s).
 
 
 <h2>Software Packages used:</h2>
 <h2>Software Packages used:</h2>
 
 
 Package Vendor: ARM
 Package Vendor: ARM
-                http://www.keil.com/pack/ARM.CMSIS.5.7.0.pack
-                ARM.CMSIS.5.7.0
-                CMSIS (Cortex Microcontroller Software Interface Standard)
-   * Component: CORE Version: 5.4.0
+                http://www.keil.com/pack/ARM.CMSIS.5.9.0.pack
+                ARM.CMSIS.5.9.0
+                CMSIS (Common Microcontroller Software Interface Standard)
+   * Component: CORE Version: 5.6.0
 
 
 Package Vendor: Keil
 Package Vendor: Keil
-                http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.3.0.pack
-                Keil.STM32F1xx_DFP.2.3.0
+                http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.1.0.pack
+                Keil.STM32F1xx_DFP.2.1.0
                 STMicroelectronics STM32F1 Series Device Support, Drivers and Examples
                 STMicroelectronics STM32F1 Series Device Support, Drivers and Examples
 
 
 <h2>Collection of Component include folders:</h2>
 <h2>Collection of Component include folders:</h2>
-  .\RTE\_epd-demo
-  D:\Program Files\keil5\ARM\PACK\ARM\CMSIS\5.7.0\CMSIS\Core\Include
-  D:\Program Files\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include
+  .\RTE\_EPD_2in7_V2_test
+  D:\KEIL\azwz\ARM\PACK\ARM\CMSIS\5.9.0\CMSIS\Core\Include
+  D:\KEIL\azwz\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include
 
 
 <h2>Collection of Component Files used:</h2>
 <h2>Collection of Component Files used:</h2>
 
 
-   * Component: ARM::CMSIS:CORE:5.4.0
-Target not created.
-Build Time Elapsed:  00:00:15
+   * Component: ARM::CMSIS:CORE:5.6.0
+Build Time Elapsed:  00:00:13
 </pre>
 </pre>
 </body>
 </body>
 </html>
 </html>

File diff suppressed because it is too large
+ 542 - 476
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm


+ 955 - 24
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map

@@ -16,6 +16,7 @@ Section Cross References
     main.o(.text) refers to gpio.o(.text) for MX_GPIO_Init
     main.o(.text) refers to gpio.o(.text) for MX_GPIO_Init
     main.o(.text) refers to usart.o(.text) for MX_USART1_UART_Init
     main.o(.text) refers to usart.o(.text) for MX_USART1_UART_Init
     main.o(.text) refers to spi.o(.text) for MX_SPI1_Init
     main.o(.text) refers to spi.o(.text) for MX_SPI1_Init
+    main.o(.text) refers to epd_2in7_v2_test.o(.text) for EPD_test
     gpio.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     gpio.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     spi.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Init
     spi.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Init
     spi.o(.text) refers to main.o(.text) for Error_Handler
     spi.o(.text) refers to main.o(.text) for Error_Handler
@@ -27,6 +28,25 @@ Section Cross References
     usart.o(.text) refers to usart.o(.bss) for .bss
     usart.o(.text) refers to usart.o(.bss) for .bss
     stm32f1xx_it.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
     stm32f1xx_it.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
     stm32f1xx_it.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_IncTick
     stm32f1xx_it.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_IncTick
+    epd_2in7_v2_test.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
+    epd_2in7_v2_test.o(.text) refers to dev_config.o(.text) for DEV_Module_Init
+    epd_2in7_v2_test.o(.text) refers to epd_2in7_v2.o(.text) for EPD_2IN7_V2_Init
+    epd_2in7_v2_test.o(.text) refers to malloc.o(i.malloc) for malloc
+    epd_2in7_v2_test.o(.text) refers to gui_paint.o(.text) for Paint_NewImage
+    epd_2in7_v2_test.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
+    epd_2in7_v2_test.o(.text) refers to font16.o(.data) for Font16
+    epd_2in7_v2_test.o(.text) refers to font12.o(.data) for Font12
+    epd_2in7_v2_test.o(.text) refers to font12cn.o(.data) for Font12CN
+    epd_2in7_v2_test.o(.text) refers to font24cn.o(.data) for Font24CN
+    epd_2in7_v2_test.o(.text) refers to imagedata.o(.constdata) for gImage_2in7
+    epd_2in7_v2_test.o(.text) refers to malloc.o(i.free) for free
+    epd_2in7_v2_test.o(.text) refers to font20.o(.data) for Font20
+    epd_2in7_v2_test.o(.text) refers to imagedata.o(.constdata) for gImage_2in7_4Gray
+    epd_2in7_v2.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
+    epd_2in7_v2.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
+    epd_2in7_v2.o(.text) refers to epd_2in7_v2.o(.data) for .data
+    epd_2in7_v2.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte
+    epd_2in7_v2.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
     dev_config.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Transmit
     dev_config.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Transmit
     dev_config.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     dev_config.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     dev_config.o(.text) refers to spi.o(.bss) for hspi1
     dev_config.o(.text) refers to spi.o(.bss) for hspi1
@@ -320,6 +340,38 @@ Section Cross References
     printfa.o(i._printf_pre_padding) refers (Special) to iusefp.o(.text) for __I$use$fp
     printfa.o(i._printf_pre_padding) refers (Special) to iusefp.o(.text) for __I$use$fp
     printfa.o(i._snputc) refers (Special) to iusefp.o(.text) for __I$use$fp
     printfa.o(i._snputc) refers (Special) to iusefp.o(.text) for __I$use$fp
     printfa.o(i._sputc) refers (Special) to iusefp.o(.text) for __I$use$fp
     printfa.o(i._sputc) refers (Special) to iusefp.o(.text) for __I$use$fp
+    malloc.o(i.free) refers to mvars.o(.data) for __microlib_freelist
+    malloc.o(i.malloc) refers to mvars.o(.data) for __microlib_freelist_initialised
+    malloc.o(i.malloc) refers to mvars.o(.data) for __microlib_freelist
+    malloc.o(i.malloc) refers to startup_stm32f103xe.o(HEAP) for __heap_base
+    mallocr.o(i.__free$realloc) refers to mvars.o(.data) for __microlib_freelist
+    mallocr.o(i.__malloc$realloc) refers to mallocr.o(i.internal_alloc) for internal_alloc
+    mallocr.o(i.__malloc$realloc) refers to mvars.o(.data) for __microlib_freelist_initialised
+    mallocr.o(i.__malloc$realloc) refers to startup_stm32f103xe.o(HEAP) for __heap_base
+    mallocr.o(i.__malloc$realloc) refers to mvars.o(.data) for __microlib_freelist
+    mallocr.o(i.internal_alloc) refers to memcpya.o(.text) for __aeabi_memcpy
+    mallocr.o(i.internal_alloc) refers to mvars.o(.data) for __microlib_freelist
+    mallocr.o(i.realloc) refers to mallocr.o(i.__free$realloc) for __free$realloc
+    mallocr.o(i.realloc) refers to mallocr.o(i.internal_alloc) for internal_alloc
+    mallocr.o(i.realloc) refers to mallocr.o(i.__malloc$realloc) for __malloc$realloc
+    mallocr.o(i.realloc) refers to mvars.o(.data) for __microlib_freelist
+    malloca.o(i.__aligned_malloc) refers to mvars.o(.data) for __microlib_freelist_initialised
+    malloca.o(i.__aligned_malloc) refers to mvars.o(.data) for __microlib_freelist
+    malloca.o(i.__aligned_malloc) refers to startup_stm32f103xe.o(HEAP) for __heap_base
+    malloca.o(i.__free$memalign) refers to mvars.o(.data) for __microlib_freelist
+    malloca.o(i.__malloc$memalign) refers to malloca.o(i.__aligned_malloc) for __aligned_malloc
+    mallocra.o(i.__aligned_malloc$realloc) refers to mallocra.o(i.internal_alloc) for internal_alloc
+    mallocra.o(i.__aligned_malloc$realloc) refers to mvars.o(.data) for __microlib_freelist_initialised
+    mallocra.o(i.__aligned_malloc$realloc) refers to startup_stm32f103xe.o(HEAP) for __heap_base
+    mallocra.o(i.__aligned_malloc$realloc) refers to mvars.o(.data) for __microlib_freelist
+    mallocra.o(i.__free$realloc$memalign) refers to mvars.o(.data) for __microlib_freelist
+    mallocra.o(i.__malloc$realloc$memalign) refers to mallocra.o(i.__aligned_malloc$realloc) for __aligned_malloc$realloc
+    mallocra.o(i.__realloc$memalign) refers to mallocra.o(i.__free$realloc$memalign) for __free$realloc$memalign
+    mallocra.o(i.__realloc$memalign) refers to mallocra.o(i.internal_alloc) for internal_alloc
+    mallocra.o(i.__realloc$memalign) refers to mallocra.o(i.__malloc$realloc$memalign) for __malloc$realloc$memalign
+    mallocra.o(i.__realloc$memalign) refers to mvars.o(.data) for __microlib_freelist
+    mallocra.o(i.internal_alloc) refers to memcpya.o(.text) for __aeabi_memcpy
+    mallocra.o(i.internal_alloc) refers to mvars.o(.data) for __microlib_freelist
     fmul.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
     fmul.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
     dadd.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
     dadd.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
     dadd.o(.text) refers to llshl.o(.text) for __aeabi_llsl
     dadd.o(.text) refers to llshl.o(.text) for __aeabi_llsl
@@ -354,7 +406,6 @@ Section Cross References
 
 
 Removing Unused input sections from the image.
 Removing Unused input sections from the image.
 
 
-    Removing startup_stm32f103xe.o(HEAP), (49152 bytes).
     Removing main.o(.rev16_text), (4 bytes).
     Removing main.o(.rev16_text), (4 bytes).
     Removing main.o(.revsh_text), (4 bytes).
     Removing main.o(.revsh_text), (4 bytes).
     Removing main.o(.rrx_text), (6 bytes).
     Removing main.o(.rrx_text), (6 bytes).
@@ -373,30 +424,65 @@ Removing Unused input sections from the image.
     Removing stm32f1xx_hal_msp.o(.rev16_text), (4 bytes).
     Removing stm32f1xx_hal_msp.o(.rev16_text), (4 bytes).
     Removing stm32f1xx_hal_msp.o(.revsh_text), (4 bytes).
     Removing stm32f1xx_hal_msp.o(.revsh_text), (4 bytes).
     Removing stm32f1xx_hal_msp.o(.rrx_text), (6 bytes).
     Removing stm32f1xx_hal_msp.o(.rrx_text), (6 bytes).
+    Removing imagedata.o(.constdata), (656 bytes).
+    Removing imagedata.o(.constdata), (2560 bytes).
+    Removing imagedata.o(.constdata), (5000 bytes).
+    Removing imagedata.o(.constdata), (5000 bytes).
+    Removing imagedata.o(.constdata), (5000 bytes).
+    Removing imagedata.o(.constdata), (2888 bytes).
+    Removing imagedata.o(.constdata), (2888 bytes).
+    Removing imagedata.o(.constdata), (5808 bytes).
+    Removing imagedata.o(.constdata), (5808 bytes).
+    Removing imagedata.o(.constdata), (5808 bytes).
+    Removing imagedata.o(.constdata), (5808 bytes).
+    Removing imagedata.o(.constdata), (4736 bytes).
+    Removing imagedata.o(.constdata), (4736 bytes).
+    Removing imagedata.o(.constdata), (4736 bytes).
+    Removing imagedata.o(.constdata), (4000 bytes).
+    Removing imagedata.o(.constdata), (2756 bytes).
+    Removing imagedata.o(.constdata), (2756 bytes).
+    Removing imagedata.o(.constdata), (2756 bytes).
+    Removing imagedata.o(.constdata), (2756 bytes).
+    Removing imagedata.o(.constdata), (2756 bytes).
+    Removing imagedata.o(.constdata), (5630 bytes).
+    Removing imagedata.o(.constdata), (5630 bytes).
+    Removing imagedata.o(.constdata), (5630 bytes).
+    Removing imagedata.o(.constdata), (10800 bytes).
+    Removing imagedata.o(.constdata), (33606 bytes).
+    Removing imagedata.o(.constdata), (128000 bytes).
+    Removing imagedata.o(.constdata), (15000 bytes).
+    Removing imagedata.o(.constdata), (30000 bytes).
+    Removing imagedata.o(.constdata), (15000 bytes).
+    Removing imagedata.o(.constdata), (15000 bytes).
+    Removing imagedata.o(.constdata), (13728 bytes).
+    Removing imagedata.o(.constdata), (33600 bytes).
+    Removing imagedata.o(.constdata), (38886 bytes).
+    Removing imagedata.o(.constdata), (33600 bytes).
+    Removing imagedata.o(.constdata), (33600 bytes).
+    Removing imagedata.o(.constdata), (38886 bytes).
+    Removing imagedata.o(.constdata), (38886 bytes).
+    Removing imagedata.o(.constdata), (30720 bytes).
+    Removing imagedata.o(.constdata), (48000 bytes).
+    Removing imagedata.o(.constdata), (30720 bytes).
+    Removing imagedata.o(.constdata), (30720 bytes).
+    Removing imagedata.o(.constdata), (48000 bytes).
+    Removing imagedata.o(.constdata), (48000 bytes).
+    Removing epd_2in7_v2_test.o(.rev16_text), (4 bytes).
+    Removing epd_2in7_v2_test.o(.revsh_text), (4 bytes).
+    Removing epd_2in7_v2_test.o(.rrx_text), (6 bytes).
+    Removing epd_2in7_v2.o(.rev16_text), (4 bytes).
+    Removing epd_2in7_v2.o(.revsh_text), (4 bytes).
+    Removing epd_2in7_v2.o(.rrx_text), (6 bytes).
     Removing dev_config.o(.rev16_text), (4 bytes).
     Removing dev_config.o(.rev16_text), (4 bytes).
     Removing dev_config.o(.revsh_text), (4 bytes).
     Removing dev_config.o(.revsh_text), (4 bytes).
     Removing dev_config.o(.rrx_text), (6 bytes).
     Removing dev_config.o(.rrx_text), (6 bytes).
-    Removing dev_config.o(.text), (104 bytes).
     Removing gui_paint.o(.rev16_text), (4 bytes).
     Removing gui_paint.o(.rev16_text), (4 bytes).
     Removing gui_paint.o(.revsh_text), (4 bytes).
     Removing gui_paint.o(.revsh_text), (4 bytes).
     Removing gui_paint.o(.rrx_text), (6 bytes).
     Removing gui_paint.o(.rrx_text), (6 bytes).
-    Removing gui_paint.o(.text), (4020 bytes).
-    Removing gui_paint.o(.bss), (24 bytes).
-    Removing gui_paint.o(.conststring), (236 bytes).
     Removing font8.o(.constdata), (760 bytes).
     Removing font8.o(.constdata), (760 bytes).
     Removing font8.o(.data), (8 bytes).
     Removing font8.o(.data), (8 bytes).
-    Removing font12.o(.constdata), (1140 bytes).
-    Removing font12.o(.data), (8 bytes).
-    Removing font12cn.o(.constdata), (1494 bytes).
-    Removing font12cn.o(.data), (12 bytes).
-    Removing font16.o(.constdata), (3040 bytes).
-    Removing font16.o(.data), (8 bytes).
-    Removing font20.o(.constdata), (3800 bytes).
-    Removing font20.o(.data), (8 bytes).
     Removing font24.o(.constdata), (6840 bytes).
     Removing font24.o(.constdata), (6840 bytes).
     Removing font24.o(.data), (8 bytes).
     Removing font24.o(.data), (8 bytes).
-    Removing font24cn.o(.constdata), (4482 bytes).
-    Removing font24cn.o(.data), (12 bytes).
     Removing system_stm32f1xx.o(.rev16_text), (4 bytes).
     Removing system_stm32f1xx.o(.rev16_text), (4 bytes).
     Removing system_stm32f1xx.o(.revsh_text), (4 bytes).
     Removing system_stm32f1xx.o(.revsh_text), (4 bytes).
     Removing system_stm32f1xx.o(.rrx_text), (6 bytes).
     Removing system_stm32f1xx.o(.rrx_text), (6 bytes).
@@ -452,17 +538,862 @@ Removing Unused input sections from the image.
     Removing stm32f1xx_hal_uart.o(.rev16_text), (4 bytes).
     Removing stm32f1xx_hal_uart.o(.rev16_text), (4 bytes).
     Removing stm32f1xx_hal_uart.o(.revsh_text), (4 bytes).
     Removing stm32f1xx_hal_uart.o(.revsh_text), (4 bytes).
     Removing stm32f1xx_hal_uart.o(.rrx_text), (6 bytes).
     Removing stm32f1xx_hal_uart.o(.rrx_text), (6 bytes).
-    Removing fmul.o(.text), (100 bytes).
-    Removing dadd.o(.text), (334 bytes).
-    Removing dflti.o(.text), (34 bytes).
-    Removing ffixi.o(.text), (50 bytes).
-    Removing dfixi.o(.text), (62 bytes).
-    Removing d2f.o(.text), (56 bytes).
-    Removing fepilogue.o(.text), (110 bytes).
-    Removing depilogue.o(.text), (186 bytes).
     Removing dmul.o(.text), (228 bytes).
     Removing dmul.o(.text), (228 bytes).
     Removing ddiv.o(.text), (222 bytes).
     Removing ddiv.o(.text), (222 bytes).
     Removing dfixul.o(.text), (48 bytes).
     Removing dfixul.o(.text), (48 bytes).
     Removing cdrcmple.o(.text), (48 bytes).
     Removing cdrcmple.o(.text), (48 bytes).
 
 
-110 unused section(s) (total 80782 bytes) removed from the image.
+136 unused section(s) (total 823192 bytes) removed from the image.
+
+==============================================================================
+
+Image Symbol Table
+
+    Local Symbols
+
+    Symbol Name                              Value     Ov Type        Size  Object(Section)
+
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c 0x00000000   Number         0  stm32f1xx_hal.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c 0x00000000   Number         0  stm32f1xx_hal_cortex.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c 0x00000000   Number         0  stm32f1xx_hal_dma.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c 0x00000000   Number         0  stm32f1xx_hal_exti.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c 0x00000000   Number         0  stm32f1xx_hal_flash.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c 0x00000000   Number         0  stm32f1xx_hal_flash_ex.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c 0x00000000   Number         0  stm32f1xx_hal_gpio.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c 0x00000000   Number         0  stm32f1xx_hal_gpio_ex.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c 0x00000000   Number         0  stm32f1xx_hal_pwr.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c 0x00000000   Number         0  stm32f1xx_hal_rcc.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c 0x00000000   Number         0  stm32f1xx_hal_rcc_ex.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c 0x00000000   Number         0  stm32f1xx_hal_spi.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c 0x00000000   Number         0  stm32f1xx_hal_tim.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c 0x00000000   Number         0  stm32f1xx_hal_tim_ex.o ABSOLUTE
+    ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c 0x00000000   Number         0  stm32f1xx_hal_uart.o ABSOLUTE
+    ../Src/gpio.c                            0x00000000   Number         0  gpio.o ABSOLUTE
+    ../Src/main.c                            0x00000000   Number         0  main.o ABSOLUTE
+    ../Src/spi.c                             0x00000000   Number         0  spi.o ABSOLUTE
+    ../Src/stm32f1xx_hal_msp.c               0x00000000   Number         0  stm32f1xx_hal_msp.o ABSOLUTE
+    ../Src/stm32f1xx_it.c                    0x00000000   Number         0  stm32f1xx_it.o ABSOLUTE
+    ../Src/system_stm32f1xx.c                0x00000000   Number         0  system_stm32f1xx.o ABSOLUTE
+    ../Src/usart.c                           0x00000000   Number         0  usart.o ABSOLUTE
+    ../clib/microlib/division.c              0x00000000   Number         0  uidiv.o ABSOLUTE
+    ../clib/microlib/division.c              0x00000000   Number         0  uldiv.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry5.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry2.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9a.o ABSOLUTE
+    ../clib/microlib/longlong.c              0x00000000   Number         0  llushr.o ABSOLUTE
+    ../clib/microlib/longlong.c              0x00000000   Number         0  llshl.o ABSOLUTE
+    ../clib/microlib/longlong.c              0x00000000   Number         0  llsshr.o ABSOLUTE
+    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloc.o ABSOLUTE
+    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocr.o ABSOLUTE
+    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloca.o ABSOLUTE
+    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocra.o ABSOLUTE
+    ../clib/microlib/malloc/mvars.c          0x00000000   Number         0  mvars.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf6.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfa.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf8.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf7.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf5.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf4.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf3.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf2.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf1.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf0.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfb.o ABSOLUTE
+    ../clib/microlib/printf/stubs.s          0x00000000   Number         0  stubs.o ABSOLUTE
+    ../clib/microlib/stdio/streams.c         0x00000000   Number         0  stdout.o ABSOLUTE
+    ../clib/microlib/string/memcpy.c         0x00000000   Number         0  memcpya.o ABSOLUTE
+    ../clib/microlib/string/memcpy.c         0x00000000   Number         0  memcpyb.o ABSOLUTE
+    ../clib/microlib/string/memset.c         0x00000000   Number         0  memseta.o ABSOLUTE
+    ../clib/microlib/stubs.s                 0x00000000   Number         0  iusefp.o ABSOLUTE
+    ../fplib/microlib/d2f.c                  0x00000000   Number         0  d2f.o ABSOLUTE
+    ../fplib/microlib/fpadd.c                0x00000000   Number         0  dadd.o ABSOLUTE
+    ../fplib/microlib/fpdiv.c                0x00000000   Number         0  ddiv.o ABSOLUTE
+    ../fplib/microlib/fpepilogue.c           0x00000000   Number         0  depilogue.o ABSOLUTE
+    ../fplib/microlib/fpepilogue.c           0x00000000   Number         0  fepilogue.o ABSOLUTE
+    ../fplib/microlib/fpfix.c                0x00000000   Number         0  dfixi.o ABSOLUTE
+    ../fplib/microlib/fpfix.c                0x00000000   Number         0  ffixi.o ABSOLUTE
+    ../fplib/microlib/fpfix.c                0x00000000   Number         0  dfixul.o ABSOLUTE
+    ../fplib/microlib/fpflt.c                0x00000000   Number         0  dflti.o ABSOLUTE
+    ../fplib/microlib/fpmul.c                0x00000000   Number         0  fmul.o ABSOLUTE
+    ../fplib/microlib/fpmul.c                0x00000000   Number         0  dmul.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c 0x00000000   Number         0  stm32f1xx_hal.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c 0x00000000   Number         0  stm32f1xx_hal_cortex.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c 0x00000000   Number         0  stm32f1xx_hal_dma.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c 0x00000000   Number         0  stm32f1xx_hal_exti.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c 0x00000000   Number         0  stm32f1xx_hal_flash.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c 0x00000000   Number         0  stm32f1xx_hal_flash_ex.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c 0x00000000   Number         0  stm32f1xx_hal_gpio.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c 0x00000000   Number         0  stm32f1xx_hal_gpio_ex.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c 0x00000000   Number         0  stm32f1xx_hal_pwr.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c 0x00000000   Number         0  stm32f1xx_hal_rcc.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c 0x00000000   Number         0  stm32f1xx_hal_rcc_ex.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_spi.c 0x00000000   Number         0  stm32f1xx_hal_spi.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c 0x00000000   Number         0  stm32f1xx_hal_tim.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c 0x00000000   Number         0  stm32f1xx_hal_tim_ex.o ABSOLUTE
+    ..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c 0x00000000   Number         0  stm32f1xx_hal_uart.o ABSOLUTE
+    ..\Src\gpio.c                            0x00000000   Number         0  gpio.o ABSOLUTE
+    ..\Src\main.c                            0x00000000   Number         0  main.o ABSOLUTE
+    ..\Src\spi.c                             0x00000000   Number         0  spi.o ABSOLUTE
+    ..\Src\stm32f1xx_hal_msp.c               0x00000000   Number         0  stm32f1xx_hal_msp.o ABSOLUTE
+    ..\Src\stm32f1xx_it.c                    0x00000000   Number         0  stm32f1xx_it.o ABSOLUTE
+    ..\Src\system_stm32f1xx.c                0x00000000   Number         0  system_stm32f1xx.o ABSOLUTE
+    ..\Src\usart.c                           0x00000000   Number         0  usart.o ABSOLUTE
+    ..\User\Config\DEV_Config.c              0x00000000   Number         0  dev_config.o ABSOLUTE
+    ..\User\Examples\EPD_2in7_V2_test.c      0x00000000   Number         0  epd_2in7_v2_test.o ABSOLUTE
+    ..\User\Examples\ImageData.c             0x00000000   Number         0  imagedata.o ABSOLUTE
+    ..\User\Fonts\font12.c                   0x00000000   Number         0  font12.o ABSOLUTE
+    ..\User\Fonts\font12CN.c                 0x00000000   Number         0  font12cn.o ABSOLUTE
+    ..\User\Fonts\font16.c                   0x00000000   Number         0  font16.o ABSOLUTE
+    ..\User\Fonts\font20.c                   0x00000000   Number         0  font20.o ABSOLUTE
+    ..\User\Fonts\font24.c                   0x00000000   Number         0  font24.o ABSOLUTE
+    ..\User\Fonts\font24CN.c                 0x00000000   Number         0  font24cn.o ABSOLUTE
+    ..\User\Fonts\font8.c                    0x00000000   Number         0  font8.o ABSOLUTE
+    ..\User\GUI\GUI_Paint.c                  0x00000000   Number         0  gui_paint.o ABSOLUTE
+    ..\User\e-Paper\EPD_2in7_V2.c            0x00000000   Number         0  epd_2in7_v2.o ABSOLUTE
+    ..\\User\\Config\\DEV_Config.c           0x00000000   Number         0  dev_config.o ABSOLUTE
+    ..\\User\\Examples\\EPD_2in7_V2_test.c   0x00000000   Number         0  epd_2in7_v2_test.o ABSOLUTE
+    ..\\User\\GUI\\GUI_Paint.c               0x00000000   Number         0  gui_paint.o ABSOLUTE
+    ..\\User\\e-Paper\\EPD_2in7_V2.c         0x00000000   Number         0  epd_2in7_v2.o ABSOLUTE
+    cdrcmple.s                               0x00000000   Number         0  cdrcmple.o ABSOLUTE
+    dc.s                                     0x00000000   Number         0  dc.o ABSOLUTE
+    handlers.s                               0x00000000   Number         0  handlers.o ABSOLUTE
+    init.s                                   0x00000000   Number         0  init.o ABSOLUTE
+    startup_stm32f103xe.s                    0x00000000   Number         0  startup_stm32f103xe.o ABSOLUTE
+    RESET                                    0x08000000   Section      304  startup_stm32f103xe.o(RESET)
+    .ARM.Collect$$$$00000000                 0x08000130   Section        0  entry.o(.ARM.Collect$$$$00000000)
+    .ARM.Collect$$$$00000001                 0x08000130   Section        4  entry2.o(.ARM.Collect$$$$00000001)
+    .ARM.Collect$$$$00000004                 0x08000134   Section        4  entry5.o(.ARM.Collect$$$$00000004)
+    .ARM.Collect$$$$00000008                 0x08000138   Section        0  entry7b.o(.ARM.Collect$$$$00000008)
+    .ARM.Collect$$$$0000000A                 0x08000138   Section        0  entry8b.o(.ARM.Collect$$$$0000000A)
+    .ARM.Collect$$$$0000000B                 0x08000138   Section        8  entry9a.o(.ARM.Collect$$$$0000000B)
+    .ARM.Collect$$$$0000000D                 0x08000140   Section        0  entry10a.o(.ARM.Collect$$$$0000000D)
+    .ARM.Collect$$$$0000000F                 0x08000140   Section        0  entry11a.o(.ARM.Collect$$$$0000000F)
+    .ARM.Collect$$$$00002712                 0x08000140   Section        4  entry2.o(.ARM.Collect$$$$00002712)
+    __lit__00000000                          0x08000140   Data           4  entry2.o(.ARM.Collect$$$$00002712)
+    .text                                    0x08000144   Section       36  startup_stm32f103xe.o(.text)
+    .text                                    0x08000168   Section        0  main.o(.text)
+    .text                                    0x08000200   Section        0  gpio.o(.text)
+    .text                                    0x08000260   Section        0  spi.o(.text)
+    .text                                    0x0800031c   Section        0  usart.o(.text)
+    .text                                    0x080003f4   Section        0  stm32f1xx_it.o(.text)
+    .text                                    0x08000424   Section        0  stm32f1xx_hal_msp.o(.text)
+    .text                                    0x08000460   Section        0  epd_2in7_v2_test.o(.text)
+    .text                                    0x08000cac   Section        0  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_Reset                        0x08000cad   Thumb Code    56  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_SendCommand                  0x08001237   Thumb Code    46  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_SendData                     0x08001265   Thumb Code    46  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_ReadBusy                     0x08001293   Thumb Code    38  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_TurnOnDisplay                0x080012b9   Thumb Code    26  epd_2in7_v2.o(.text)
+    .text                                    0x08001310   Section        0  dev_config.o(.text)
+    .text                                    0x08001378   Section        0  gui_paint.o(.text)
+    .text                                    0x0800232c   Section        0  system_stm32f1xx.o(.text)
+    .text                                    0x080023f0   Section        0  stm32f1xx_hal_spi.o(.text)
+    SPI_WaitFlagStateUntilTimeout            0x080024d9   Thumb Code   210  stm32f1xx_hal_spi.o(.text)
+    SPI_EndRxTxTransaction                   0x080025ab   Thumb Code    36  stm32f1xx_hal_spi.o(.text)
+    SPI_EndRxTransaction                     0x0800276b   Thumb Code   112  stm32f1xx_hal_spi.o(.text)
+    SPI_CloseTx_ISR                          0x08002b4b   Thumb Code   130  stm32f1xx_hal_spi.o(.text)
+    SPI_TxISR_8BIT                           0x08002bcd   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_TxISR_16BIT                          0x08002beb   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_CloseRx_ISR                          0x08002cad   Thumb Code    76  stm32f1xx_hal_spi.o(.text)
+    SPI_RxISR_8BIT                           0x08002cf9   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_RxISR_16BIT                          0x08002d17   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_CloseRxTx_ISR                        0x08002d37   Thumb Code   158  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesTxISR_8BIT                     0x08002dd5   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesRxISR_8BIT                     0x08002e03   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesTxISR_16BIT                    0x08002e31   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesRxISR_16BIT                    0x08002e5f   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAError                             0x08002ff9   Thumb Code    34  stm32f1xx_hal_spi.o(.text)
+    SPI_DMATransmitCplt                      0x0800301b   Thumb Code   102  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAHalfTransmitCplt                  0x08003083   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAReceiveCplt                       0x0800315d   Thumb Code   110  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAHalfReceiveCplt                   0x080031cd   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
+    SPI_DMATransmitReceiveCplt               0x080031d7   Thumb Code    92  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAHalfTransmitReceiveCplt           0x08003235   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
+    SPI_AbortRx_ISR                          0x08003483   Thumb Code    82  stm32f1xx_hal_spi.o(.text)
+    SPI_AbortTx_ISR                          0x080034d5   Thumb Code    28  stm32f1xx_hal_spi.o(.text)
+    SPI_DMARxAbortCallback                   0x08003615   Thumb Code    98  stm32f1xx_hal_spi.o(.text)
+    SPI_DMATxAbortCallback                   0x08003677   Thumb Code   114  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAAbortOnError                      0x080038c1   Thumb Code    16  stm32f1xx_hal_spi.o(.text)
+    .text                                    0x080039d8   Section        0  stm32f1xx_hal.o(.text)
+    .text                                    0x08003b60   Section        0  stm32f1xx_hal_rcc.o(.text)
+    RCC_Delay                                0x08003c5b   Thumb Code    32  stm32f1xx_hal_rcc.o(.text)
+    .text                                    0x08004428   Section        0  stm32f1xx_hal_gpio.o(.text)
+    .text                                    0x080047fc   Section        0  stm32f1xx_hal_dma.o(.text)
+    DMA_SetConfig                            0x0800490b   Thumb Code    56  stm32f1xx_hal_dma.o(.text)
+    .text                                    0x08005444   Section        0  stm32f1xx_hal_cortex.o(.text)
+    .text                                    0x08005668   Section        0  stm32f1xx_hal_uart.o(.text)
+    UART_SetConfig                           0x08005669   Thumb Code   194  stm32f1xx_hal_uart.o(.text)
+    UART_WaitOnFlagUntilTimeout              0x08005949   Thumb Code   120  stm32f1xx_hal_uart.o(.text)
+    UART_EndRxTransfer                       0x08005bf9   Thumb Code    28  stm32f1xx_hal_uart.o(.text)
+    UART_EndTxTransfer                       0x08005c15   Thumb Code    18  stm32f1xx_hal_uart.o(.text)
+    UART_DMAError                            0x08005c27   Thumb Code    74  stm32f1xx_hal_uart.o(.text)
+    UART_DMATxHalfCplt                       0x08005c73   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
+    UART_DMATransmitCplt                     0x08005c7f   Thumb Code    48  stm32f1xx_hal_uart.o(.text)
+    UART_DMARxHalfCplt                       0x08005d3b   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
+    UART_DMAReceiveCplt                      0x08005d47   Thumb Code    62  stm32f1xx_hal_uart.o(.text)
+    UART_DMARxAbortCallback                  0x0800607b   Thumb Code    44  stm32f1xx_hal_uart.o(.text)
+    UART_DMATxAbortCallback                  0x080060a7   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
+    UART_DMATxOnlyAbortCallback              0x0800619d   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
+    UART_DMARxOnlyAbortCallback              0x08006211   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
+    UART_EndTransmit_IT                      0x0800628d   Thumb Code    26  stm32f1xx_hal_uart.o(.text)
+    UART_Transmit_IT                         0x080062a7   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
+    UART_DMAAbortOnError                     0x08006305   Thumb Code    16  stm32f1xx_hal_uart.o(.text)
+    UART_Receive_IT                          0x08006315   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
+    .text                                    0x08006604   Section        0  llushr.o(.text)
+    .text                                    0x08006624   Section        0  memseta.o(.text)
+    .text                                    0x08006648   Section        0  fmul.o(.text)
+    .text                                    0x080066ac   Section        0  dadd.o(.text)
+    .text                                    0x080067fa   Section        0  dflti.o(.text)
+    .text                                    0x0800681c   Section        0  ffixi.o(.text)
+    .text                                    0x0800684e   Section        0  dfixi.o(.text)
+    .text                                    0x0800688c   Section        0  d2f.o(.text)
+    .text                                    0x080068c4   Section        0  uidiv.o(.text)
+    .text                                    0x080068f0   Section        0  llshl.o(.text)
+    .text                                    0x0800690e   Section        0  llsshr.o(.text)
+    .text                                    0x08006932   Section        0  fepilogue.o(.text)
+    .text                                    0x08006932   Section        0  iusefp.o(.text)
+    .text                                    0x080069a0   Section        0  depilogue.o(.text)
+    .text                                    0x08006a5c   Section       36  init.o(.text)
+    i.__0printf$3                            0x08006a80   Section        0  printf3.o(i.__0printf$3)
+    i.__scatterload_copy                     0x08006aa0   Section       14  handlers.o(i.__scatterload_copy)
+    i.__scatterload_null                     0x08006aae   Section        2  handlers.o(i.__scatterload_null)
+    i.__scatterload_zeroinit                 0x08006ab0   Section       14  handlers.o(i.__scatterload_zeroinit)
+    i._printf_core                           0x08006ac0   Section        0  printf3.o(i._printf_core)
+    _printf_core                             0x08006ac1   Thumb Code   436  printf3.o(i._printf_core)
+    i.free                                   0x08006c78   Section        0  malloc.o(i.free)
+    i.malloc                                 0x08006cc8   Section        0  malloc.o(i.malloc)
+    .constdata                               0x08006d34   Section     5808  imagedata.o(.constdata)
+    .constdata                               0x080083e4   Section    11616  imagedata.o(.constdata)
+    .constdata                               0x0800b144   Section     1140  font12.o(.constdata)
+    .constdata                               0x0800b5b8   Section     1494  font12cn.o(.constdata)
+    .constdata                               0x0800bb8e   Section     3040  font16.o(.constdata)
+    .constdata                               0x0800c76e   Section     3800  font20.o(.constdata)
+    .constdata                               0x0800d646   Section     4482  font24cn.o(.constdata)
+    .constdata                               0x0800e7c8   Section       16  system_stm32f1xx.o(.constdata)
+    .constdata                               0x0800e7d8   Section        8  system_stm32f1xx.o(.constdata)
+    .conststring                             0x0800e7e0   Section      233  gui_paint.o(.conststring)
+    .data                                    0x20000000   Section      159  epd_2in7_v2.o(.data)
+    .data                                    0x200000a0   Section        8  font12.o(.data)
+    .data                                    0x200000a8   Section       12  font12cn.o(.data)
+    .data                                    0x200000b4   Section        8  font16.o(.data)
+    .data                                    0x200000bc   Section        8  font20.o(.data)
+    .data                                    0x200000c4   Section       12  font24cn.o(.data)
+    .data                                    0x200000d0   Section        4  system_stm32f1xx.o(.data)
+    .data                                    0x200000d4   Section       12  stm32f1xx_hal.o(.data)
+    .data                                    0x200000e0   Section        4  stdout.o(.data)
+    .data                                    0x200000e4   Section        4  mvars.o(.data)
+    .data                                    0x200000e8   Section        4  mvars.o(.data)
+    .bss                                     0x200000ec   Section       88  spi.o(.bss)
+    .bss                                     0x20000144   Section       64  usart.o(.bss)
+    .bss                                     0x20000184   Section       24  gui_paint.o(.bss)
+    HEAP                                     0x200001a0   Section    49152  startup_stm32f103xe.o(HEAP)
+    STACK                                    0x2000c1a0   Section     4096  startup_stm32f103xe.o(STACK)
+
+    Global Symbols
+
+    Symbol Name                              Value     Ov Type        Size  Object(Section)
+
+    BuildAttributes$$THM_ISAv4$P$D$K$B$S$PE$A:L22UL41UL21$X:L11$S22US41US21$IEEE1$IW$USESV6$~STKCKD$USESV7$~SHL$OTIME$ROPI$EBA8$MICROLIB$REQ8$PRES8$EABIv2 0x00000000   Number         0  anon$$obj.o ABSOLUTE
+    __ARM_use_no_argv                        0x00000000   Number         0  main.o ABSOLUTE
+    _printf_a                                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_c                                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_charcount                        0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_d                                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_e                                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_f                                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_flags                            0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_fp_dec                           0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_fp_hex                           0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_g                                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_i                                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_int_dec                          0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_l                                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_lc                               0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_ll                               0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_lld                              0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_lli                              0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_llo                              0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_llu                              0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_llx                              0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_longlong_dec                     0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_longlong_hex                     0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_longlong_oct                     0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_ls                               0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_mbtowc                           0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_n                                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_o                                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_p                                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_percent                          0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_pre_padding                      0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_return_value                     0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_s                                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_sizespec                         0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_str                              0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_truncate_signed                  0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_truncate_unsigned                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_u                                0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_wc                               0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_wctomb                           0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_widthprec                        0x00000000   Number         0  stubs.o ABSOLUTE
+    _printf_x                                0x00000000   Number         0  stubs.o ABSOLUTE
+    __cpp_initialize__aeabi_                  - Undefined Weak Reference
+    __cxa_finalize                            - Undefined Weak Reference
+    __decompress                              - Undefined Weak Reference
+    _clock_init                               - Undefined Weak Reference
+    _microlib_exit                            - Undefined Weak Reference
+    __Vectors_Size                           0x00000130   Number         0  startup_stm32f103xe.o ABSOLUTE
+    __Vectors                                0x08000000   Data           4  startup_stm32f103xe.o(RESET)
+    __Vectors_End                            0x08000130   Data           0  startup_stm32f103xe.o(RESET)
+    __main                                   0x08000131   Thumb Code     0  entry.o(.ARM.Collect$$$$00000000)
+    _main_stk                                0x08000131   Thumb Code     0  entry2.o(.ARM.Collect$$$$00000001)
+    _main_scatterload                        0x08000135   Thumb Code     0  entry5.o(.ARM.Collect$$$$00000004)
+    __main_after_scatterload                 0x08000139   Thumb Code     0  entry5.o(.ARM.Collect$$$$00000004)
+    _main_clock                              0x08000139   Thumb Code     0  entry7b.o(.ARM.Collect$$$$00000008)
+    _main_cpp_init                           0x08000139   Thumb Code     0  entry8b.o(.ARM.Collect$$$$0000000A)
+    _main_init                               0x08000139   Thumb Code     0  entry9a.o(.ARM.Collect$$$$0000000B)
+    __rt_final_cpp                           0x08000141   Thumb Code     0  entry10a.o(.ARM.Collect$$$$0000000D)
+    __rt_final_exit                          0x08000141   Thumb Code     0  entry11a.o(.ARM.Collect$$$$0000000F)
+    Reset_Handler                            0x08000145   Thumb Code     8  startup_stm32f103xe.o(.text)
+    ADC1_2_IRQHandler                        0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    ADC3_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    CAN1_RX1_IRQHandler                      0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    CAN1_SCE_IRQHandler                      0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    DMA1_Channel1_IRQHandler                 0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    DMA1_Channel2_IRQHandler                 0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    DMA1_Channel3_IRQHandler                 0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    DMA1_Channel4_IRQHandler                 0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    DMA1_Channel5_IRQHandler                 0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    DMA1_Channel6_IRQHandler                 0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    DMA1_Channel7_IRQHandler                 0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    DMA2_Channel1_IRQHandler                 0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    DMA2_Channel2_IRQHandler                 0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    DMA2_Channel3_IRQHandler                 0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    DMA2_Channel4_5_IRQHandler               0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    EXTI0_IRQHandler                         0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    EXTI15_10_IRQHandler                     0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    EXTI1_IRQHandler                         0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    EXTI2_IRQHandler                         0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    EXTI3_IRQHandler                         0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    EXTI4_IRQHandler                         0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    EXTI9_5_IRQHandler                       0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    FLASH_IRQHandler                         0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    FSMC_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    I2C1_ER_IRQHandler                       0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    I2C1_EV_IRQHandler                       0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    I2C2_ER_IRQHandler                       0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    I2C2_EV_IRQHandler                       0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    PVD_IRQHandler                           0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    RCC_IRQHandler                           0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    RTC_Alarm_IRQHandler                     0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    RTC_IRQHandler                           0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    SDIO_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    SPI1_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    SPI2_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    SPI3_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TAMPER_IRQHandler                        0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM1_BRK_IRQHandler                      0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM1_CC_IRQHandler                       0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM1_TRG_COM_IRQHandler                  0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM1_UP_IRQHandler                       0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM2_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM3_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM4_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM5_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM6_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM7_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM8_BRK_IRQHandler                      0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM8_CC_IRQHandler                       0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM8_TRG_COM_IRQHandler                  0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    TIM8_UP_IRQHandler                       0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    UART4_IRQHandler                         0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    UART5_IRQHandler                         0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    USART1_IRQHandler                        0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    USART2_IRQHandler                        0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    USART3_IRQHandler                        0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    USBWakeUp_IRQHandler                     0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    USB_HP_CAN1_TX_IRQHandler                0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    USB_LP_CAN1_RX0_IRQHandler               0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    WWDG_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
+    Error_Handler                            0x08000169   Thumb Code     8  main.o(.text)
+    SystemClock_Config                       0x08000171   Thumb Code    88  main.o(.text)
+    main                                     0x080001c9   Thumb Code    36  main.o(.text)
+    MX_GPIO_Init                             0x08000201   Thumb Code    86  gpio.o(.text)
+    MX_SPI1_Init                             0x08000261   Thumb Code    62  spi.o(.text)
+    HAL_SPI_MspInit                          0x0800029f   Thumb Code    80  spi.o(.text)
+    HAL_SPI_MspDeInit                        0x080002ef   Thumb Code    28  spi.o(.text)
+    MX_USART1_UART_Init                      0x0800031d   Thumb Code    48  usart.o(.text)
+    HAL_UART_MspInit                         0x0800034d   Thumb Code   100  usart.o(.text)
+    HAL_UART_MspDeInit                       0x080003b1   Thumb Code    30  usart.o(.text)
+    fputc                                    0x080003cf   Thumb Code    20  usart.o(.text)
+    NMI_Handler                              0x080003f5   Thumb Code     2  stm32f1xx_it.o(.text)
+    HardFault_Handler                        0x080003f7   Thumb Code     8  stm32f1xx_it.o(.text)
+    MemManage_Handler                        0x080003ff   Thumb Code     2  stm32f1xx_it.o(.text)
+    BusFault_Handler                         0x08000401   Thumb Code     2  stm32f1xx_it.o(.text)
+    UsageFault_Handler                       0x08000403   Thumb Code     2  stm32f1xx_it.o(.text)
+    SVC_Handler                              0x08000405   Thumb Code     2  stm32f1xx_it.o(.text)
+    DebugMon_Handler                         0x08000407   Thumb Code     2  stm32f1xx_it.o(.text)
+    PendSV_Handler                           0x08000409   Thumb Code     2  stm32f1xx_it.o(.text)
+    SysTick_Handler                          0x0800040b   Thumb Code     4  stm32f1xx_it.o(.text)
+    HAL_MspInit                              0x08000425   Thumb Code    52  stm32f1xx_hal_msp.o(.text)
+    EPD_test                                 0x08000461   Thumb Code  1898  epd_2in7_v2_test.o(.text)
+    EPD_2IN7_V2_Init                         0x08000ce5   Thumb Code    84  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_Init_Fast                    0x08000d39   Thumb Code   158  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_Init_4GRAY                   0x08000dd7   Thumb Code   266  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_Clear                        0x08000ee1   Thumb Code    50  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_Display                      0x08000f13   Thumb Code    60  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_Display_Fast                 0x08000f4f   Thumb Code    78  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_Display_Base                 0x08000f9d   Thumb Code   100  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_Display_Base_color           0x08001001   Thumb Code    80  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_Display_Partial              0x08001051   Thumb Code   226  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_4GrayDisplay                 0x08001133   Thumb Code   242  epd_2in7_v2.o(.text)
+    EPD_2IN7_V2_Sleep                        0x08001225   Thumb Code    18  epd_2in7_v2.o(.text)
+    DEV_SPI_WriteByte                        0x08001311   Thumb Code    18  dev_config.o(.text)
+    DEV_Module_Init                          0x08001323   Thumb Code    38  dev_config.o(.text)
+    DEV_Module_Exit                          0x08001349   Thumb Code    38  dev_config.o(.text)
+    Paint_NewImage                           0x08001379   Thumb Code    56  gui_paint.o(.text)
+    Paint_SelectImage                        0x080013b1   Thumb Code     6  gui_paint.o(.text)
+    Paint_SetRotate                          0x080013b7   Thumb Code    44  gui_paint.o(.text)
+    Paint_SetScale                           0x080013e3   Thumb Code    80  gui_paint.o(.text)
+    Paint_SetMirroring                       0x08001433   Thumb Code    62  gui_paint.o(.text)
+    Paint_SetPixel                           0x08001471   Thumb Code   238  gui_paint.o(.text)
+    Paint_Clear                              0x0800155f   Thumb Code   156  gui_paint.o(.text)
+    Paint_ClearWindows                       0x080015fb   Thumb Code    52  gui_paint.o(.text)
+    Paint_DrawPoint                          0x0800162f   Thumb Code   180  gui_paint.o(.text)
+    Paint_DrawLine                           0x080016e3   Thumb Code   662  gui_paint.o(.text)
+    Paint_DrawRectangle                      0x08001979   Thumb Code   170  gui_paint.o(.text)
+    Paint_DrawCircle                         0x08001a23   Thumb Code   528  gui_paint.o(.text)
+    Paint_DrawChar                           0x08001c33   Thumb Code   172  gui_paint.o(.text)
+    Paint_DrawString_EN                      0x08001cdf   Thumb Code   116  gui_paint.o(.text)
+    Paint_DrawString_CN                      0x08001d53   Thumb Code   518  gui_paint.o(.text)
+    Paint_DrawNum                            0x08001f59   Thumb Code   140  gui_paint.o(.text)
+    Paint_DrawNumDecimals                    0x08001fe5   Thumb Code   258  gui_paint.o(.text)
+    Paint_DrawTime                           0x080020e7   Thumb Code   282  gui_paint.o(.text)
+    Paint_DrawBitMap                         0x08002201   Thumb Code    44  gui_paint.o(.text)
+    Paint_DrawBitMap_Paste                   0x0800222d   Thumb Code   198  gui_paint.o(.text)
+    Paint_DrawBitMap_Block                   0x080022f3   Thumb Code    54  gui_paint.o(.text)
+    SystemInit                               0x0800232d   Thumb Code    60  system_stm32f1xx.o(.text)
+    SystemCoreClockUpdate                    0x08002369   Thumb Code   108  system_stm32f1xx.o(.text)
+    HAL_SPI_Init                             0x080023f3   Thumb Code   180  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DeInit                           0x080024a9   Thumb Code    48  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Transmit                         0x080025cf   Thumb Code   412  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TransmitReceive                  0x080027db   Thumb Code   510  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Receive                          0x080029d9   Thumb Code   366  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxCpltCallback                   0x08002b47   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_ErrorCallback                    0x08002b49   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Transmit_IT                      0x08002c09   Thumb Code   162  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_RxCpltCallback                   0x08002cab   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxRxCpltCallback                 0x08002d35   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TransmitReceive_IT               0x08002e8d   Thumb Code   188  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Receive_IT                       0x08002f49   Thumb Code   176  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxHalfCpltCallback               0x08003081   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Transmit_DMA                     0x0800308d   Thumb Code   208  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_RxHalfCpltCallback               0x080031cb   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxRxHalfCpltCallback             0x08003233   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TransmitReceive_DMA              0x0800323f   Thumb Code   302  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Receive_DMA                      0x0800336d   Thumb Code   278  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Abort                            0x080034f1   Thumb Code   290  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_AbortCpltCallback                0x08003613   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Abort_IT                         0x080036e9   Thumb Code   328  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DMAPause                         0x08003831   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DMAResume                        0x08003857   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DMAStop                          0x0800387d   Thumb Code    68  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_IRQHandler                       0x080038d1   Thumb Code   250  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_GetState                         0x080039cb   Thumb Code     6  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_GetError                         0x080039d1   Thumb Code     4  stm32f1xx_hal_spi.o(.text)
+    HAL_InitTick                             0x080039db   Thumb Code    58  stm32f1xx_hal.o(.text)
+    HAL_Init                                 0x08003a15   Thumb Code    32  stm32f1xx_hal.o(.text)
+    HAL_MspDeInit                            0x08003a35   Thumb Code     2  stm32f1xx_hal.o(.text)
+    HAL_DeInit                               0x08003a37   Thumb Code    26  stm32f1xx_hal.o(.text)
+    HAL_IncTick                              0x08003a51   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_GetTick                              0x08003a5d   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_GetTickPrio                          0x08003a63   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_SetTickFreq                          0x08003a69   Thumb Code    30  stm32f1xx_hal.o(.text)
+    HAL_GetTickFreq                          0x08003a87   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_Delay                                0x08003a8d   Thumb Code    34  stm32f1xx_hal.o(.text)
+    HAL_SuspendTick                          0x08003aaf   Thumb Code    14  stm32f1xx_hal.o(.text)
+    HAL_ResumeTick                           0x08003abd   Thumb Code    14  stm32f1xx_hal.o(.text)
+    HAL_GetHalVersion                        0x08003acb   Thumb Code     4  stm32f1xx_hal.o(.text)
+    HAL_GetREVID                             0x08003acf   Thumb Code     8  stm32f1xx_hal.o(.text)
+    HAL_GetDEVID                             0x08003ad7   Thumb Code    10  stm32f1xx_hal.o(.text)
+    HAL_GetUIDw0                             0x08003ae1   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_GetUIDw1                             0x08003ae7   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_GetUIDw2                             0x08003aed   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_EnableDBGSleepMode            0x08003af3   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_DisableDBGSleepMode           0x08003aff   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_EnableDBGStopMode             0x08003b0b   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_DisableDBGStopMode            0x08003b17   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_EnableDBGStandbyMode          0x08003b23   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_DisableDBGStandbyMode         0x08003b2f   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_RCC_DeInit                           0x08003b61   Thumb Code   250  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_OscConfig                        0x08003c7b   Thumb Code  1080  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetSysClockFreq                  0x080040b3   Thumb Code    88  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_ClockConfig                      0x0800410b   Thumb Code   364  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_MCOConfig                        0x08004277   Thumb Code    64  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_EnableCSS                        0x080042b7   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_DisableCSS                       0x080042bf   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetHCLKFreq                      0x080042c7   Thumb Code     6  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetPCLK1Freq                     0x080042cd   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetPCLK2Freq                     0x080042e3   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetOscConfig                     0x080042f9   Thumb Code   168  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetClockConfig                   0x080043a1   Thumb Code    52  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_CSSCallback                      0x080043d5   Thumb Code     2  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_NMI_IRQHandler                   0x080043d7   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
+    HAL_GPIO_Init                            0x08004429   Thumb Code   524  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_DeInit                          0x08004635   Thumb Code   320  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_ReadPin                         0x08004775   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_WritePin                        0x08004783   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_TogglePin                       0x08004791   Thumb Code    16  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_LockPin                         0x080047a1   Thumb Code    42  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_EXTI_Callback                   0x080047cb   Thumb Code     2  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_EXTI_IRQHandler                 0x080047cd   Thumb Code    18  stm32f1xx_hal_gpio.o(.text)
+    HAL_DMA_Init                             0x080047fd   Thumb Code   144  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_DeInit                           0x0800488d   Thumb Code   126  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Start                            0x08004943   Thumb Code    88  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Start_IT                         0x0800499b   Thumb Code   124  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Abort                            0x08004a17   Thumb Code    72  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Abort_IT                         0x08004a5f   Thumb Code   318  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_PollForTransfer                  0x08004b9d   Thumb Code  1316  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_IRQHandler                       0x080050c1   Thumb Code   672  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_RegisterCallback                 0x08005361   Thumb Code    80  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_UnRegisterCallback               0x080053b1   Thumb Code    86  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_GetState                         0x08005407   Thumb Code     6  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_GetError                         0x0800540d   Thumb Code     4  stm32f1xx_hal_dma.o(.text)
+    HAL_NVIC_SetPriorityGrouping             0x08005445   Thumb Code    30  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_SetPriority                     0x08005463   Thumb Code    98  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_EnableIRQ                       0x080054c5   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_DisableIRQ                      0x080054e1   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_SystemReset                     0x08005505   Thumb Code    26  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_Config                       0x0800551f   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetPriorityGrouping             0x08005543   Thumb Code    10  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetPriority                     0x0800554d   Thumb Code    94  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_SetPendingIRQ                   0x080055ab   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetPendingIRQ                   0x080055c7   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_ClearPendingIRQ                 0x080055f1   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetActive                       0x0800560d   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_CLKSourceConfig              0x08005637   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_Callback                     0x08005653   Thumb Code     2  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_IRQHandler                   0x08005655   Thumb Code     8  stm32f1xx_hal_cortex.o(.text)
+    HAL_UART_Init                            0x0800572d   Thumb Code   100  stm32f1xx_hal_uart.o(.text)
+    HAL_HalfDuplex_Init                      0x08005791   Thumb Code   110  stm32f1xx_hal_uart.o(.text)
+    HAL_LIN_Init                             0x080057ff   Thumb Code   130  stm32f1xx_hal_uart.o(.text)
+    HAL_MultiProcessor_Init                  0x08005881   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DeInit                          0x08005915   Thumb Code    52  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Transmit                        0x080059c1   Thumb Code   202  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Receive                         0x08005a8b   Thumb Code   212  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Transmit_IT                     0x08005b5f   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Receive_IT                      0x08005ba1   Thumb Code    86  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_ErrorCallback                   0x08005bf7   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_TxHalfCpltCallback              0x08005c71   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_TxCpltCallback                  0x08005c7d   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Transmit_DMA                    0x08005caf   Thumb Code   138  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_RxHalfCpltCallback              0x08005d39   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_RxCpltCallback                  0x08005d45   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Receive_DMA                     0x08005d85   Thumb Code   150  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DMAPause                        0x08005e1b   Thumb Code   102  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DMAResume                       0x08005e81   Thumb Code    98  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DMAStop                         0x08005ee3   Thumb Code    88  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Abort                           0x08005f3b   Thumb Code   148  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortTransmit                   0x08005fcf   Thumb Code    80  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortReceive                    0x0800601f   Thumb Code    90  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortCpltCallback               0x08006079   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Abort_IT                        0x080060e9   Thumb Code   178  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortTransmitCpltCallback       0x0800619b   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortTransmit_IT                0x080061b1   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortReceiveCpltCallback        0x0800620f   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortReceive_IT                 0x08006225   Thumb Code   104  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_IRQHandler                      0x080063a7   Thumb Code   312  stm32f1xx_hal_uart.o(.text)
+    HAL_LIN_SendBreak                        0x080064df   Thumb Code    70  stm32f1xx_hal_uart.o(.text)
+    HAL_MultiProcessor_EnterMuteMode         0x08006525   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
+    HAL_MultiProcessor_ExitMuteMode          0x08006557   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
+    HAL_HalfDuplex_EnableTransmitter         0x08006589   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
+    HAL_HalfDuplex_EnableReceiver            0x080065bf   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_GetState                        0x080065f5   Thumb Code    12  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_GetError                        0x08006601   Thumb Code     4  stm32f1xx_hal_uart.o(.text)
+    __aeabi_llsr                             0x08006605   Thumb Code    32  llushr.o(.text)
+    _ll_ushift_r                             0x08006605   Thumb Code     0  llushr.o(.text)
+    __aeabi_memset                           0x08006625   Thumb Code    14  memseta.o(.text)
+    __aeabi_memset4                          0x08006625   Thumb Code     0  memseta.o(.text)
+    __aeabi_memset8                          0x08006625   Thumb Code     0  memseta.o(.text)
+    __aeabi_memclr                           0x08006633   Thumb Code     4  memseta.o(.text)
+    __aeabi_memclr4                          0x08006633   Thumb Code     0  memseta.o(.text)
+    __aeabi_memclr8                          0x08006633   Thumb Code     0  memseta.o(.text)
+    _memset$wrapper                          0x08006637   Thumb Code    18  memseta.o(.text)
+    __aeabi_fmul                             0x08006649   Thumb Code   100  fmul.o(.text)
+    __aeabi_dadd                             0x080066ad   Thumb Code   322  dadd.o(.text)
+    __aeabi_dsub                             0x080067ef   Thumb Code     6  dadd.o(.text)
+    __aeabi_drsub                            0x080067f5   Thumb Code     6  dadd.o(.text)
+    __aeabi_i2d                              0x080067fb   Thumb Code    34  dflti.o(.text)
+    __aeabi_f2iz                             0x0800681d   Thumb Code    50  ffixi.o(.text)
+    __aeabi_d2iz                             0x0800684f   Thumb Code    62  dfixi.o(.text)
+    __aeabi_d2f                              0x0800688d   Thumb Code    56  d2f.o(.text)
+    __aeabi_uidiv                            0x080068c5   Thumb Code     0  uidiv.o(.text)
+    __aeabi_uidivmod                         0x080068c5   Thumb Code    44  uidiv.o(.text)
+    __aeabi_llsl                             0x080068f1   Thumb Code    30  llshl.o(.text)
+    _ll_shift_l                              0x080068f1   Thumb Code     0  llshl.o(.text)
+    __aeabi_lasr                             0x0800690f   Thumb Code    36  llsshr.o(.text)
+    _ll_sshift_r                             0x0800690f   Thumb Code     0  llsshr.o(.text)
+    __I$use$fp                               0x08006933   Thumb Code     0  iusefp.o(.text)
+    _float_round                             0x08006933   Thumb Code    18  fepilogue.o(.text)
+    _float_epilogue                          0x08006945   Thumb Code    92  fepilogue.o(.text)
+    _double_round                            0x080069a1   Thumb Code    30  depilogue.o(.text)
+    _double_epilogue                         0x080069bf   Thumb Code   156  depilogue.o(.text)
+    __scatterload                            0x08006a5d   Thumb Code    28  init.o(.text)
+    __scatterload_rt2                        0x08006a5d   Thumb Code     0  init.o(.text)
+    __0printf$3                              0x08006a81   Thumb Code    22  printf3.o(i.__0printf$3)
+    __1printf$3                              0x08006a81   Thumb Code     0  printf3.o(i.__0printf$3)
+    __2printf                                0x08006a81   Thumb Code     0  printf3.o(i.__0printf$3)
+    __scatterload_copy                       0x08006aa1   Thumb Code    14  handlers.o(i.__scatterload_copy)
+    __scatterload_null                       0x08006aaf   Thumb Code     2  handlers.o(i.__scatterload_null)
+    __scatterload_zeroinit                   0x08006ab1   Thumb Code    14  handlers.o(i.__scatterload_zeroinit)
+    free                                     0x08006c79   Thumb Code    76  malloc.o(i.free)
+    malloc                                   0x08006cc9   Thumb Code    92  malloc.o(i.malloc)
+    gImage_2in7                              0x08006d34   Data        5808  imagedata.o(.constdata)
+    gImage_2in7_4Gray                        0x080083e4   Data       11616  imagedata.o(.constdata)
+    Font12_Table                             0x0800b144   Data        1140  font12.o(.constdata)
+    Font12CN_Table                           0x0800b5b8   Data        1494  font12cn.o(.constdata)
+    Font16_Table                             0x0800bb8e   Data        3040  font16.o(.constdata)
+    Font20_Table                             0x0800c76e   Data        3800  font20.o(.constdata)
+    Font24CN_Table                           0x0800d646   Data        4482  font24cn.o(.constdata)
+    AHBPrescTable                            0x0800e7c8   Data          16  system_stm32f1xx.o(.constdata)
+    APBPrescTable                            0x0800e7d8   Data           8  system_stm32f1xx.o(.constdata)
+    Region$$Table$$Base                      0x0800e8cc   Number         0  anon$$obj.o(Region$$Table)
+    Region$$Table$$Limit                     0x0800e8ec   Number         0  anon$$obj.o(Region$$Table)
+    LUT_DATA_4Gray                           0x20000000   Data         159  epd_2in7_v2.o(.data)
+    Font12                                   0x200000a0   Data           8  font12.o(.data)
+    Font12CN                                 0x200000a8   Data          12  font12cn.o(.data)
+    Font16                                   0x200000b4   Data           8  font16.o(.data)
+    Font20                                   0x200000bc   Data           8  font20.o(.data)
+    Font24CN                                 0x200000c4   Data          12  font24cn.o(.data)
+    SystemCoreClock                          0x200000d0   Data           4  system_stm32f1xx.o(.data)
+    uwTickFreq                               0x200000d4   Data           1  stm32f1xx_hal.o(.data)
+    uwTickPrio                               0x200000d8   Data           4  stm32f1xx_hal.o(.data)
+    uwTick                                   0x200000dc   Data           4  stm32f1xx_hal.o(.data)
+    __stdout                                 0x200000e0   Data           4  stdout.o(.data)
+    __microlib_freelist                      0x200000e4   Data           4  mvars.o(.data)
+    __microlib_freelist_initialised          0x200000e8   Data           4  mvars.o(.data)
+    hspi1                                    0x200000ec   Data          88  spi.o(.bss)
+    huart1                                   0x20000144   Data          64  usart.o(.bss)
+    Paint                                    0x20000184   Data          24  gui_paint.o(.bss)
+    __heap_base                              0x200001a0   Data           0  startup_stm32f103xe.o(HEAP)
+    __heap_limit                             0x2000c1a0   Data           0  startup_stm32f103xe.o(HEAP)
+    __initial_sp                             0x2000d1a0   Data           0  startup_stm32f103xe.o(STACK)
+
+
+
+==============================================================================
+
+Memory Map of the image
+
+  Image Entry point : 0x08000131
+
+  Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0000e9d8, Max: 0x00080000, ABSOLUTE)
+
+    Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x0000e8ec, Max: 0x00080000, ABSOLUTE)
+
+    Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
+
+    0x08000000   0x08000000   0x00000130   Data   RO            3    RESET               startup_stm32f103xe.o
+    0x08000130   0x08000130   0x00000000   Code   RO          964  * .ARM.Collect$$$$00000000  mc_w.l(entry.o)
+    0x08000130   0x08000130   0x00000004   Code   RO         1272    .ARM.Collect$$$$00000001  mc_w.l(entry2.o)
+    0x08000134   0x08000134   0x00000004   Code   RO         1275    .ARM.Collect$$$$00000004  mc_w.l(entry5.o)
+    0x08000138   0x08000138   0x00000000   Code   RO         1277    .ARM.Collect$$$$00000008  mc_w.l(entry7b.o)
+    0x08000138   0x08000138   0x00000000   Code   RO         1279    .ARM.Collect$$$$0000000A  mc_w.l(entry8b.o)
+    0x08000138   0x08000138   0x00000008   Code   RO         1280    .ARM.Collect$$$$0000000B  mc_w.l(entry9a.o)
+    0x08000140   0x08000140   0x00000000   Code   RO         1282    .ARM.Collect$$$$0000000D  mc_w.l(entry10a.o)
+    0x08000140   0x08000140   0x00000000   Code   RO         1284    .ARM.Collect$$$$0000000F  mc_w.l(entry11a.o)
+    0x08000140   0x08000140   0x00000004   Code   RO         1273    .ARM.Collect$$$$00002712  mc_w.l(entry2.o)
+    0x08000144   0x08000144   0x00000024   Code   RO            4    .text               startup_stm32f103xe.o
+    0x08000168   0x08000168   0x00000098   Code   RO           13    .text               main.o
+    0x08000200   0x08000200   0x00000060   Code   RO          162    .text               gpio.o
+    0x08000260   0x08000260   0x000000bc   Code   RO          186    .text               spi.o
+    0x0800031c   0x0800031c   0x000000d8   Code   RO          216    .text               usart.o
+    0x080003f4   0x080003f4   0x00000030   Code   RO          246    .text               stm32f1xx_it.o
+    0x08000424   0x08000424   0x0000003c   Code   RO          273    .text               stm32f1xx_hal_msp.o
+    0x08000460   0x08000460   0x0000084c   Code   RO          354    .text               epd_2in7_v2_test.o
+    0x08000cac   0x08000cac   0x00000664   Code   RO          384    .text               epd_2in7_v2.o
+    0x08001310   0x08001310   0x00000068   Code   RO          411    .text               dev_config.o
+    0x08001378   0x08001378   0x00000fb4   Code   RO          436    .text               gui_paint.o
+    0x0800232c   0x0800232c   0x000000c4   Code   RO          573    .text               system_stm32f1xx.o
+    0x080023f0   0x080023f0   0x000015e8   Code   RO          629    .text               stm32f1xx_hal_spi.o
+    0x080039d8   0x080039d8   0x00000188   Code   RO          653    .text               stm32f1xx_hal.o
+    0x08003b60   0x08003b60   0x000008c8   Code   RO          683    .text               stm32f1xx_hal_rcc.o
+    0x08004428   0x08004428   0x000003d4   Code   RO          731    .text               stm32f1xx_hal_gpio.o
+    0x080047fc   0x080047fc   0x00000c48   Code   RO          755    .text               stm32f1xx_hal_dma.o
+    0x08005444   0x08005444   0x00000224   Code   RO          779    .text               stm32f1xx_hal_cortex.o
+    0x08005668   0x08005668   0x00000f9c   Code   RO          943    .text               stm32f1xx_hal_uart.o
+    0x08006604   0x08006604   0x00000020   Code   RO          967    .text               mc_w.l(llushr.o)
+    0x08006624   0x08006624   0x00000024   Code   RO          969    .text               mc_w.l(memseta.o)
+    0x08006648   0x08006648   0x00000064   Code   RO         1260    .text               mf_w.l(fmul.o)
+    0x080066ac   0x080066ac   0x0000014e   Code   RO         1262    .text               mf_w.l(dadd.o)
+    0x080067fa   0x080067fa   0x00000022   Code   RO         1264    .text               mf_w.l(dflti.o)
+    0x0800681c   0x0800681c   0x00000032   Code   RO         1266    .text               mf_w.l(ffixi.o)
+    0x0800684e   0x0800684e   0x0000003e   Code   RO         1268    .text               mf_w.l(dfixi.o)
+    0x0800688c   0x0800688c   0x00000038   Code   RO         1270    .text               mf_w.l(d2f.o)
+    0x080068c4   0x080068c4   0x0000002c   Code   RO         1287    .text               mc_w.l(uidiv.o)
+    0x080068f0   0x080068f0   0x0000001e   Code   RO         1291    .text               mc_w.l(llshl.o)
+    0x0800690e   0x0800690e   0x00000024   Code   RO         1293    .text               mc_w.l(llsshr.o)
+    0x08006932   0x08006932   0x00000000   Code   RO         1301    .text               mc_w.l(iusefp.o)
+    0x08006932   0x08006932   0x0000006e   Code   RO         1302    .text               mf_w.l(fepilogue.o)
+    0x080069a0   0x080069a0   0x000000ba   Code   RO         1304    .text               mf_w.l(depilogue.o)
+    0x08006a5a   0x08006a5a   0x00000002   PAD
+    0x08006a5c   0x08006a5c   0x00000024   Code   RO         1314    .text               mc_w.l(init.o)
+    0x08006a80   0x08006a80   0x00000020   Code   RO         1060    i.__0printf$3       mc_w.l(printf3.o)
+    0x08006aa0   0x08006aa0   0x0000000e   Code   RO         1318    i.__scatterload_copy  mc_w.l(handlers.o)
+    0x08006aae   0x08006aae   0x00000002   Code   RO         1319    i.__scatterload_null  mc_w.l(handlers.o)
+    0x08006ab0   0x08006ab0   0x0000000e   Code   RO         1320    i.__scatterload_zeroinit  mc_w.l(handlers.o)
+    0x08006abe   0x08006abe   0x00000002   PAD
+    0x08006ac0   0x08006ac0   0x000001b8   Code   RO         1067    i._printf_core      mc_w.l(printf3.o)
+    0x08006c78   0x08006c78   0x00000050   Code   RO         1232    i.free              mc_w.l(malloc.o)
+    0x08006cc8   0x08006cc8   0x0000006c   Code   RO         1233    i.malloc            mc_w.l(malloc.o)
+    0x08006d34   0x08006d34   0x000016b0   Data   RO          301    .constdata          imagedata.o
+    0x080083e4   0x080083e4   0x00002d60   Data   RO          306    .constdata          imagedata.o
+    0x0800b144   0x0800b144   0x00000474   Data   RO          486    .constdata          font12.o
+    0x0800b5b8   0x0800b5b8   0x000005d6   Data   RO          500    .constdata          font12cn.o
+    0x0800bb8e   0x0800bb8e   0x00000be0   Data   RO          514    .constdata          font16.o
+    0x0800c76e   0x0800c76e   0x00000ed8   Data   RO          528    .constdata          font20.o
+    0x0800d646   0x0800d646   0x00001182   Data   RO          556    .constdata          font24cn.o
+    0x0800e7c8   0x0800e7c8   0x00000010   Data   RO          574    .constdata          system_stm32f1xx.o
+    0x0800e7d8   0x0800e7d8   0x00000008   Data   RO          575    .constdata          system_stm32f1xx.o
+    0x0800e7e0   0x0800e7e0   0x000000e9   Data   RO          438    .conststring        gui_paint.o
+    0x0800e8c9   0x0800e8c9   0x00000003   PAD
+    0x0800e8cc   0x0800e8cc   0x00000020   Data   RO         1316    Region$$Table       anon$$obj.o
+
+
+    Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x0800e8ec, Size: 0x0000d1a0, Max: 0x00010000, ABSOLUTE)
+
+    Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
+
+    0x20000000   0x0800e8ec   0x0000009f   Data   RW          385    .data               epd_2in7_v2.o
+    0x2000009f   0x0800e98b   0x00000001   PAD
+    0x200000a0   0x0800e98c   0x00000008   Data   RW          487    .data               font12.o
+    0x200000a8   0x0800e994   0x0000000c   Data   RW          501    .data               font12cn.o
+    0x200000b4   0x0800e9a0   0x00000008   Data   RW          515    .data               font16.o
+    0x200000bc   0x0800e9a8   0x00000008   Data   RW          529    .data               font20.o
+    0x200000c4   0x0800e9b0   0x0000000c   Data   RW          557    .data               font24cn.o
+    0x200000d0   0x0800e9bc   0x00000004   Data   RW          576    .data               system_stm32f1xx.o
+    0x200000d4   0x0800e9c0   0x0000000c   Data   RW          654    .data               stm32f1xx_hal.o
+    0x200000e0   0x0800e9cc   0x00000004   Data   RW         1286    .data               mc_w.l(stdout.o)
+    0x200000e4   0x0800e9d0   0x00000004   Data   RW         1299    .data               mc_w.l(mvars.o)
+    0x200000e8   0x0800e9d4   0x00000004   Data   RW         1300    .data               mc_w.l(mvars.o)
+    0x200000ec        -       0x00000058   Zero   RW          187    .bss                spi.o
+    0x20000144        -       0x00000040   Zero   RW          217    .bss                usart.o
+    0x20000184        -       0x00000018   Zero   RW          437    .bss                gui_paint.o
+    0x2000019c   0x0800e9d8   0x00000004   PAD
+    0x200001a0        -       0x0000c000   Zero   RW            2    HEAP                startup_stm32f103xe.o
+    0x2000c1a0        -       0x00001000   Zero   RW            1    STACK               startup_stm32f103xe.o
+
+
+==============================================================================
+
+Image component sizes
+
+
+      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Object Name
+
+       104         10          0          0          0        792   dev_config.o
+      1636         70          0        159          0       6179   epd_2in7_v2.o
+      2124        554          0          0          0       1899   epd_2in7_v2_test.o
+         0          0       1140          8          0       1389   font12.o
+         0          0       1494         12          0       1391   font12cn.o
+         0          0       3040          8          0       1389   font16.o
+         0          0       3800          8          0       1389   font20.o
+         0          0       4482         12          0       1391   font24cn.o
+        96         10          0          0          0        827   gpio.o
+      4020        670        233          0         24      15754   gui_paint.o
+         0          0      17424          0          0       3193   imagedata.o
+       152         20          0          0          0     463520   main.o
+       188         18          0          0         88       1473   spi.o
+        36          8        304          0      53248        804   startup_stm32f103xe.o
+       392         38          0         12          0       7697   stm32f1xx_hal.o
+       548         12          0          0          0      30706   stm32f1xx_hal_cortex.o
+      3144        164          0          0          0       7133   stm32f1xx_hal_dma.o
+       980         30          0          0          0       4415   stm32f1xx_hal_gpio.o
+        60          8          0          0          0        854   stm32f1xx_hal_msp.o
+      2248         88          0          0          0       6583   stm32f1xx_hal_rcc.o
+      5608        106          0          0          0      19649   stm32f1xx_hal_spi.o
+      3996         46          0          0          0      17460   stm32f1xx_hal_uart.o
+        48         22          0          0          0       1258   stm32f1xx_it.o
+       196         28         24          4          0       1553   system_stm32f1xx.o
+       216         18          0          0         64       1777   usart.o
+
+    ----------------------------------------------------------------------
+     25792       1920      31976        224      53428     600475   Object Totals
+         0          0         32          0          0          0   (incl. Generated)
+         0          0          3          1          4          0   (incl. Padding)
+
+    ----------------------------------------------------------------------
+
+      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Library Member Name
+
+         0          0          0          0          0          0   entry.o
+         0          0          0          0          0          0   entry10a.o
+         0          0          0          0          0          0   entry11a.o
+         8          4          0          0          0          0   entry2.o
+         4          0          0          0          0          0   entry5.o
+         0          0          0          0          0          0   entry7b.o
+         0          0          0          0          0          0   entry8b.o
+         8          4          0          0          0          0   entry9a.o
+        30          0          0          0          0          0   handlers.o
+        36          8          0          0          0         68   init.o
+         0          0          0          0          0          0   iusefp.o
+        30          0          0          0          0         68   llshl.o
+        36          0          0          0          0         68   llsshr.o
+        32          0          0          0          0         68   llushr.o
+       188         20          0          0          0        160   malloc.o
+        36          0          0          0          0        108   memseta.o
+         0          0          0          8          0          0   mvars.o
+       472         14          0          0          0        184   printf3.o
+         0          0          0          4          0          0   stdout.o
+        44          0          0          0          0         80   uidiv.o
+        56          0          0          0          0         88   d2f.o
+       334          0          0          0          0        148   dadd.o
+       186          0          0          0          0        176   depilogue.o
+        62          0          0          0          0         80   dfixi.o
+        34          0          0          0          0         76   dflti.o
+       110          0          0          0          0        168   fepilogue.o
+        50          0          0          0          0         68   ffixi.o
+       100          0          0          0          0         76   fmul.o
+
+    ----------------------------------------------------------------------
+      1860         50          0         12          0       1684   Library Totals
+         4          0          0          0          0          0   (incl. Padding)
+
+    ----------------------------------------------------------------------
+
+      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Library Name
+
+       924         50          0         12          0        804   mc_w.l
+       932          0          0          0          0        880   mf_w.l
+
+    ----------------------------------------------------------------------
+      1860         50          0         12          0       1684   Library Totals
+
+    ----------------------------------------------------------------------
+
+==============================================================================
+
+
+      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   
+
+     27652       1970      31976        236      53428     599815   Grand Totals
+     27652       1970      31976        236      53428     599815   ELF Image Totals
+     27652       1970      31976        236          0          0   ROM Totals
+
+==============================================================================
+
+    Total RO  Size (Code + RO Data)                59628 (  58.23kB)
+    Total RW  Size (RW Data + ZI Data)             53664 (  52.41kB)
+    Total ROM Size (Code + RO Data + RW Data)      59864 (  58.46kB)
+
+==============================================================================
+

+ 5 - 5
STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst

@@ -580,17 +580,17 @@ ARM Macro Assembler    Page 9
               00000000 
               00000000 
 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
 ork --depend=epd-demo\startup_stm32f103xe.d -oepd-demo\startup_stm32f103xe.o -I
 ork --depend=epd-demo\startup_stm32f103xe.d -oepd-demo\startup_stm32f103xe.o -I
-.\RTE\_epd-demo -I"D:\Program Files\keil5\ARM\PACK\ARM\CMSIS\5.7.0\CMSIS\Core\I
-nclude" -I"D:\Program Files\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Incl
-ude" --predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 525" -
+.\RTE\_EPD_2in7_V2_test -ID:\KEIL\azwz\ARM\PACK\ARM\CMSIS\5.9.0\CMSIS\Core\Incl
+ude -ID:\KEIL\azwz\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include --predefine
+="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 526" --predefine="_RTE
 
 
 
 
 
 
 ARM Macro Assembler    Page 10 
 ARM Macro Assembler    Page 10 
 
 
 
 
--predefine="_RTE_ SETA 1" --predefine="STM32F10X_HD SETA 1" --list=startup_stm3
-2f103xe.lst startup_stm32f103xe.s
+_ SETA 1" --predefine="STM32F10X_HD SETA 1" --list=startup_stm32f103xe.lst star
+tup_stm32f103xe.s
 
 
 
 
 
 

+ 265 - 0
STM32/STM32-F103ZET6/User/Examples/EPD_2in7_V2_test.c

@@ -0,0 +1,265 @@
+/*****************************************************************************
+* | File      	:   EPD_2in7_V2.c
+* | Author      :   Waveshare team
+* | Function    :   2.7inch V2 e-paper
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-09-17
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_Test.h"
+#include "EPD_2in7_V2.h"
+#include <time.h> 
+
+int EPD_test(void)
+{
+    printf("EPD_2IN7_V2_test Demo\r\n");
+    if(DEV_Module_Init()!=0){
+        return -1;
+    }
+
+    printf("e-Paper Init and Clear...\r\n");
+		EPD_2IN7_V2_Init();
+
+    EPD_2IN7_V2_Clear();
+
+    //Create a new image cache
+    UBYTE *BlackImage;
+    UWORD Imagesize = ((EPD_2IN7_V2_WIDTH % 8 == 0)? (EPD_2IN7_V2_WIDTH / 8 ): (EPD_2IN7_V2_WIDTH / 8 + 1)) * EPD_2IN7_V2_HEIGHT;
+    if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) {
+        printf("Failed to apply for black memory...\r\n");
+        return -1;
+    }
+    printf("Paint_NewImage\r\n");
+    Paint_NewImage(BlackImage, EPD_2IN7_V2_WIDTH, EPD_2IN7_V2_HEIGHT, 90, WHITE);
+		Paint_Clear(WHITE);
+
+
+#if 1  // Fast Drawing on the image
+    // Fast refresh
+    printf("This is followed by a quick refresh demo\r\n");
+    printf("First, clear the screen\r\n");
+    EPD_2IN7_V2_Init();
+    EPD_2IN7_V2_Clear();
+
+    printf("e-Paper Init Fast\r\n");
+    EPD_2IN7_V2_Init_Fast();
+		Paint_NewImage(BlackImage, EPD_2IN7_V2_WIDTH, EPD_2IN7_V2_HEIGHT, 90, WHITE);  	
+    printf("Drawing\r\n");
+    //1.Select Image
+    Paint_SelectImage(BlackImage);
+
+    // 2.Drawing on the image
+    Paint_Clear(WHITE);
+    printf("Drawing:BlackImage\r\n");
+    Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT);
+
+    Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+
+    Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+
+    Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+
+    Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+
+    Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE);
+    Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK);
+
+    Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE);
+    Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK);
+
+    Paint_DrawString_CN(130, 0,"ÄãºÃabc", &Font12CN, BLACK, WHITE);
+    Paint_DrawString_CN(130, 20, "΢ѩµç×Ó", &Font24CN, WHITE, BLACK);
+
+    EPD_2IN7_V2_Display_Fast(BlackImage);
+    DEV_Delay_ms(3000);
+
+#endif		
+
+#if 1   // show bmp
+
+    printf("show window BMP-----------------\r\n");
+		EPD_2IN7_V2_Init();
+		Paint_SelectImage(BlackImage);
+    Paint_Clear(WHITE);
+    Paint_DrawBitMap(gImage_2in7);
+    EPD_2IN7_V2_Display(BlackImage);
+    DEV_Delay_ms(3000);
+
+#endif
+
+#if 1  // Drawing on the image
+		Paint_NewImage(BlackImage, EPD_2IN7_V2_WIDTH, EPD_2IN7_V2_HEIGHT, 90, WHITE);  	
+    printf("Drawing\r\n");
+    //1.Select Image
+		EPD_2IN7_V2_Init();
+    Paint_SelectImage(BlackImage);
+    Paint_Clear(WHITE);
+	
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+    Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT);
+
+    Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+
+    Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+
+    Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+
+    Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+
+    Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE);
+    Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK);
+
+    Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE);
+    Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK);
+
+    Paint_DrawString_CN(130, 0,"ÄãºÃabc", &Font12CN, BLACK, WHITE);
+    Paint_DrawString_CN(130, 20, "΢ѩµç×Ó", &Font24CN, WHITE, BLACK);
+
+    EPD_2IN7_V2_Display_Base(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+
+
+#if 1   //Partial refresh, example shows time    	
+    // If you didn't use the EPD_2IN7_V2_Display_Base() function to refresh the image before,
+    // use the EPD_2IN7_V2_Display_Base_color() function to refresh the background color, 
+    // otherwise the background color will be garbled 
+    EPD_2IN7_V2_Init();
+    // EPD_2IN7_V2_Display_Base_color(WHITE);
+		Paint_NewImage(BlackImage, 50, 120, 90, WHITE);
+    
+    printf("Partial refresh\r\n");
+    Paint_SelectImage(BlackImage);
+		Paint_SetScale(2);
+    Paint_Clear(WHITE);
+    
+    PAINT_TIME sPaint_time;
+    sPaint_time.Hour = 12;
+    sPaint_time.Min = 34;
+    sPaint_time.Sec = 56;
+    UBYTE num = 15;
+    for (;;) {
+        sPaint_time.Sec = sPaint_time.Sec + 1;
+        if (sPaint_time.Sec == 60) {
+            sPaint_time.Min = sPaint_time.Min + 1;
+            sPaint_time.Sec = 0;
+            if (sPaint_time.Min == 60) {
+                sPaint_time.Hour =  sPaint_time.Hour + 1;
+                sPaint_time.Min = 0;
+                if (sPaint_time.Hour == 24) {
+                    sPaint_time.Hour = 0;
+                    sPaint_time.Min = 0;
+                    sPaint_time.Sec = 0;
+                }
+            }
+        }
+        
+        Paint_Clear(WHITE);
+				Paint_DrawRectangle(1, 1, 120, 50, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+        Paint_DrawTime(10, 15, &sPaint_time, &Font20, WHITE, BLACK);
+
+        num = num - 1;
+        if(num == 0) {
+            break;
+        }
+				printf("Part refresh...\r\n");
+        EPD_2IN7_V2_Display_Partial(BlackImage, 60, 134, 110, 254); // Xstart must be a multiple of 8
+        DEV_Delay_ms(500);
+    }
+#endif
+
+#if 1 // show image for array
+		free(BlackImage);
+    printf("show Gray------------------------\r\n");
+    Imagesize = ((EPD_2IN7_V2_WIDTH % 4 == 0)? (EPD_2IN7_V2_WIDTH / 4 ): (EPD_2IN7_V2_WIDTH / 4 + 1)) * EPD_2IN7_V2_HEIGHT;
+    if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) {
+        printf("Failed to apply for black memory...\r\n");
+        return -1;
+    }
+    EPD_2IN7_V2_Init_4GRAY();
+    printf("4 grayscale display\r\n");
+    Paint_NewImage(BlackImage, EPD_2IN7_V2_WIDTH, EPD_2IN7_V2_HEIGHT, 90, WHITE);
+    Paint_SetScale(4);
+    Paint_Clear(0xff);
+    
+    Paint_DrawPoint(10, 80, GRAY4, DOT_PIXEL_1X1, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 90, GRAY4, DOT_PIXEL_2X2, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 100, GRAY4, DOT_PIXEL_3X3, DOT_STYLE_DFT);
+    Paint_DrawLine(20, 70, 70, 120, GRAY4, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawLine(70, 70, 20, 120, GRAY4, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawRectangle(20, 70, 70, 120, GRAY4, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawRectangle(80, 70, 130, 120, GRAY4, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawCircle(45, 95, 20, GRAY4, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawCircle(105, 95, 20, GRAY2, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawLine(85, 95, 125, 95, GRAY4, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawLine(105, 75, 105, 115, GRAY4, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawString_EN(10, 0, "waveshare", &Font16, GRAY4, GRAY1);
+    Paint_DrawString_EN(10, 20, "hello world", &Font12, GRAY3, GRAY1);
+    Paint_DrawNum(10, 33, 123456789, &Font12, GRAY4, GRAY2);
+    Paint_DrawNum(10, 50, 987654321, &Font16, GRAY1, GRAY4);
+    Paint_DrawString_CN(150, 0,"ÄãºÃabc", &Font12CN, GRAY4, GRAY1);
+    Paint_DrawString_CN(150, 20,"ÄãºÃabc", &Font12CN, GRAY3, GRAY2);
+    Paint_DrawString_CN(150, 40,"ÄãºÃabc", &Font12CN, GRAY2, GRAY3);
+    Paint_DrawString_CN(150, 60,"ÄãºÃabc", &Font12CN, GRAY1, GRAY4);
+    Paint_DrawString_CN(10, 130, "΢ѩµç×Ó", &Font24CN, GRAY1, GRAY4);
+    EPD_2IN7_V2_4GrayDisplay(BlackImage);
+    DEV_Delay_ms(3000);
+		
+		Paint_SelectImage(BlackImage);
+    Paint_Clear(WHITE);
+    Paint_DrawBitMap(gImage_2in7_4Gray);
+    EPD_2IN7_V2_4GrayDisplay(BlackImage);
+    DEV_Delay_ms(3000);
+
+#endif
+
+		printf("Clear...\r\n");
+		EPD_2IN7_V2_Init();
+    EPD_2IN7_V2_Clear();
+	
+    printf("Goto Sleep...\r\n");
+    EPD_2IN7_V2_Sleep();
+    free(BlackImage);
+    BlackImage = NULL;
+    DEV_Delay_ms(2000);//important, at least 2s
+    // close 5V
+    printf("close 5V, Module enters 0 power consumption ...\r\n");
+    DEV_Module_Exit();
+    return 0;
+}

+ 526 - 0
STM32/STM32-F103ZET6/User/e-Paper/EPD_2in7_V2.c

@@ -0,0 +1,526 @@
+/*****************************************************************************
+* | File      	:   EPD_2in7_V2.c
+* | Author      :   Waveshare team
+* | Function    :   2.7inch V2 e-paper
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-18
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in7_V2.h"
+#include "Debug.h"
+
+UBYTE LUT_DATA_4Gray[159] =
+{
+0x40,	0x48,	0x80,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0x8,	0x48,	0x10,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0x2,	0x48,	0x4,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0x20,	0x48,	0x1,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,
+0xA,	0x19,	0x0,	0x3,	0x8,	0x0,	0x0,					
+0x14,	0x1,	0x0,	0x14,	0x1,	0x0,	0x3,					
+0xA,	0x3,	0x0,	0x8,	0x19,	0x0,	0x0,					
+0x1,	0x0,	0x0,	0x0,	0x0,	0x0,	0x1,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,					
+0x22,	0x22,	0x22,	0x22,	0x22,	0x22,	0x0,	0x0,	0x0,			
+0x22,	0x17,	0x41,	0x0,	0x32,	0x1C
+};
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN7_V2_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(20);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(20);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN7_V2_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN7_V2_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_2IN7_V2_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    do {
+        if(DEV_Digital_Read(EPD_BUSY_PIN) == 0)
+			break;
+    } while(1);
+    DEV_Delay_ms(20);
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn on display
+parameter:
+******************************************************************************/
+static void EPD_2IN7_V2_TurnOnDisplay(void)
+{
+	EPD_2IN7_V2_SendCommand(0x22); //Display Update Control
+	EPD_2IN7_V2_SendData(0xF7);
+	EPD_2IN7_V2_SendCommand(0x20); //Activate Display Update Sequence
+	EPD_2IN7_V2_ReadBusy();
+}
+
+static void EPD_2IN7_V2_TurnOnDisplay_Fast(void)
+{
+	EPD_2IN7_V2_SendCommand(0x22); //Display Update Control
+	EPD_2IN7_V2_SendData(0xC7);
+	EPD_2IN7_V2_SendCommand(0x20); //Activate Display Update Sequence
+	EPD_2IN7_V2_ReadBusy();
+}
+
+static void EPD_2IN7_V2_TurnOnDisplay_Partial(void)
+{
+	EPD_2IN7_V2_SendCommand(0x22);
+	EPD_2IN7_V2_SendData(0xFF);
+	EPD_2IN7_V2_SendCommand(0x20);
+	EPD_2IN7_V2_ReadBusy();
+}
+
+static void EPD_2IN7_V2_TurnOnDisplay_4GRAY(void)
+{
+	EPD_2IN7_V2_SendCommand(0x22);
+	EPD_2IN7_V2_SendData(0xC7);
+	EPD_2IN7_V2_SendCommand(0x20);
+	EPD_2IN7_V2_ReadBusy();
+}
+/******************************************************************************
+function :	set the look-up tables
+parameter:
+******************************************************************************/
+static void EPD_2IN7_V2_Lut(void)
+{
+    unsigned int count;
+    EPD_2IN7_V2_SendCommand(0x32); //vcom
+    for(count = 0; count < 153; count++) {
+        EPD_2IN7_V2_SendData(LUT_DATA_4Gray[count]);
+    }
+}
+
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN7_V2_Init(void)
+{
+  EPD_2IN7_V2_Reset();
+	EPD_2IN7_V2_ReadBusy();
+	
+	EPD_2IN7_V2_SendCommand(0x12); //SWRESET
+	EPD_2IN7_V2_ReadBusy();
+
+  EPD_2IN7_V2_SendCommand(0x45); //set Ram-Y address start/end position          
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x07); //0x0107-->(263+1)=264
+	EPD_2IN7_V2_SendData(0x01);
+
+  EPD_2IN7_V2_SendCommand(0x4F);   // set RAM y address count to 0;    
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x00);
+
+	EPD_2IN7_V2_SendCommand(0x11);   // data entry mode
+	EPD_2IN7_V2_SendData(0x03);
+
+}
+void EPD_2IN7_V2_Init_Fast(void)
+{
+	EPD_2IN7_V2_Reset();
+	EPD_2IN7_V2_ReadBusy();
+
+	EPD_2IN7_V2_SendCommand(0x12); //SWRESET
+	EPD_2IN7_V2_ReadBusy();
+
+	EPD_2IN7_V2_SendCommand(0x18); //Read built-in temperature sensor
+	EPD_2IN7_V2_SendData(0x80);	
+
+	EPD_2IN7_V2_SendCommand(0x22); // Load temperature value
+	EPD_2IN7_V2_SendData(0xB1);		
+	EPD_2IN7_V2_SendCommand(0x20);	
+	EPD_2IN7_V2_ReadBusy();
+
+	EPD_2IN7_V2_SendCommand(0x1A); // Write to temperature register
+	EPD_2IN7_V2_SendData(0x64);		
+	EPD_2IN7_V2_SendData(0x00);	
+
+	EPD_2IN7_V2_SendCommand(0x45); //set Ram-Y address start/end position          
+	EPD_2IN7_V2_SendData(0x00);   
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x07); //0x0107-->(263+1)=264
+	EPD_2IN7_V2_SendData(0x01);
+
+	EPD_2IN7_V2_SendCommand(0x4F);   // set RAM y address count to 0;    
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x00);
+
+	EPD_2IN7_V2_SendCommand(0x11);   // data entry mode      
+	EPD_2IN7_V2_SendData(0x03);
+							
+	EPD_2IN7_V2_SendCommand(0x22); // Load temperature value
+	EPD_2IN7_V2_SendData(0x91);		
+	EPD_2IN7_V2_SendCommand(0x20);	
+	EPD_2IN7_V2_ReadBusy(); 
+}
+void EPD_2IN7_V2_Init_4GRAY(void)
+{
+	EPD_2IN7_V2_Reset();
+
+	EPD_2IN7_V2_ReadBusy();
+	EPD_2IN7_V2_SendCommand(0x12); // soft reset
+	EPD_2IN7_V2_ReadBusy();
+
+	EPD_2IN7_V2_SendCommand(0x74); //set analog block control       
+	EPD_2IN7_V2_SendData(0x54);
+	EPD_2IN7_V2_SendCommand(0x7E); //set digital block control          
+	EPD_2IN7_V2_SendData(0x3B);
+
+	EPD_2IN7_V2_SendCommand(0x01); //Driver output control      
+	EPD_2IN7_V2_SendData(0x07);
+	EPD_2IN7_V2_SendData(0x01);
+	EPD_2IN7_V2_SendData(0x00);
+
+	EPD_2IN7_V2_SendCommand(0x11); //data entry mode       
+	EPD_2IN7_V2_SendData(0x03);
+
+	EPD_2IN7_V2_SendCommand(0x44); //set Ram-X address start/end position   
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x15);    //0x15-->(21+1)*8=176
+
+	EPD_2IN7_V2_SendCommand(0x45); //set Ram-Y address start/end position          
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x07);//0x0107-->(263+1)=264
+	EPD_2IN7_V2_SendData(0x01);
+
+
+	EPD_2IN7_V2_SendCommand(0x3C); //BorderWavefrom
+	EPD_2IN7_V2_SendData(0x00);	
+
+
+	EPD_2IN7_V2_SendCommand(0x2C);     //VCOM Voltage
+	EPD_2IN7_V2_SendData(LUT_DATA_4Gray[158]);    //0x1C
+
+
+	EPD_2IN7_V2_SendCommand(0x3F); //EOPQ    
+	EPD_2IN7_V2_SendData(LUT_DATA_4Gray[153]);
+	
+	EPD_2IN7_V2_SendCommand(0x03); //VGH      
+	EPD_2IN7_V2_SendData(LUT_DATA_4Gray[154]);
+
+	EPD_2IN7_V2_SendCommand(0x04); //      
+	EPD_2IN7_V2_SendData(LUT_DATA_4Gray[155]); //VSH1   
+	EPD_2IN7_V2_SendData(LUT_DATA_4Gray[156]); //VSH2   
+	EPD_2IN7_V2_SendData(LUT_DATA_4Gray[157]); //VSL   
+   
+	EPD_2IN7_V2_Lut(); //LUT
+
+	
+	EPD_2IN7_V2_SendCommand(0x4E);   // set RAM x address count to 0;
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendCommand(0x4F);   // set RAM y address count to 0X199;    
+	EPD_2IN7_V2_SendData(0x00);
+	EPD_2IN7_V2_SendData(0x00);
+  EPD_2IN7_V2_ReadBusy();
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN7_V2_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN7_V2_WIDTH % 8 == 0)? (EPD_2IN7_V2_WIDTH / 8 ): (EPD_2IN7_V2_WIDTH / 8 + 1);
+    Height = EPD_2IN7_V2_HEIGHT;
+
+    EPD_2IN7_V2_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN7_V2_SendData(0XFF);
+        }
+    }
+
+	EPD_2IN7_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN7_V2_Display(UBYTE *Image)
+{
+	UWORD Width, Height;
+	Width = (EPD_2IN7_V2_WIDTH % 8 == 0)? (EPD_2IN7_V2_WIDTH / 8 ): (EPD_2IN7_V2_WIDTH / 8 + 1);
+	Height = EPD_2IN7_V2_HEIGHT;
+
+	EPD_2IN7_V2_SendCommand(0x24);
+	for (UWORD j = 0; j < Height; j++) {
+			for (UWORD i = 0; i < Width; i++) {
+					EPD_2IN7_V2_SendData(Image[i + j * Width]);
+			}
+	}
+
+	EPD_2IN7_V2_TurnOnDisplay();
+}
+
+void EPD_2IN7_V2_Display_Fast(UBYTE *Image)
+{
+	UWORD Width, Height;
+	Width = (EPD_2IN7_V2_WIDTH % 8 == 0)? (EPD_2IN7_V2_WIDTH / 8 ): (EPD_2IN7_V2_WIDTH / 8 + 1);
+	Height = EPD_2IN7_V2_HEIGHT;
+
+	EPD_2IN7_V2_SendCommand(0x24);
+	for (UWORD j = 0; j < Height; j++) {
+			for (UWORD i = 0; i < Width; i++) {
+					EPD_2IN7_V2_SendData(Image[i + j * Width]);
+			}
+	}
+	EPD_2IN7_V2_TurnOnDisplay_Fast();
+}
+
+void EPD_2IN7_V2_Display_Base(UBYTE *Image)
+{
+	UWORD Width, Height;
+	Width = (EPD_2IN7_V2_WIDTH % 8 == 0)? (EPD_2IN7_V2_WIDTH / 8 ): (EPD_2IN7_V2_WIDTH / 8 + 1);
+	Height = EPD_2IN7_V2_HEIGHT;
+
+	EPD_2IN7_V2_SendCommand(0x24);   //Write Black and White image to RAM
+	for (UWORD j = 0; j < Height; j++) {
+			for (UWORD i = 0; i < Width; i++) {
+					EPD_2IN7_V2_SendData(Image[i + j * Width]);
+			}
+	}
+	EPD_2IN7_V2_SendCommand(0x26);   //Write Black and White image to RAM
+	for (UWORD j = 0; j < Height; j++) {
+			for (UWORD i = 0; i < Width; i++) {
+					EPD_2IN7_V2_SendData(Image[i + j * Width]);
+			}
+	}
+	EPD_2IN7_V2_TurnOnDisplay();	
+}
+
+void EPD_2IN7_V2_Display_Base_color(UBYTE color)
+{
+	UWORD Width, Height;
+	Width = (EPD_2IN7_V2_WIDTH % 8 == 0)? (EPD_2IN7_V2_WIDTH / 8 ): (EPD_2IN7_V2_WIDTH / 8 + 1);
+	Height = EPD_2IN7_V2_HEIGHT;
+
+	EPD_2IN7_V2_SendCommand(0x24);   //Write Black and White image to RAM
+	for (UWORD j = 0; j < Height; j++) {
+			for (UWORD i = 0; i < Width; i++) {
+					EPD_2IN7_V2_SendData(color);
+			}
+	}
+	EPD_2IN7_V2_SendCommand(0x26);   //Write Black and White image to RAM
+	for (UWORD j = 0; j < Height; j++) {
+			for (UWORD i = 0; i < Width; i++) {
+					EPD_2IN7_V2_SendData(color);
+			}
+	}
+	// EPD_2IN7_V2_TurnOnDisplay();	
+}
+
+void EPD_2IN7_V2_Display_Partial(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend)
+{
+	if((Xstart % 8 + Xend % 8 == 8 && Xstart % 8 > Xend % 8) || Xstart % 8 + Xend % 8 == 0 || (Xend - Xstart)%8 == 0)
+	{
+			Xstart = Xstart / 8 ;
+			Xend = Xend / 8;
+	}
+	else
+	{
+			Xstart = Xstart / 8 ;
+			Xend = Xend % 8 == 0 ? Xend / 8 : Xend / 8 + 1;
+	}
+
+
+	UWORD i, Width;
+	Width = Xend -  Xstart;
+	UWORD IMAGE_COUNTER = Width * (Yend-Ystart);
+
+	Xend -= 1;
+	Yend -= 1;	
+	//Reset
+	EPD_2IN7_V2_Reset();
+
+	EPD_2IN7_V2_SendCommand(0x3C); //BorderWavefrom
+	EPD_2IN7_V2_SendData(0x80);	
+	//	
+	EPD_2IN7_V2_SendCommand(0x44);       // set RAM x address start/end, in page 35
+	EPD_2IN7_V2_SendData(Xstart & 0xff);    // RAM x address start at 00h;
+	EPD_2IN7_V2_SendData(Xend & 0xff);    // RAM x address end at 0fh(15+1)*8->128 
+	EPD_2IN7_V2_SendCommand(0x45);       // set RAM y address start/end, in page 35
+	EPD_2IN7_V2_SendData(Ystart & 0xff);    // RAM y address start at 0127h;
+	EPD_2IN7_V2_SendData((Ystart>>8) & 0x01);    // RAM y address start at 0127h;
+	EPD_2IN7_V2_SendData(Yend & 0xff);    // RAM y address end at 00h;
+	EPD_2IN7_V2_SendData((Yend>>8) & 0x01); 
+
+	EPD_2IN7_V2_SendCommand(0x4E);   // set RAM x address count to 0;
+	EPD_2IN7_V2_SendData(Xstart & 0xff); 
+	EPD_2IN7_V2_SendCommand(0x4F);   // set RAM y address count to 0X127;    
+	EPD_2IN7_V2_SendData(Ystart & 0xff);
+	EPD_2IN7_V2_SendData((Ystart>>8) & 0x01);
+
+
+	EPD_2IN7_V2_SendCommand(0x24);   //Write Black and White image to RAM
+	for (i = 0; i < IMAGE_COUNTER; i++) {
+		EPD_2IN7_V2_SendData(Image[i]);
+	}
+	EPD_2IN7_V2_TurnOnDisplay_Partial();
+}
+
+
+void EPD_2IN7_V2_4GrayDisplay(UBYTE *Image)
+{
+    UDOUBLE i,j,k;
+    UBYTE temp1,temp2,temp3;
+
+    // old  data
+    EPD_2IN7_V2_SendCommand(0x24);
+    for(i=0; i<5808; i++) {             //5808*4  46464
+        temp3=0;
+        for(j=0; j<2; j++) {
+            temp1 = Image[i*2+j];
+            for(k=0; k<2; k++) {
+                temp2 = temp1&0xC0;
+                if(temp2 == 0xC0)
+                    temp3 |= 0x00;
+                else if(temp2 == 0x00)
+                    temp3 |= 0x01; 
+                else if(temp2 == 0x80)
+                    temp3 |= 0x01; 
+                else //0x40
+                    temp3 |= 0x00; 
+                temp3 <<= 1;
+
+                temp1 <<= 2;
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0) 
+                    temp3 |= 0x00;
+                else if(temp2 == 0x00) 
+                    temp3 |= 0x01;
+                else if(temp2 == 0x80)
+                    temp3 |= 0x01; 
+                else    //0x40
+                    temp3 |= 0x00;	
+                if(j!=1 || k!=1)
+                    temp3 <<= 1;
+
+                temp1 <<= 2;
+            }
+
+        }
+        EPD_2IN7_V2_SendData(temp3);
+        // printf("%x",temp3);
+    }
+
+    EPD_2IN7_V2_SendCommand(0x26);   //write RAM for black(0)/white (1)
+    for(i=0; i<5808; i++) {             //5808*4  46464
+        temp3=0;
+        for(j=0; j<2; j++) {
+            temp1 = Image[i*2+j];
+            for(k=0; k<2; k++) {
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)
+                    temp3 |= 0x00;//white
+                else if(temp2 == 0x00)
+                    temp3 |= 0x01;  //black
+                else if(temp2 == 0x80)
+                    temp3 |= 0x00;  //gray1
+                else //0x40
+                    temp3 |= 0x01; //gray2
+                temp3 <<= 1;
+
+                temp1 <<= 2;
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)  //white
+                    temp3 |= 0x00;
+                else if(temp2 == 0x00) //black
+                    temp3 |= 0x01;
+                else if(temp2 == 0x80)
+                    temp3 |= 0x00; //gray1
+                else    //0x40
+                    temp3 |= 0x01;	//gray2
+                if(j!=1 || k!=1)
+                    temp3 <<= 1;
+
+                temp1 <<= 2;
+            }
+        }
+        EPD_2IN7_V2_SendData(temp3);
+        // printf("%x",temp3);
+    }
+
+    EPD_2IN7_V2_TurnOnDisplay_4GRAY();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN7_V2_Sleep(void)
+{
+    EPD_2IN7_V2_SendCommand(0X10);
+    EPD_2IN7_V2_SendData(0x01);
+}

+ 52 - 0
STM32/STM32-F103ZET6/User/e-Paper/EPD_2in7_V2.h

@@ -0,0 +1,52 @@
+/*****************************************************************************
+* | File      	:   EPD_2in7_V2.h
+* | Author      :   Waveshare team
+* | Function    :   2.7inch V2 e-paper
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-18
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN7_V2_H_
+#define __EPD_2IN7_V2_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN7_V2_WIDTH       176
+#define EPD_2IN7_V2_HEIGHT      264
+
+void EPD_2IN7_V2_Init(void);
+void EPD_2IN7_V2_Init_Fast(void);
+void EPD_2IN7_V2_Init_4GRAY(void);
+void EPD_2IN7_V2_Clear(void);
+void EPD_2IN7_V2_Display(UBYTE *Image);
+void EPD_2IN7_V2_Display_Fast(UBYTE *Image);
+void EPD_2IN7_V2_Display_Base(UBYTE *Image);
+void EPD_2IN7_V2_Display_Base_color(UBYTE color);
+void EPD_2IN7_V2_Display_Partial(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yende);
+void EPD_2IN7_V2_4GrayDisplay(UBYTE *Image);
+void EPD_2IN7_V2_Sleep(void);
+
+#endif

+ 2 - 1
Version_CN.txt

@@ -33,4 +33,5 @@
 2022-07-22:添加新程序3.52inch e-Paper例程。
 2022-07-22:添加新程序3.52inch e-Paper例程。
 2022-08-16:添加新程序4.37inch e-Paper (G)例程。
 2022-08-16:添加新程序4.37inch e-Paper (G)例程。
 2022-08-17:添加新程序2.36inch e-Paper (G)例程。
 2022-08-17:添加新程序2.36inch e-Paper (G)例程。
-2022-10-22:添加新程序7.3inch e-Paper (F)例程。
+2022-10-22:添加新程序7.3inch e-Paper (F)例程。
+2022-10-27:添加新程序2.7inch V2 e-Paper 例程。

+ 2 - 1
Version_EN.txt

@@ -32,4 +32,5 @@
 2022-07-22: Added new programs 3.52inch e-Paper routine.
 2022-07-22: Added new programs 3.52inch e-Paper routine.
 2022-08-16: Added new programs 4.37inch e-Paper (G) routine.
 2022-08-16: Added new programs 4.37inch e-Paper (G) routine.
 2022-08-17: Added new programs 2.36inch e-Paper (G) routine.
 2022-08-17: Added new programs 2.36inch e-Paper (G) routine.
-2022-10-22: Added new programs 7.3inch e-Paper (F) routine.
+2022-10-22: Added new programs 7.3inch e-Paper (F) routine.
+2022-10-27: Added new programs 2.7inch V2 e-Paper routine.

Some files were not shown because too many files changed in this diff