diff --git a/ChangeLog b/ChangeLog index 8a21961b..70da241d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -41,5 +41,7 @@ https://github.com/olikraus/u8g2 ChangeLog 2016-xx-xx v2.5.x olikraus@gmail.com * Added crox fonts (issue 57) * Support for RA8835 (issue 45) + * Added support for SSD1322 and SSD1325 + * Added DrawXBMP (AVR: Assume bitmap in PROGMEM) diff --git a/cppsrc/U8g2lib.h b/cppsrc/U8g2lib.h index 2ff14871..af51241d 100644 --- a/cppsrc/U8g2lib.h +++ b/cppsrc/U8g2lib.h @@ -176,6 +176,8 @@ class U8G2 : public Print { u8g2_DrawBitmap(&u8g2, x, y, cnt, h, bitmap); } void drawXBM(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap) { u8g2_DrawXBM(&u8g2, x, y, w, h, bitmap); } + void drawXBMP(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap) + { u8g2_DrawXBMP(&u8g2, x, y, w, h, bitmap); } /* u8g2_polygon.c */ @@ -849,6 +851,24 @@ class U8G2_ST7920_192X32_F_8080 : public U8G2 { u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; +class U8G2_ST7920_192X32_1_6800 : public U8G2 { + public: U8G2_ST7920_192X32_1_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_st7920_192x32_1(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_ST7920_192X32_2_6800 : public U8G2 { + public: U8G2_ST7920_192X32_2_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_st7920_192x32_2(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_ST7920_192X32_F_6800 : public U8G2 { + public: U8G2_ST7920_192X32_F_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_st7920_192x32_f(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; class U8G2_ST7920_192X32_1_SW_SPI : public U8G2 { public: U8G2_ST7920_192X32_1_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { u8g2_Setup_st7920_s_192x32_1(&u8g2, rotation, u8x8_byte_4wire_sw_spi, u8x8_gpio_and_delay_arduino); @@ -903,6 +923,24 @@ class U8G2_ST7920_128X64_F_8080 : public U8G2 { u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; +class U8G2_ST7920_128X64_1_6800 : public U8G2 { + public: U8G2_ST7920_128X64_1_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_st7920_128x64_1(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_ST7920_128X64_2_6800 : public U8G2 { + public: U8G2_ST7920_128X64_2_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_st7920_128x64_2(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; +class U8G2_ST7920_128X64_F_6800 : public U8G2 { + public: U8G2_ST7920_128X64_F_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() { + u8g2_Setup_st7920_128x64_f(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; class U8G2_ST7920_128X64_1_SW_SPI : public U8G2 { public: U8G2_ST7920_128X64_1_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() { u8g2_Setup_st7920_s_128x64_1(&u8g2, rotation, u8x8_byte_4wire_sw_spi, u8x8_gpio_and_delay_arduino); diff --git a/cppsrc/U8x8lib.h b/cppsrc/U8x8lib.h index 1aecf6c2..257e2321 100644 --- a/cppsrc/U8x8lib.h +++ b/cppsrc/U8x8lib.h @@ -408,6 +408,12 @@ class U8X8_ST7920_192X32_8080 : public U8X8 { u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; +class U8X8_ST7920_192X32_6800 : public U8X8 { + public: U8X8_ST7920_192X32_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_st7920_192x32, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; class U8X8_ST7920_192X32_SW_SPI : public U8X8 { public: U8X8_ST7920_192X32_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7920_192x32, u8x8_cad_st7920_spi, u8x8_byte_4wire_sw_spi, u8x8_gpio_and_delay_arduino); @@ -426,6 +432,12 @@ class U8X8_ST7920_128X64_8080 : public U8X8 { u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); } }; +class U8X8_ST7920_128X64_6800 : public U8X8 { + public: U8X8_ST7920_128X64_6800(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8() { + u8x8_Setup(getU8x8(), u8x8_d_st7920_128x64, u8x8_cad_001, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino); + u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset); + } +}; class U8X8_ST7920_128X64_SW_SPI : public U8X8 { public: U8X8_ST7920_128X64_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8X8() { u8x8_Setup(getU8x8(), u8x8_d_st7920_128x64, u8x8_cad_st7920_spi, u8x8_byte_4wire_sw_spi, u8x8_gpio_and_delay_arduino); diff --git a/csrc/u8g2.h b/csrc/u8g2.h index fae4b4e2..69751868 100644 --- a/csrc/u8g2.h +++ b/csrc/u8g2.h @@ -473,12 +473,18 @@ void u8g2_Setup_ld7032_i2c_60x32_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8 void u8g2_Setup_st7920_p_192x32_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_st7920_p_192x32_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_st7920_p_192x32_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_st7920_192x32_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_st7920_192x32_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_st7920_192x32_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_st7920_s_192x32_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_st7920_s_192x32_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_st7920_s_192x32_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_st7920_p_128x64_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_st7920_p_128x64_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_st7920_p_128x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_st7920_128x64_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_st7920_128x64_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); +void u8g2_Setup_st7920_128x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_st7920_s_128x64_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_st7920_s_128x64_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); void u8g2_Setup_st7920_s_128x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb); @@ -566,6 +572,7 @@ void u8g2_SetDrawColor(u8g2_t *u8g2, uint8_t color) U8G2_NOINLINE; /* u8g: u8g_ void u8g2_DrawHorizontalBitmap(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t len, const uint8_t *b); void u8g2_DrawBitmap(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t cnt, u8g2_uint_t h, const uint8_t *bitmap); void u8g2_DrawXBM(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap); +void u8g2_DrawXBMP(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap); /* assumes bitmap in PROGMEM */ /*==========================================*/ diff --git a/csrc/u8g2_bitmap.c b/csrc/u8g2_bitmap.c index b894b407..dd8b6ff2 100644 --- a/csrc/u8g2_bitmap.c +++ b/csrc/u8g2_bitmap.c @@ -99,6 +99,7 @@ void u8g2_DrawBitmap(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t cnt } + void u8g2_DrawHXBM(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t len, const uint8_t *b) { uint8_t mask; @@ -150,3 +151,60 @@ void u8g2_DrawXBM(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g } } + + + + + +void u8g2_DrawHXBMP(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t len, const uint8_t *b) +{ + uint8_t mask; + uint8_t color = u8g2->draw_color; + uint8_t ncolor = 1-color; +#ifdef U8G2_WITH_INTERSECTION + if ( u8g2_IsIntersection(u8g2, x, y, x+len, y+1) == 0 ) + return; +#endif /* U8G2_WITH_INTERSECTION */ + + mask = 1; + while(len > 0) + { + if ( u8x8_pgm_read(b) & mask ) + u8g2->draw_color = color; + else + u8g2->draw_color = ncolor; + u8g2_DrawHVLine(u8g2, x, y, 1, 0); + x++; + mask <<= 1; + if ( mask == 0 ) + { + mask = 1; + b++; + } + len--; + } + u8g2->draw_color = color; +} + + +void u8g2_DrawXBMP(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap) +{ + u8g2_uint_t blen; + blen = w; + blen += 7; + blen >>= 3; +#ifdef U8G2_WITH_INTERSECTION + if ( u8g2_IsIntersection(u8g2, x, y, x+w, y+h) == 0 ) + return; +#endif /* U8G2_WITH_INTERSECTION */ + + while( h > 0 ) + { + u8g2_DrawHXBMP(u8g2, x, y, w, bitmap); + bitmap += blen; + y++; + h--; + } +} + + diff --git a/csrc/u8g2_d_setup.c b/csrc/u8g2_d_setup.c index 88c04dce..18f29056 100644 --- a/csrc/u8g2_d_setup.c +++ b/csrc/u8g2_d_setup.c @@ -285,6 +285,34 @@ void u8g2_Setup_st7920_p_192x32_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_ } /* st7920 */ /* st7920 1 */ +void u8g2_Setup_st7920_192x32_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_st7920_192x32, u8x8_cad_001, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_st7920_24_1(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} +/* st7920 2 */ +void u8g2_Setup_st7920_192x32_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_st7920_192x32, u8x8_cad_001, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_st7920_24_2(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} +/* st7920 f */ +void u8g2_Setup_st7920_192x32_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_st7920_192x32, u8x8_cad_001, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_st7920_24_f(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} +/* st7920 */ +/* st7920 1 */ void u8g2_Setup_st7920_s_192x32_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) { uint8_t tile_buf_height; @@ -341,6 +369,34 @@ void u8g2_Setup_st7920_p_128x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_ } /* st7920 */ /* st7920 1 */ +void u8g2_Setup_st7920_128x64_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_st7920_128x64, u8x8_cad_001, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_st7920_16_1(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} +/* st7920 2 */ +void u8g2_Setup_st7920_128x64_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_st7920_128x64, u8x8_cad_001, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_st7920_16_2(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} +/* st7920 f */ +void u8g2_Setup_st7920_128x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) +{ + uint8_t tile_buf_height; + uint8_t *buf; + u8g2_SetupDisplay(u8g2, u8x8_d_st7920_128x64, u8x8_cad_001, byte_cb, gpio_and_delay_cb); + buf = u8g2_m_st7920_16_f(&tile_buf_height); + u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation); +} +/* st7920 */ +/* st7920 1 */ void u8g2_Setup_st7920_s_128x64_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb) { uint8_t tile_buf_height; diff --git a/csrc/u8x8.h b/csrc/u8x8.h index 538a24c1..36e151d9 100644 --- a/csrc/u8x8.h +++ b/csrc/u8x8.h @@ -144,6 +144,7 @@ extern "C" { #if defined(__GNUC__) && defined(__AVR__) # define U8X8_FONT_SECTION(name) U8X8_SECTION(".progmem." name) # define u8x8_pgm_read(adr) pgm_read_byte_near(adr) +# define U8X8_PROGMEM PROGMEM #endif #ifndef U8X8_FONT_SECTION @@ -154,6 +155,10 @@ extern "C" { # define u8x8_pgm_read(adr) (*(const uint8_t *)(adr)) #endif +#ifndef U8X8_PROGMEM +# define U8X8_PROGMEM +#endif + #ifdef ARDUINO #define U8X8_USE_PINS #endif diff --git a/doc/u8g2_logo_128x64.xbm b/doc/u8g2_logo_128x64.xbm new file mode 100644 index 00000000..a8769995 --- /dev/null +++ b/doc/u8g2_logo_128x64.xbm @@ -0,0 +1,89 @@ +#define u8g2_logo_128x64_width 128 +#define u8g2_logo_128x64_height 64 +static unsigned char u8g2_logo_128x64_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xcf, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x83, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0x07, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x80, 0x07, 0xfc, 0x03, 0x1c, 0x00, 0x3e, 0x1c, 0xc0, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0x07, 0xff, 0x07, 0x7f, 0x80, 0xff, + 0x3f, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0x07, 0xff, + 0x8f, 0xff, 0xc1, 0xff, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x80, 0x87, 0xff, 0xdf, 0xff, 0xc1, 0xc3, 0x07, 0x7c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0x87, 0x0f, 0xfe, 0xff, 0xe3, 0x81, + 0x03, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x07, + 0xfc, 0xe3, 0xe3, 0x81, 0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x80, 0xc7, 0x07, 0xf8, 0xc1, 0xe7, 0x81, 0x87, 0xff, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0xf0, 0x80, 0xe7, 0xc3, + 0x87, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, + 0x70, 0x80, 0xc7, 0xe7, 0x83, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x80, 0xc7, 0x03, 0x78, 0x80, 0xc7, 0xff, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0xf8, 0xc0, 0x87, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x07, + 0xfc, 0xc1, 0xc7, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0xc0, 0x87, 0x0f, 0xfe, 0xff, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0xc0, 0x83, 0xff, 0xdf, 0xff, 0xe3, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf1, 0x03, 0xff, + 0x8f, 0xff, 0xe1, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0xff, 0x01, 0xfe, 0x0f, 0xff, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x00, 0xfc, 0x03, 0x7c, 0xc0, 0xff, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0xf8, + 0x01, 0x00, 0xe0, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x20, 0xf0, 0xc7, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc0, 0xff, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x24, 0x20, 0x00, 0x00, 0x08, 0x46, 0x02, + 0x00, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x6e, 0x6a, 0xc0, + 0xa4, 0x48, 0x04, 0xaa, 0xac, 0x8c, 0xaa, 0xac, 0x00, 0x00, 0x00, 0x00, + 0x6a, 0xa4, 0xaa, 0x20, 0xea, 0xa4, 0x64, 0x66, 0xaa, 0x46, 0x4a, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0xa4, 0xaa, 0x20, 0xaa, 0xa2, 0x44, 0x2a, + 0xaa, 0x28, 0xaa, 0x4c, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xa8, 0x6c, 0xc4, + 0xa4, 0x42, 0xee, 0x2a, 0xcc, 0x26, 0x6c, 0xe8, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 }; diff --git a/doc/u8g2_logo_97x51.xbm b/doc/u8g2_logo_97x51.xbm new file mode 100644 index 00000000..22767503 --- /dev/null +++ b/doc/u8g2_logo_97x51.xbm @@ -0,0 +1,59 @@ +#define u8g2_logo_97x51_width 97 +#define u8g2_logo_97x51_height 51 +static unsigned char u8g2_logo_97x51_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, + 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, + 0x03, 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x03, 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xcf, 0x07, 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x83, 0x07, 0x00, 0x00, 0x3c, 0x80, 0x07, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x81, 0x07, 0x00, 0x00, 0x3c, 0x80, 0x07, 0xfc, 0x03, + 0x1c, 0x00, 0x3e, 0x1c, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x80, 0x07, 0xff, + 0x07, 0x7f, 0x80, 0xff, 0x3f, 0xe0, 0x01, 0x00, 0x00, 0x3c, 0x80, 0x07, + 0xff, 0x8f, 0xff, 0xc1, 0xff, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x80, + 0x87, 0xff, 0xdf, 0xff, 0xc1, 0xc3, 0x07, 0x7c, 0x00, 0x00, 0x00, 0x3c, + 0x80, 0x87, 0x0f, 0xfe, 0xff, 0xe3, 0x81, 0x03, 0x1e, 0x00, 0x00, 0x00, + 0x3c, 0x80, 0xc7, 0x07, 0xfc, 0xe3, 0xe3, 0x81, 0x07, 0x0f, 0x00, 0x00, + 0x00, 0x3c, 0x80, 0xc7, 0x07, 0xf8, 0xc1, 0xe7, 0x81, 0x87, 0xff, 0x07, + 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0xf0, 0x80, 0xe7, 0xc3, 0x87, 0xff, + 0x07, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0x70, 0x80, 0xc7, 0xe7, 0x83, + 0xff, 0x07, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0x78, 0x80, 0xc7, 0xff, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0xf8, 0xc0, 0x87, + 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x07, 0xfc, 0xc1, + 0xc7, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xc0, 0x87, 0x0f, 0xfe, + 0xff, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xc0, 0x83, 0xff, + 0xdf, 0xff, 0xe3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf1, 0x03, + 0xff, 0x8f, 0xff, 0xe1, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, + 0x01, 0xfe, 0x0f, 0xff, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, + 0xff, 0x00, 0xfc, 0x03, 0x7c, 0xc0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x3f, 0x00, 0xf8, 0x01, 0x00, 0xe0, 0x01, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0, 0xc7, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc0, + 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x24, 0x20, 0x00, + 0x00, 0x08, 0x46, 0x02, 0x00, 0x80, 0xc0, 0x40, 0x00, 0x0c, 0x6e, 0x6a, + 0xc0, 0xa4, 0x48, 0x04, 0xaa, 0xac, 0x8c, 0xaa, 0xac, 0x00, 0x6a, 0xa4, + 0xaa, 0x20, 0xea, 0xa4, 0x64, 0x66, 0xaa, 0x46, 0x4a, 0x8a, 0x00, 0x4c, + 0xa4, 0xaa, 0x20, 0xaa, 0xa2, 0x44, 0x2a, 0xaa, 0x28, 0xaa, 0x4c, 0x00, + 0xe8, 0xa8, 0x6c, 0xc4, 0xa4, 0x42, 0xee, 0x2a, 0xcc, 0x26, 0x6c, 0xe8, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00 }; diff --git a/sys/arduino/u8g2_page_buffer/XBM/Makefile.105.uno b/sys/arduino/u8g2_page_buffer/XBM/Makefile.105.uno new file mode 100644 index 00000000..5b58d52a --- /dev/null +++ b/sys/arduino/u8g2_page_buffer/XBM/Makefile.105.uno @@ -0,0 +1,286 @@ + +# +# Arduino-1.0 Makefile +# +# written by olikraus@gmail.com +# +# Features: +# - boards.txt is used to derive parameters +# - All intermediate files are put into a separate directory (TMPDIRNAME) +# - Simple use: Copy Makefile into the same directory of the .ino file +# +# Limitations: +# - requires UNIX environment +# - TMPDIRNAME must be subdirectory of the current directory. +# +# Targets +# all build everything +# upload build and upload to arduino +# clean remove all temporary files (includes final hex file) +# +# History +# 001 28 Apr 2010 first release +# 002 05 Oct 2010 added 'uno' +# 003 06 Dec 2011 arduino 1.0 +# 004 11 Feb 2012 u8glib +# + +#=== user configuration === +# All ...PATH variables must have a '/' at the end + +# Board (and prozessor) information: see $(ARDUINO_PATH)hardware/arduino/boards.txt +# Some examples: +# BOARD DESCRIPTION +# uno Arduino Uno +# atmega328 Arduino Duemilanove or Nano w/ ATmega328 +# diecimila Arduino Diecimila, Duemilanove, or Nano w/ ATmega168 +# mega Arduino Mega +# mega2560 Arduino Mega2560 +# mini Arduino Mini +# lilypad328 LilyPad Arduino w/ ATmega328 +BOARD:=uno + +# additional definitions +#DEFS:=-DARDUINO=105 + + +U8G_PATH:=$(shell cd ../../../.. && pwd)/csrc/ +U8G_CPP_PATH:=$(shell cd ../../../.. && pwd)/cppsrc/ +#U8G_FONT_PATH:=$(shell cd ../../.. && pwd)/sfntsrc/ + + +# The location where the avr tools (e.g. avr-gcc) are located. Requires a '/' at the end. +# Can be empty if all tools are accessable through the search path +AVR_TOOLS_PATH:=/usr/bin/ + +# Install path of the arduino software. Requires a '/' at the end. +ARDUINO_PATH:=/home/kraus/prg/arduino-1.0.5-u8glib/ + +# Install path for avrdude. Requires a '/' at the end. Can be empty if avrdude is in the search path. +AVRDUDE_PATH:=$(ARDUINO_PATH)hardware/tools/ + +# The unix device where we can reach the arduino board +# Uno: /dev/ttyACM0 +# Duemilanove: /dev/ttyUSB0 +AVRDUDE_PORT:=/dev/ttyACM0 + +# List of all libaries which should be included. +EXTRA_DIRS=$(ARDUINO_PATH)libraries/LiquidCrystal/ +EXTRA_DIRS+=$(ARDUINO_PATH)libraries/SD/ +EXTRA_DIRS+=$(ARDUINO_PATH)libraries/SD/utility/ +EXTRA_DIRS+=$(ARDUINO_PATH)libraries/Wire/ +EXTRA_DIRS+=$(ARDUINO_PATH)libraries/Wire/utility/ +EXTRA_DIRS+=$(ARDUINO_PATH)libraries/SPI/ +#EXTRA_DIRS+=$(ARDUINO_PATH)libraries/.../ + +#=== fetch parameter from boards.txt processor parameter === +# the basic idea is to get most of the information from boards.txt + +BOARDS_TXT:=$(ARDUINO_PATH)hardware/arduino/boards.txt + +# get the MCU value from the $(BOARD).build.mcu variable. For the atmega328 board this is atmega328p +MCU:=$(shell sed -n -e "s/$(BOARD).build.mcu=\(.*\)/\1/p" $(BOARDS_TXT)) +# get the F_CPU value from the $(BOARD).build.f_cpu variable. For the atmega328 board this is 16000000 +F_CPU:=$(shell sed -n -e "s/$(BOARD).build.f_cpu=\(.*\)/\1/p" $(BOARDS_TXT)) +# get variant subfolder +VARIANT:=$(shell sed -n -e "s/$(BOARD).build.variant=\(.*\)/\1/p" $(BOARDS_TXT)) + + +# avrdude +# get the AVRDUDE_UPLOAD_RATE value from the $(BOARD).upload.speed variable. For the atmega328 board this is 57600 +AVRDUDE_UPLOAD_RATE:=$(shell sed -n -e "s/$(BOARD).upload.speed=\(.*\)/\1/p" $(BOARDS_TXT)) +# get the AVRDUDE_PROGRAMMER value from the $(BOARD).upload.protocol variable. For the atmega328 board this is stk500 +AVRDUDE_PROGRAMMER:=$(shell sed -n -e "s/$(BOARD).upload.protocol=\(.*\)/\1/p" $(BOARDS_TXT)) +# use stk500v1, because stk500 will default to stk500v2 +#AVRDUDE_PROGRAMMER:=stk500v1 + +#=== identify user files === +INOSRC:=$(shell ls *.ino) +TARGETNAME=$(basename $(INOSRC)) + +CDIRS:=$(EXTRA_DIRS) $(addsuffix utility/,$(EXTRA_DIRS)) +CDIRS:=*.c utility/*.c $(U8G_PATH)*.c $(addsuffix *.c,$(CDIRS)) $(ARDUINO_PATH)hardware/arduino/cores/arduino/*.c +CSRC:=$(shell ls $(CDIRS) 2>/dev/null) + +CCSRC:=$(shell ls *.cc 2>/dev/null) + +CPPDIRS:=$(EXTRA_DIRS) $(addsuffix utility/,$(EXTRA_DIRS)) $(U8G_CPP_PATH) +CPPDIRS:=*.cpp utility/*.cpp $(addsuffix *.cpp,$(CPPDIRS)) $(ARDUINO_PATH)hardware/arduino/cores/arduino/*.cpp +CPPSRC:=$(shell ls $(CPPDIRS) 2>/dev/null) + +#=== build internal variables === + +# the name of the subdirectory where everything is stored +TMPDIRNAME:=tmp +TMPDIRPATH:=$(TMPDIRNAME)/ + +AVRTOOLSPATH:=$(AVR_TOOLS_PATH) + +OBJCOPY:=$(AVRTOOLSPATH)avr-objcopy +OBJDUMP:=$(AVRTOOLSPATH)avr-objdump +SIZE:=$(AVRTOOLSPATH)avr-size + +CPPSRC:=$(addprefix $(TMPDIRPATH),$(INOSRC:.ino=.cpp)) $(CPPSRC) + +COBJ:=$(CSRC:.c=.o) +CCOBJ:=$(CCSRC:.cc=.o) +CPPOBJ:=$(CPPSRC:.cpp=.o) + +OBJFILES:=$(COBJ) $(CCOBJ) $(CPPOBJ) +DIRS:= $(dir $(OBJFILES)) + +DEPFILES:=$(OBJFILES:.o=.d) +# assembler files from avr-gcc -S +ASSFILES:=$(OBJFILES:.o=.s) +# disassembled object files with avr-objdump -S +DISFILES:=$(OBJFILES:.o=.dis) + + +LIBNAME:=$(TMPDIRPATH)$(TARGETNAME).a +ELFNAME:=$(TMPDIRPATH)$(TARGETNAME).elf +HEXNAME:=$(TMPDIRPATH)$(TARGETNAME).hex + +AVRDUDE_FLAGS = -V -F +AVRDUDE_FLAGS += -C $(ARDUINO_PATH)/hardware/tools/avrdude.conf +AVRDUDE_FLAGS += -p $(MCU) +AVRDUDE_FLAGS += -P $(AVRDUDE_PORT) +AVRDUDE_FLAGS += -c $(AVRDUDE_PROGRAMMER) +AVRDUDE_FLAGS += -b $(AVRDUDE_UPLOAD_RATE) +AVRDUDE_FLAGS += -U flash:w:$(HEXNAME) + +AVRDUDE = $(AVRDUDE_PATH)avrdude + +#=== predefined variable override === +# use "make -p -f/dev/null" to see the default rules and definitions + +# Build C and C++ flags. Include path information must be placed here +COMMON_FLAGS = -DF_CPU=$(F_CPU) -mmcu=$(MCU) $(DEFS) -DARDUINO=100 +# COMMON_FLAGS += -gdwarf-2 +COMMON_FLAGS += -Os +COMMON_FLAGS += -Wall -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums +COMMON_FLAGS += -I$(ARDUINO_PATH)hardware/arduino/cores/arduino +COMMON_FLAGS += -I$(ARDUINO_PATH)hardware/arduino/variants/$(VARIANT) +COMMON_FLAGS += -I. -I$(U8G_PATH) -I$(U8G_CPP_PATH) +COMMON_FLAGS += $(addprefix -I,$(EXTRA_DIRS)) +COMMON_FLAGS += -ffunction-sections -fdata-sections -Wl,--gc-sections +COMMON_FLAGS += -Wl,--Map=output.map +COMMON_FLAGS += -Wl,--relax +COMMON_FLAGS += -mcall-prologues + +CFLAGS = $(COMMON_FLAGS) -std=gnu99 -Wstrict-prototypes +CXXFLAGS = $(COMMON_FLAGS) + +# Replace standard build tools by avr tools +CC = $(AVRTOOLSPATH)avr-gcc +CXX = $(AVRTOOLSPATH)avr-g++ +AR = @$(AVRTOOLSPATH)avr-ar + + +# "rm" must be able to delete a directory tree +RM = rm -rf + +#=== rules === + +# add rules for the C/C++ files where the .o file is placed in the TMPDIRPATH +# reuse existing variables as far as possible + +$(TMPDIRPATH)%.o: %.c + @echo compile $< + @$(COMPILE.c) $(OUTPUT_OPTION) $< + +$(TMPDIRPATH)%.o: %.cc + @echo compile $< + @$(COMPILE.cc) $(OUTPUT_OPTION) $< + +$(TMPDIRPATH)%.o: %.cpp + @echo compile $< + @$(COMPILE.cpp) $(OUTPUT_OPTION) $< + +$(TMPDIRPATH)%.s: %.c + @$(COMPILE.c) $(OUTPUT_OPTION) -S $< + +$(TMPDIRPATH)%.s: %.cc + @$(COMPILE.cc) $(OUTPUT_OPTION) -S $< + +$(TMPDIRPATH)%.s: %.cpp + @$(COMPILE.cpp) $(OUTPUT_OPTION) -S $< + +$(TMPDIRPATH)%.dis: $(TMPDIRPATH)%.o + @$(OBJDUMP) -S $< > $@ + +.SUFFIXES: .elf .hex .ino + +.elf.hex: + @$(OBJCOPY) -O ihex -R .eeprom $< $@ + +$(TMPDIRPATH)%.cpp: %.ino + @cat $(ARDUINO_PATH)hardware/arduino/cores/arduino/main.cpp > $@ + @cat $< >> $@ + @echo >> $@ + @echo 'extern "C" void __cxa_pure_virtual() { while (1); }' >> $@ + + +.PHONY: all +all: tmpdir $(HEXNAME) assemblersource showsize + ls -al $(HEXNAME) $(ELFNAME) + +$(ELFNAME): $(LIBNAME)($(addprefix $(TMPDIRPATH),$(OBJFILES))) + $(LINK.o) $(COMMON_FLAGS) $(LIBNAME) $(LOADLIBES) $(LDLIBS) -o $@ + +$(LIBNAME)(): $(addprefix $(TMPDIRPATH),$(OBJFILES)) + +#=== create temp directory === +# not really required, because it will be also created during the dependency handling +.PHONY: tmpdir +tmpdir: + @test -d $(TMPDIRPATH) || mkdir $(TMPDIRPATH) + +#=== create assembler files for each C/C++ file === +.PHONY: assemblersource +assemblersource: $(addprefix $(TMPDIRPATH),$(ASSFILES)) $(addprefix $(TMPDIRPATH),$(DISFILES)) + + +#=== show the section sizes of the ELF file === +.PHONY: showsize +showsize: $(ELFNAME) + $(SIZE) $< + +#=== clean up target === +# this is simple: the TMPDIRPATH is removed +.PHONY: clean +clean: + $(RM) $(TMPDIRPATH) + +# Program the device. +# step 1: reset the arduino board with the stty command +# step 2: user avrdude to upload the software +.PHONY: upload +upload: $(HEXNAME) + stty -F $(AVRDUDE_PORT) hupcl + $(AVRDUDE) $(AVRDUDE_FLAGS) + + +# === dependency handling === +# From the gnu make manual (section 4.14, Generating Prerequisites Automatically) +# Additionally (because this will be the first executed rule) TMPDIRPATH is created here. +# Instead of "sed" the "echo" command is used +# cd $(TMPDIRPATH); mkdir -p $(DIRS) 2> /dev/null; cd .. +DEPACTION=test -d $(TMPDIRPATH) || mkdir $(TMPDIRPATH);\ +mkdir -p $(addprefix $(TMPDIRPATH),$(DIRS));\ +set -e; echo -n $@ $(dir $@) > $@; $(CC) -MM $(COMMON_FLAGS) $< >> $@ + + +$(TMPDIRPATH)%.d: %.c + @$(DEPACTION) + +$(TMPDIRPATH)%.d: %.cc + @$(DEPACTION) + +$(TMPDIRPATH)%.d: %.cpp + @$(DEPACTION) + +# Include dependency files. If a .d file is missing, a warning is created and the .d file is created +# This warning is not a problem (gnu make manual, section 3.3 Including Other Makefiles) +-include $(addprefix $(TMPDIRPATH),$(DEPFILES)) + + diff --git a/sys/arduino/u8g2_page_buffer/XBM/XBM.ino b/sys/arduino/u8g2_page_buffer/XBM/XBM.ino new file mode 100644 index 00000000..709bb285 --- /dev/null +++ b/sys/arduino/u8g2_page_buffer/XBM/XBM.ino @@ -0,0 +1,196 @@ +/* + + HelloWorld.ino + + Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/) + + Copyright (c) 2016, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * 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. + + 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. + +*/ + +#include +#include + +#ifdef U8X8_HAVE_HW_SPI +#include +#endif +#ifdef U8X8_HAVE_HW_I2C +#include +#endif + + +/* + U8glib Example Overview: + Frame Buffer Examples: clearBuffer/sendBuffer. Fast, but may not work with all Arduino boards because of RAM consumption + Page Buffer Examples: firstPage/nextPage. Less RAM usage, should work with all Arduino boards. + U8x8 Text Only Example: No RAM usage, direct communication with display controller. No graphics, 8x8 Text only. + + This is a page buffer example. +*/ + +// Please UNCOMMENT one of the contructor lines below +// U8g2 Contructor List (Picture Loop Page Buffer) +// The complete list is available here: https://github.com/olikraus/u8g2/wiki/u8g2setupcpp +// Please update the pin numbers according to your setup. Use U8X8_PIN_NONE if the reset pin is not connected +//U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +//U8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 12, /* dc=*/ 4, /* reset=*/ 6); // Arduboy (Production, Kickstarter Edition) +//U8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +//U8G2_SSD1306_128X64_NONAME_1_3W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* reset=*/ 8); +//U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* reset=*/ 8); +//U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // All Boards without Reset of the Display +//U8G2_SSD1306_128X64_NONAME_1_6800 u8g2(U8G2_R0, 13, 11, 2, 3, 4, 5, 6, A4, /*enable=*/ 7, /*cs=*/ 10, /*dc=*/ 9, /*reset=*/ 8); +//U8G2_SSD1306_128X64_NONAME_1_8080 u8g2(U8G2_R0, 13, 11, 2, 3, 4, 5, 6, A4, /*enable=*/ 7, /*cs=*/ 10, /*dc=*/ 9, /*reset=*/ 8); +//U8G2_SH1106_128X64_NONAME_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +//U8G2_SSD1306_128X32_UNIVISION_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ 21, /* data=*/ 20, /* reset=*/ U8X8_PIN_NONE); // Adafruit Feather M0 Basic Proto + FeatherWing OLED +//U8G2_SSD1306_128X32_UNIVISION_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // Adafruit Feather ESP8266/32u4 Boards + FeatherWing OLED +//U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // Adafruit ESP8266/32u4/ARM Boards + FeatherWing OLED +U8G2_SSD1322_NHD_256X64_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +//U8G2_SSD1322_NHD_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +//U8G2_SSD1325_NHD_128X64_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +//U8G2_SSD1325_NHD_128X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +//U8G2_LD7032_60X32_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 11, /* data=*/ 12, /* cs=*/ 9, /* dc=*/ 10, /* reset=*/ 8); // SW SPI Nano Board +//U8G2_LD7032_60X32_1_4W_SW_I2C u8g2(U8G2_R0, /* clock=*/ 11, /* data=*/ 12, /* reset=*/ U8X8_PIN_NONE); // NOT TESTED! +//U8G2_UC1701_EA_DOGS102_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +//U8G2_UC1701_EA_DOGS102_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +//U8G2_ST7920_192X32_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 18, /*cs=*/ U8X8_PIN_NONE, /*dc=*/ 17, /*reset=*/ U8X8_PIN_NONE); +//U8G2_ST7920_192X32_1_SW_SPI u8g2(U8G2_R0, /* clock=*/ 18 /* A4 */ , /* data=*/ 16 /* A2 */, /* CS=*/ 17 /* A3 */, /* reset=*/ U8X8_PIN_NONE); +//U8G2_ST7920_128X64_1_SW_SPI u8g2(U8G2_R0, /* clock=*/ 18 /* A4 */ , /* data=*/ 16 /* A2 */, /* CS=*/ 17 /* A3 */, /* reset=*/ U8X8_PIN_NONE); +//U8G2_ST7920_128X64_1_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* CS=*/ 10, /* reset=*/ 8); +//U8G2_ST7920_128X64_1_HW_SPI u8g2(U8G2_R0, /* CS=*/ 10, /* reset=*/ 8); +//U8G2_ST7565_EA_DOGM128_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +//U8G2_ST7565_EA_DOGM128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +//U8G2_ST7565_NHD_C12832_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +//U8G2_ST7565_NHD_C12832_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); +//U8G2_T6963_240X128_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 17, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect RD with +5V, FS0 and FS1 with GND +//U8G2_T6963_256X64_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 17, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect RD with +5V, FS0 and FS1 with GND +//U8G2_SED1330_240X128_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 17, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect /RD = E with +5V, enable is /WR = RW, FG with GND, 14=Uno Pin A0 +//U8G2_SED1330_240X128_1_6800 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 17, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // A0 is dc pin, /WR = RW = GND, enable is /RD = E +//U8G2_RA8835_NHD_240X128_1_8080 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 17, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // Connect /RD = E with +5V, enable is /WR = RW, FG with GND, 14=Uno Pin A0 +//U8G2_RA8835_NHD_240X128_1_6800 u8g2(U8G2_R0, 8, 9, 10, 11, 4, 5, 6, 7, /*enable=*/ 17, /*cs=*/ 14, /*dc=*/ 15, /*reset=*/ 16); // A0 is dc pin, /WR = RW = GND, enable is /RD = E + + + + + +// End of constructor list + + + +// XBM file start +// variable name changed from +// static unsigned char u8g2_logo_97x51_bits[] +// to +// static const unsigned char u8g2_logo_97x51_bits[] U8X8_PROGMEM + + +#define u8g2_logo_97x51_width 97 +#define u8g2_logo_97x51_height 51 +static const unsigned char u8g2_logo_97x51_bits[] U8X8_PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, + 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, + 0x03, 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x03, 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xcf, 0x07, 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x83, 0x07, 0x00, 0x00, 0x3c, 0x80, 0x07, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x81, 0x07, 0x00, 0x00, 0x3c, 0x80, 0x07, 0xfc, 0x03, + 0x1c, 0x00, 0x3e, 0x1c, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x80, 0x07, 0xff, + 0x07, 0x7f, 0x80, 0xff, 0x3f, 0xe0, 0x01, 0x00, 0x00, 0x3c, 0x80, 0x07, + 0xff, 0x8f, 0xff, 0xc1, 0xff, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x80, + 0x87, 0xff, 0xdf, 0xff, 0xc1, 0xc3, 0x07, 0x7c, 0x00, 0x00, 0x00, 0x3c, + 0x80, 0x87, 0x0f, 0xfe, 0xff, 0xe3, 0x81, 0x03, 0x1e, 0x00, 0x00, 0x00, + 0x3c, 0x80, 0xc7, 0x07, 0xfc, 0xe3, 0xe3, 0x81, 0x07, 0x0f, 0x00, 0x00, + 0x00, 0x3c, 0x80, 0xc7, 0x07, 0xf8, 0xc1, 0xe7, 0x81, 0x87, 0xff, 0x07, + 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0xf0, 0x80, 0xe7, 0xc3, 0x87, 0xff, + 0x07, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0x70, 0x80, 0xc7, 0xe7, 0x83, + 0xff, 0x07, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0x78, 0x80, 0xc7, 0xff, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0xf8, 0xc0, 0x87, + 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x07, 0xfc, 0xc1, + 0xc7, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xc0, 0x87, 0x0f, 0xfe, + 0xff, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xc0, 0x83, 0xff, + 0xdf, 0xff, 0xe3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf1, 0x03, + 0xff, 0x8f, 0xff, 0xe1, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, + 0x01, 0xfe, 0x0f, 0xff, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, + 0xff, 0x00, 0xfc, 0x03, 0x7c, 0xc0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x3f, 0x00, 0xf8, 0x01, 0x00, 0xe0, 0x01, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0, 0xc7, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc0, + 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x24, 0x20, 0x00, + 0x00, 0x08, 0x46, 0x02, 0x00, 0x80, 0xc0, 0x40, 0x00, 0x0c, 0x6e, 0x6a, + 0xc0, 0xa4, 0x48, 0x04, 0xaa, 0xac, 0x8c, 0xaa, 0xac, 0x00, 0x6a, 0xa4, + 0xaa, 0x20, 0xea, 0xa4, 0x64, 0x66, 0xaa, 0x46, 0x4a, 0x8a, 0x00, 0x4c, + 0xa4, 0xaa, 0x20, 0xaa, 0xa2, 0x44, 0x2a, 0xaa, 0x28, 0xaa, 0x4c, 0x00, + 0xe8, 0xa8, 0x6c, 0xc4, 0xa4, 0x42, 0xee, 0x2a, 0xcc, 0x26, 0x6c, 0xe8, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00 }; + + + +void setup(void) { + + /* U8g2 Project: SSD1306 Test Board */ + //pinMode(10, OUTPUT); + //pinMode(9, OUTPUT); + //digitalWrite(10, 0); + //digitalWrite(9, 0); + + /* U8g2 Project: T6963 Test Board */ + //pinMode(18, OUTPUT); + //digitalWrite(18, 1); + + u8g2.begin(); +} + +void loop(void) { + u8g2.firstPage(); + do { + u8g2.setFont(u8g2_font_ncenB14_tr); + u8g2.drawXBMP(0,0, u8g2_logo_97x51_width, u8g2_logo_97x51_height, u8g2_logo_97x51_bits); + } while ( u8g2.nextPage() ); + //delay(1000); +} + diff --git a/sys/sdl/xbm/Makefile b/sys/sdl/xbm/Makefile new file mode 100644 index 00000000..9f409a66 --- /dev/null +++ b/sys/sdl/xbm/Makefile @@ -0,0 +1,12 @@ +CFLAGS = -g -Wall -I../../../csrc/. `sdl-config --cflags` + +SRC = $(shell ls ../../../csrc/*.c) $(shell ls ../common/*.c ) main.c + +OBJ = $(SRC:.c=.o) + +helloworld: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) $(OBJ) `sdl-config --libs` -o u8g2_sdl + +clean: + -rm $(OBJ) u8g2_sdl + diff --git a/sys/sdl/xbm/main.c b/sys/sdl/xbm/main.c new file mode 100644 index 00000000..876ab971 --- /dev/null +++ b/sys/sdl/xbm/main.c @@ -0,0 +1,191 @@ + +#include "u8g2.h" +#include + + +u8g2_t u8g2; + + +#define u8g2_logo_97x51_width 97 +#define u8g2_logo_97x51_height 51 +static unsigned char u8g2_logo_97x51_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, + 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, + 0x03, 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x03, 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xcf, 0x07, 0x00, 0x00, 0x3c, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x83, 0x07, 0x00, 0x00, 0x3c, 0x80, 0x07, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x81, 0x07, 0x00, 0x00, 0x3c, 0x80, 0x07, 0xfc, 0x03, + 0x1c, 0x00, 0x3e, 0x1c, 0xc0, 0x03, 0x00, 0x00, 0x3c, 0x80, 0x07, 0xff, + 0x07, 0x7f, 0x80, 0xff, 0x3f, 0xe0, 0x01, 0x00, 0x00, 0x3c, 0x80, 0x07, + 0xff, 0x8f, 0xff, 0xc1, 0xff, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x80, + 0x87, 0xff, 0xdf, 0xff, 0xc1, 0xc3, 0x07, 0x7c, 0x00, 0x00, 0x00, 0x3c, + 0x80, 0x87, 0x0f, 0xfe, 0xff, 0xe3, 0x81, 0x03, 0x1e, 0x00, 0x00, 0x00, + 0x3c, 0x80, 0xc7, 0x07, 0xfc, 0xe3, 0xe3, 0x81, 0x07, 0x0f, 0x00, 0x00, + 0x00, 0x3c, 0x80, 0xc7, 0x07, 0xf8, 0xc1, 0xe7, 0x81, 0x87, 0xff, 0x07, + 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0xf0, 0x80, 0xe7, 0xc3, 0x87, 0xff, + 0x07, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0x70, 0x80, 0xc7, 0xe7, 0x83, + 0xff, 0x07, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0x78, 0x80, 0xc7, 0xff, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x03, 0xf8, 0xc0, 0x87, + 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x80, 0xc7, 0x07, 0xfc, 0xc1, + 0xc7, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xc0, 0x87, 0x0f, 0xfe, + 0xff, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xc0, 0x83, 0xff, + 0xdf, 0xff, 0xe3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf1, 0x03, + 0xff, 0x8f, 0xff, 0xe1, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, + 0x01, 0xfe, 0x0f, 0xff, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, + 0xff, 0x00, 0xfc, 0x03, 0x7c, 0xc0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x3f, 0x00, 0xf8, 0x01, 0x00, 0xe0, 0x01, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0, 0xc7, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc0, + 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x24, 0x20, 0x00, + 0x00, 0x08, 0x46, 0x02, 0x00, 0x80, 0xc0, 0x40, 0x00, 0x0c, 0x6e, 0x6a, + 0xc0, 0xa4, 0x48, 0x04, 0xaa, 0xac, 0x8c, 0xaa, 0xac, 0x00, 0x6a, 0xa4, + 0xaa, 0x20, 0xea, 0xa4, 0x64, 0x66, 0xaa, 0x46, 0x4a, 0x8a, 0x00, 0x4c, + 0xa4, 0xaa, 0x20, 0xaa, 0xa2, 0x44, 0x2a, 0xaa, 0x28, 0xaa, 0x4c, 0x00, + 0xe8, 0xa8, 0x6c, 0xc4, 0xa4, 0x42, 0xee, 0x2a, 0xcc, 0x26, 0x6c, 0xe8, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00 }; + + + // picture from issue 60 + const unsigned char FESTO[330]= { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xfc, 0xff, + 0xff, 0xfe, 0x7f, 0xff, 0xfc, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xfc, 0x7f, 0xff, 0xfc, 0xff, + 0xff, 0xfe, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xfc, 0x7f, 0xff, 0xfc, 0xff, + 0xff, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xfe, 0x7f, 0xff, 0xfc, 0xff, + 0xff, 0xfc, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xfe, 0x7f, 0xff, 0xfe, 0x7e, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x7e, 0x7e, + 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, + 0x3e, 0x7e, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x7c, 0x00, + 0x7c, 0x00, 0x3e, 0x7e, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x7c, 0x00, 0x3e, 0x7f, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, + 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x3e, 0x7f, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, + 0xfc, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x3e, 0x7f, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0x7f, + 0xff, 0xfe, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x3e, 0x7f, 0xff, 0xf8, 0xff, 0xff, 0xf8, + 0x3f, 0xff, 0xfe, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x3e, 0x7e, 0x00, 0x00, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x3e, 0x7e, + 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x7c, + 0x00, 0x3e, 0x7e, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, + 0x7c, 0x00, 0x7c, 0x00, 0x3e, 0x7e, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, + 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x3e, 0x7e, 0x00, 0x00, 0xff, + 0xff, 0xfc, 0xff, 0xff, 0xfe, 0x00, 0x7c, 0x00, 0x7f, 0xff, 0xfe, 0x7e, 0x00, + 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfe, 0x00, 0x7c, 0x00, 0x7f, 0xff, 0xfe, + 0x7e, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfc, 0x00, 0x7c, 0x00, 0x7f, + 0xff, 0xfc, 0x7e, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xfc, 0x00, 0x7c, + 0x00, 0x3f, 0xff, 0xfc, 0x7e, 0x00, 0x00, 0xff, + 0xff, 0xfe, 0x1f, 0xff, 0xf0, 0x00, 0x7c, 0x00, 0x1f, 0xff, 0xf8, }; + + +int main(void) +{ + int x, y; + int k; + int i; + + u8g2_SetupBuffer_SDL_128x64_4(&u8g2, &u8g2_cb_r0); + u8x8_InitDisplay(u8g2_GetU8x8(&u8g2)); + u8x8_SetPowerSave(u8g2_GetU8x8(&u8g2), 0); + + u8g2_SetFont(&u8g2, u8g2_font_6x10_tf); + + x = 30; + y = 31-7; + + + for(;;) + { +#ifdef U8G2_WITH_HVLINE_COUNT + u8g2.hv_cnt = 0UL; +#endif /* U8G2_WITH_HVLINE_COUNT */ + + /* + u8g2_ClearBuffer(&u8g2); + + u8g2_SetFontDirection(&u8g2, 0); + u8g2_DrawStr(&u8g2, x, y, "ABC"); + u8g2_SetFontDirection(&u8g2, 1); + u8g2_DrawStr(&u8g2, x, y, "abc"); + u8g2_SetFontDirection(&u8g2, 2); + u8g2_DrawStr(&u8g2, x, y, "abc"); + u8g2_SetFontDirection(&u8g2, 3); + u8g2_DrawStr(&u8g2, x, y, "abc"); + + u8g2_SendBuffer(&u8g2); + */ + + u8g2_FirstPage(&u8g2); + i = 0; + do + { + + u8g2_DrawXBMP(&u8g2, x, y, u8g2_logo_97x51_width, u8g2_logo_97x51_height, u8g2_logo_97x51_bits); + //u8g2_DrawXBM(&u8g2, x, y, 120, 22, FESTO); + + + + if ( i == 1 ) + { + u8g2_DrawHVLine(&u8g2, u8g2.user_x0, u8g2.user_y0, 1, 0); + u8g2_DrawHVLine(&u8g2, u8g2.user_x0, u8g2.user_y1-1, 1, 0); + u8g2_DrawHVLine(&u8g2, u8g2.user_x1-1, u8g2.user_y1-1, 1, 0); + u8g2_DrawHVLine(&u8g2, u8g2.user_x1-1, u8g2.user_y0, 1, 0); + + } + + i++; + + + } while( u8g2_NextPage(&u8g2) ); +#ifdef U8G2_WITH_HVLINE_COUNT + printf("hv cnt: %ld\n", u8g2.hv_cnt); +#endif /* U8G2_WITH_HVLINE_COUNT */ + + do + { + k = u8g_sdl_get_key(); + } while( k < 0 ); + + if ( k == 273 ) y -= 1; + if ( k == 274 ) y += 1; + if ( k == 276 ) x -= 1; + if ( k == 275 ) x += 1; + + if ( k == 'e' ) y -= 1; + if ( k == 'x' ) y += 1; + if ( k == 's' ) x -= 1; + if ( k == 'd' ) x += 1; + if ( k == 'q' ) break; + + } + + //u8x8_Set8x8Font(u8g2_GetU8x8(&u8g2), bdf_font); + //u8x8_Draw8x8String(u8g2_GetU8x8(&u8g2), 0, 0, "Hello World!"); + + + + + + + return 0; +} + diff --git a/tools/codebuild/codebuild.c b/tools/codebuild/codebuild.c index 223e5d0a..7066201e 100644 --- a/tools/codebuild/codebuild.c +++ b/tools/codebuild/codebuild.c @@ -149,6 +149,14 @@ struct controller controller_list[] = { NULL } } }, + { + "st7920", 24, 4, "u8g2_ll_hvline_horizontal_right_lsb", "u8x8_cad_001", "", COM_6800, + "", /* is_generate_u8g2_class= */ 1, + { + { "192x32" }, + { NULL } + } + }, { "st7920", 24, 4, "u8g2_ll_hvline_horizontal_right_lsb", "u8x8_cad_st7920_spi", "s", COM_ST7920SPI, "", /* is_generate_u8g2_class= */ 1, @@ -165,6 +173,14 @@ struct controller controller_list[] = { NULL } } }, + { + "st7920", 16, 8, "u8g2_ll_hvline_horizontal_right_lsb", "u8x8_cad_001", "", COM_6800, + "", /* is_generate_u8g2_class= */ 1, + { + { "128x64" }, + { NULL } + } + }, { "st7920", 16, 8, "u8g2_ll_hvline_horizontal_right_lsb", "u8x8_cad_st7920_spi", "s", COM_ST7920SPI, "", /* is_generate_u8g2_class= */ 1, diff --git a/tools/font/build/build.c b/tools/font/build/build.c index 4c41e786..814a9439 100644 --- a/tools/font/build/build.c +++ b/tools/font/build/build.c @@ -283,6 +283,9 @@ struct fontinfo fi[] = { { 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "chinese2.map", "_chinese2" }, { 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "chinese3.map", "_chinese3" }, + { 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese1" }, + { 0, "unifont.bdf", "unifont", 6, 0, BM_T, FM_C, MM_M, "japanese1.map", "_japanese2" }, + { 0, "gb16st.bdf", "gb16st", 13, 0, BM_T, FM_C, MM_M, "chinese1.map", "_1" }, { 0, "gb16st.bdf", "gb16st", 13, 0, BM_T, FM_C, MM_M, "chinese2.map", "_2" }, { 0, "gb16st.bdf", "gb16st", 13, 0, BM_T, FM_C, MM_M, "chinese3.map", "_3" }, diff --git a/tools/font/build/japanese1.map b/tools/font/build/japanese1.map new file mode 100644 index 00000000..0857bf4a --- /dev/null +++ b/tools/font/build/japanese1.map @@ -0,0 +1,1008 @@ +32-127, +$3040-$30ff, +$4E00, +$4E03, +$4E09, +$4E0A, +$4E0B, +$4E2D, +$4E5D, +$4E8C, +$4E94, +$4EBA, +$4F11, +$5148, +$5165, +$516B, +$516D, +$5186, +$51FA, +$529B, +$5341, +$5343, +$53E3, +$53F3, +$540D, +$56DB, +$571F, +$5915, +$5927, +$5929, +$5973, +$5B50, +$5B57, +$5B66, +$5C0F, +$5C71, +$5DDD, +$5DE6, +$5E74, +$624B, +$6587, +$65E5, +$65E9, +$6708, +$6728, +$672C, +$6751, +$6797, +$6821, +$68EE, +$6B63, +$6C17, +$6C34, +$706B, +$72AC, +$7389, +$738B, +$751F, +$7530, +$7537, +$753A, +$767D, +$767E, +$76EE, +$77F3, +$7A7A, +$7ACB, +$7AF9, +$7CF8, +$8033, +$82B1, +$8349, +$866B, +$898B, +$8C9D, +$8D64, +$8DB3, +$8ECA, +$91D1, +$96E8, +$9752, +$97F3, +$4E07, +$4E38, +$4EA4, +$4EAC, +$4ECA, +$4F1A, +$4F53, +$4F55, +$4F5C, +$5143, +$5144, +$5149, +$516C, +$5185, +$51AC, +$5200, +$5206, +$5207, +$524D, +$5317, +$5348, +$534A, +$5357, +$539F, +$53CB, +$53E4, +$53F0, +$5408, +$540C, +$56DE, +$56F3, +$56FD, +$5712, +$5730, +$5834, +$58F0, +$58F2, +$590F, +$5916, +$591A, +$591C, +$592A, +$59B9, +$59C9, +$5BA4, +$5BB6, +$5BFA, +$5C11, +$5CA9, +$5DE5, +$5E02, +$5E30, +$5E83, +$5E97, +$5F13, +$5F15, +$5F1F, +$5F31, +$5F37, +$5F53, +$5F62, +$5F8C, +$5FC3, +$601D, +$6238, +$624D, +$6559, +$6570, +$65B0, +$65B9, +$660E, +$661F, +$6625, +$663C, +$6642, +$6674, +$66DC, +$66F8, +$671D, +$6765, +$6771, +$697D, +$6B4C, +$6B62, +$6B69, +$6BCD, +$6BCE, +$6BDB, +$6C60, +$6C7D, +$6D3B, +$6D77, +$70B9, +$7236, +$725B, +$7406, +$7528, +$753B, +$756A, +$76F4, +$77E2, +$77E5, +$793E, +$79CB, +$79D1, +$7B54, +$7B97, +$7C73, +$7D19, +$7D30, +$7D44, +$7D75, +$7DDA, +$7FBD, +$8003, +$805E, +$8089, +$81EA, +$8239, +$8272, +$8336, +$884C, +$897F, +$89AA, +$89D2, +$8A00, +$8A08, +$8A18, +$8A71, +$8A9E, +$8AAD, +$8C37, +$8CB7, +$8D70, +$8FD1, +$901A, +$9031, +$9053, +$9060, +$91CC, +$91CE, +$9577, +$9580, +$9593, +$96EA, +$96F2, +$96FB, +$982D, +$9854, +$98A8, +$98DF, +$9996, +$99AC, +$9AD8, +$9B5A, +$9CE5, +$9CF4, +$9EA6, +$9EC4, +$9ED2, +$4E01, +$4E16, +$4E21, +$4E3B, +$4E57, +$4E88, +$4E8B, +$4ED5, +$4ED6, +$4EE3, +$4F4F, +$4F7F, +$4FC2, +$500D, +$5168, +$5177, +$5199, +$5217, +$52A9, +$52C9, +$52D5, +$52DD, +$5316, +$533A, +$533B, +$53BB, +$53CD, +$53D6, +$53D7, +$53F7, +$5411, +$541B, +$5473, +$547D, +$548C, +$54C1, +$54E1, +$5546, +$554F, +$5742, +$592E, +$59CB, +$59D4, +$5B88, +$5B89, +$5B9A, +$5B9F, +$5BA2, +$5BAE, +$5BBF, +$5BD2, +$5BFE, +$5C40, +$5C4B, +$5CB8, +$5CF6, +$5DDE, +$5E33, +$5E73, +$5E78, +$5EA6, +$5EAB, +$5EAD, +$5F0F, +$5F79, +$5F85, +$6025, +$606F, +$60AA, +$60B2, +$60F3, +$610F, +$611F, +$6240, +$6253, +$6295, +$62FE, +$6301, +$6307, +$653E, +$6574, +$65C5, +$65CF, +$6614, +$662D, +$6691, +$6697, +$66F2, +$6709, +$670D, +$671F, +$677F, +$67F1, +$6839, +$690D, +$696D, +$69D8, +$6A2A, +$6A4B, +$6B21, +$6B6F, +$6B7B, +$6C37, +$6C7A, +$6CB9, +$6CE2, +$6CE8, +$6CF3, +$6D0B, +$6D41, +$6D88, +$6DF1, +$6E29, +$6E2F, +$6E56, +$6E6F, +$6F22, +$70AD, +$7269, +$7403, +$7531, +$7533, +$754C, +$7551, +$75C5, +$767A, +$767B, +$76AE, +$76BF, +$76F8, +$770C, +$771F, +$7740, +$77ED, +$7814, +$793C, +$795E, +$796D, +$798F, +$79D2, +$7A76, +$7AE0, +$7AE5, +$7B1B, +$7B2C, +$7B46, +$7B49, +$7BB1, +$7D1A, +$7D42, +$7DD1, +$7DF4, +$7F8A, +$7F8E, +$7FD2, +$8005, +$80B2, +$82E6, +$8377, +$843D, +$8449, +$85AC, +$8840, +$8868, +$8A69, +$8ABF, +$8AC7, +$8C46, +$8CA0, +$8D77, +$8DEF, +$8EAB, +$8EE2, +$8EFD, +$8FB2, +$8FD4, +$8FFD, +$9001, +$901F, +$9032, +$904A, +$904B, +$90E8, +$90FD, +$914D, +$9152, +$91CD, +$9244, +$9280, +$958B, +$9662, +$967D, +$968E, +$96C6, +$9762, +$984C, +$98F2, +$9928, +$99C5, +$9F3B, +$4E0D, +$4E89, +$4ED8, +$4EE4, +$4EE5, +$4EF2, +$4F1D, +$4F4D, +$4F4E, +$4F8B, +$4FBF, +$4FE1, +$5009, +$5019, +$501F, +$505C, +$5065, +$5074, +$50CD, +$5104, +$5146, +$5150, +$5171, +$5175, +$5178, +$51B7, +$521D, +$5225, +$5229, +$5237, +$526F, +$529F, +$52A0, +$52AA, +$52B4, +$52C7, +$5305, +$5352, +$5354, +$5358, +$535A, +$5370, +$53C2, +$53F2, +$53F8, +$5404, +$544A, +$5468, +$5531, +$559C, +$5668, +$56F2, +$56FA, +$578B, +$5802, +$5869, +$58EB, +$5909, +$592B, +$5931, +$597D, +$5B63, +$5B6B, +$5B8C, +$5B98, +$5BB3, +$5BDF, +$5DE3, +$5DEE, +$5E0C, +$5E2D, +$5E2F, +$5E95, +$5E9C, +$5EB7, +$5EFA, +$5F84, +$5F92, +$5F97, +$5FC5, +$5FF5, +$611B, +$6210, +$6226, +$6298, +$6319, +$6539, +$6551, +$6557, +$6563, +$6599, +$65D7, +$6628, +$666F, +$6700, +$671B, +$672A, +$672B, +$672D, +$6750, +$675F, +$677E, +$679C, +$6804, +$6848, +$6885, +$68B0, +$6975, +$6A19, +$6A5F, +$6B20, +$6B74, +$6B8B, +$6BBA, +$6BD2, +$6C0F, +$6C11, +$6C42, +$6CBB, +$6CD5, +$6CE3, +$6D45, +$6D74, +$6E05, +$6E80, +$6F01, +$706F, +$7121, +$7136, +$713C, +$7167, +$71B1, +$7267, +$7279, +$7523, +$7684, +$7701, +$795D, +$7968, +$7A2E, +$7A4D, +$7AF6, +$7B11, +$7BA1, +$7BC0, +$7C89, +$7D00, +$7D04, +$7D50, +$7D66, +$7D9A, +$7F6E, +$8001, +$80C3, +$8108, +$8178, +$81E3, +$822A, +$826F, +$82B8, +$82BD, +$82F1, +$83DC, +$8857, +$8863, +$8981, +$899A, +$89B3, +$8A13, +$8A66, +$8AAC, +$8AB2, +$8B70, +$8C61, +$8CA8, +$8CAF, +$8CBB, +$8CDE, +$8ECD, +$8F2A, +$8F9E, +$8FBA, +$9023, +$9054, +$9078, +$90E1, +$91CF, +$9332, +$93E1, +$95A2, +$9678, +$968A, +$9759, +$9806, +$9858, +$985E, +$98DB, +$98EF, +$990A, +$9A13, +$4E45, +$4ECF, +$4EEE, +$4EF6, +$4EFB, +$4F3C, +$4F59, +$4FA1, +$4FDD, +$4FEE, +$4FF5, +$500B, +$5099, +$50CF, +$518D, +$520A, +$5224, +$5236, +$5238, +$5247, +$52B9, +$52D9, +$52E2, +$539A, +$53E5, +$53EF, +$55B6, +$56E0, +$56E3, +$5727, +$5728, +$5747, +$57FA, +$5831, +$5883, +$5893, +$5897, +$5922, +$59BB, +$5A66, +$5BB9, +$5BC4, +$5BCC, +$5C0E, +$5C45, +$5C5E, +$5E03, +$5E2B, +$5E38, +$5E79, +$5E8F, +$5F01, +$5F35, +$5F80, +$5FA9, +$5FB3, +$5FD7, +$5FDC, +$5FEB, +$6027, +$6069, +$60C5, +$614B, +$6163, +$627F, +$6280, +$62DB, +$6388, +$63A1, +$63A5, +$63D0, +$640D, +$652F, +$653F, +$6545, +$6575, +$65AD, +$65E7, +$6613, +$66B4, +$6761, +$679D, +$67FB, +$683C, +$685C, +$691C, +$69CB, +$6B66, +$6BD4, +$6C38, +$6CB3, +$6DB2, +$6DF7, +$6E1B, +$6E2C, +$6E96, +$6F14, +$6F54, +$707D, +$71C3, +$7248, +$72AF, +$72B6, +$72EC, +$7387, +$73FE, +$7559, +$7565, +$76CA, +$773C, +$7834, +$78BA, +$793A, +$7956, +$7981, +$79FB, +$7A0B, +$7A0E, +$7BC9, +$7CBE, +$7D20, +$7D4C, +$7D71, +$7D76, +$7DBF, +$7DCF, +$7DE8, +$7E3E, +$7E54, +$7F6A, +$7FA4, +$7FA9, +$8015, +$8077, +$80A5, +$80FD, +$8208, +$820C, +$820E, +$8853, +$885B, +$88FD, +$8907, +$898F, +$89E3, +$8A2D, +$8A31, +$8A3C, +$8A55, +$8B1B, +$8B1D, +$8B58, +$8B77, +$8C4A, +$8CA1, +$8CA7, +$8CAC, +$8CB8, +$8CBF, +$8CC0, +$8CC7, +$8CDB, +$8CEA, +$8F38, +$8FF0, +$8FF7, +$9000, +$9006, +$9020, +$904E, +$9069, +$9178, +$9271, +$9285, +$92AD, +$9632, +$9650, +$967A, +$969B, +$96D1, +$975E, +$9810, +$9818, +$984D, +$98FC, +$4E26, +$4E71, +$4E73, +$4EA1, +$4EC1, +$4F9B, +$4FF3, +$5024, +$50B7, +$512A, +$515A, +$518A, +$51E6, +$523B, +$5272, +$5275, +$5287, +$52E4, +$5371, +$5375, +$53B3, +$53CE, +$540E, +$5426, +$5438, +$547C, +$5584, +$56F0, +$5782, +$57CE, +$57DF, +$594F, +$596E, +$59FF, +$5B58, +$5B5D, +$5B85, +$5B87, +$5B97, +$5B99, +$5B9D, +$5BA3, +$5BC6, +$5BF8, +$5C02, +$5C04, +$5C06, +$5C0A, +$5C31, +$5C3A, +$5C4A, +$5C55, +$5C64, +$5DF1, +$5DFB, +$5E55, +$5E72, +$5E7C, +$5E81, +$5EA7, +$5EF6, +$5F8B, +$5F93, +$5FD8, +$5FE0, +$61B2, +$6211, +$6279, +$62C5, +$62DD, +$62E1, +$6368, +$63A2, +$63A8, +$63EE, +$64CD, +$656C, +$6620, +$6669, +$6696, +$66AE, +$6717, +$673A, +$679A, +$67D3, +$682A, +$68D2, +$6A21, +$6A29, +$6A39, +$6B32, +$6BB5, +$6CBF, +$6CC9, +$6D17, +$6D3E, +$6E08, +$6E90, +$6F6E, +$6FC0, +$7070, +$719F, +$7247, +$73ED, +$7570, +$7591, +$75DB, +$7687, +$76DB, +$76DF, +$770B, +$7802, +$78C1, +$79C1, +$79D8, +$7A40, +$7A74, +$7A93, +$7B4B, +$7B56, +$7C21, +$7CD6, +$7CFB, +$7D05, +$7D0D, +$7D14, +$7D79, +$7E26, +$7E2E, +$7F72, +$7FCC, +$8056, +$80BA, +$80CC, +$80F8, +$8133, +$8179, +$81D3, +$81E8, +$81F3, +$82E5, +$8457, +$84B8, +$8535, +$8695, +$8846, +$88C1, +$88C5, +$88CF, +$88DC, +$8996, +$89A7, +$8A0E, +$8A2A, +$8A33, +$8A5E, +$8A8C, +$8A8D, +$8A95, +$8AA0, +$8AA4, +$8AD6, +$8AF8, +$8B66, +$8CB4, +$8CC3, +$907A, +$90F5, +$90F7, +$91DD, +$92FC, +$9589, +$95A3, +$964D, +$965B, +$9664, +$969C, +$96E3, +$9769, +$9802, +$9AA8 diff --git a/tools/font/build/japanese2.map b/tools/font/build/japanese2.map new file mode 100644 index 00000000..c50b19ad --- /dev/null +++ b/tools/font/build/japanese2.map @@ -0,0 +1,1948 @@ +32-127, +$3040-$30ff, +$4E00, +$4E03, +$4E09, +$4E0A, +$4E0B, +$4E2D, +$4E5D, +$4E8C, +$4E94, +$4EBA, +$4F11, +$5148, +$5165, +$516B, +$516D, +$5186, +$51FA, +$529B, +$5341, +$5343, +$53E3, +$53F3, +$540D, +$56DB, +$571F, +$5915, +$5927, +$5929, +$5973, +$5B50, +$5B57, +$5B66, +$5C0F, +$5C71, +$5DDD, +$5DE6, +$5E74, +$624B, +$6587, +$65E5, +$65E9, +$6708, +$6728, +$672C, +$6751, +$6797, +$6821, +$68EE, +$6B63, +$6C17, +$6C34, +$706B, +$72AC, +$7389, +$738B, +$751F, +$7530, +$7537, +$753A, +$767D, +$767E, +$76EE, +$77F3, +$7A7A, +$7ACB, +$7AF9, +$7CF8, +$8033, +$82B1, +$8349, +$866B, +$898B, +$8C9D, +$8D64, +$8DB3, +$8ECA, +$91D1, +$96E8, +$9752, +$97F3, +$4E07, +$4E38, +$4EA4, +$4EAC, +$4ECA, +$4F1A, +$4F53, +$4F55, +$4F5C, +$5143, +$5144, +$5149, +$516C, +$5185, +$51AC, +$5200, +$5206, +$5207, +$524D, +$5317, +$5348, +$534A, +$5357, +$539F, +$53CB, +$53E4, +$53F0, +$5408, +$540C, +$56DE, +$56F3, +$56FD, +$5712, +$5730, +$5834, +$58F0, +$58F2, +$590F, +$5916, +$591A, +$591C, +$592A, +$59B9, +$59C9, +$5BA4, +$5BB6, +$5BFA, +$5C11, +$5CA9, +$5DE5, +$5E02, +$5E30, +$5E83, +$5E97, +$5F13, +$5F15, +$5F1F, +$5F31, +$5F37, +$5F53, +$5F62, +$5F8C, +$5FC3, +$601D, +$6238, +$624D, +$6559, +$6570, +$65B0, +$65B9, +$660E, +$661F, +$6625, +$663C, +$6642, +$6674, +$66DC, +$66F8, +$671D, +$6765, +$6771, +$697D, +$6B4C, +$6B62, +$6B69, +$6BCD, +$6BCE, +$6BDB, +$6C60, +$6C7D, +$6D3B, +$6D77, +$70B9, +$7236, +$725B, +$7406, +$7528, +$753B, +$756A, +$76F4, +$77E2, +$77E5, +$793E, +$79CB, +$79D1, +$7B54, +$7B97, +$7C73, +$7D19, +$7D30, +$7D44, +$7D75, +$7DDA, +$7FBD, +$8003, +$805E, +$8089, +$81EA, +$8239, +$8272, +$8336, +$884C, +$897F, +$89AA, +$89D2, +$8A00, +$8A08, +$8A18, +$8A71, +$8A9E, +$8AAD, +$8C37, +$8CB7, +$8D70, +$8FD1, +$901A, +$9031, +$9053, +$9060, +$91CC, +$91CE, +$9577, +$9580, +$9593, +$96EA, +$96F2, +$96FB, +$982D, +$9854, +$98A8, +$98DF, +$9996, +$99AC, +$9AD8, +$9B5A, +$9CE5, +$9CF4, +$9EA6, +$9EC4, +$9ED2, +$4E01, +$4E16, +$4E21, +$4E3B, +$4E57, +$4E88, +$4E8B, +$4ED5, +$4ED6, +$4EE3, +$4F4F, +$4F7F, +$4FC2, +$500D, +$5168, +$5177, +$5199, +$5217, +$52A9, +$52C9, +$52D5, +$52DD, +$5316, +$533A, +$533B, +$53BB, +$53CD, +$53D6, +$53D7, +$53F7, +$5411, +$541B, +$5473, +$547D, +$548C, +$54C1, +$54E1, +$5546, +$554F, +$5742, +$592E, +$59CB, +$59D4, +$5B88, +$5B89, +$5B9A, +$5B9F, +$5BA2, +$5BAE, +$5BBF, +$5BD2, +$5BFE, +$5C40, +$5C4B, +$5CB8, +$5CF6, +$5DDE, +$5E33, +$5E73, +$5E78, +$5EA6, +$5EAB, +$5EAD, +$5F0F, +$5F79, +$5F85, +$6025, +$606F, +$60AA, +$60B2, +$60F3, +$610F, +$611F, +$6240, +$6253, +$6295, +$62FE, +$6301, +$6307, +$653E, +$6574, +$65C5, +$65CF, +$6614, +$662D, +$6691, +$6697, +$66F2, +$6709, +$670D, +$671F, +$677F, +$67F1, +$6839, +$690D, +$696D, +$69D8, +$6A2A, +$6A4B, +$6B21, +$6B6F, +$6B7B, +$6C37, +$6C7A, +$6CB9, +$6CE2, +$6CE8, +$6CF3, +$6D0B, +$6D41, +$6D88, +$6DF1, +$6E29, +$6E2F, +$6E56, +$6E6F, +$6F22, +$70AD, +$7269, +$7403, +$7531, +$7533, +$754C, +$7551, +$75C5, +$767A, +$767B, +$76AE, +$76BF, +$76F8, +$770C, +$771F, +$7740, +$77ED, +$7814, +$793C, +$795E, +$796D, +$798F, +$79D2, +$7A76, +$7AE0, +$7AE5, +$7B1B, +$7B2C, +$7B46, +$7B49, +$7BB1, +$7D1A, +$7D42, +$7DD1, +$7DF4, +$7F8A, +$7F8E, +$7FD2, +$8005, +$80B2, +$82E6, +$8377, +$843D, +$8449, +$85AC, +$8840, +$8868, +$8A69, +$8ABF, +$8AC7, +$8C46, +$8CA0, +$8D77, +$8DEF, +$8EAB, +$8EE2, +$8EFD, +$8FB2, +$8FD4, +$8FFD, +$9001, +$901F, +$9032, +$904A, +$904B, +$90E8, +$90FD, +$914D, +$9152, +$91CD, +$9244, +$9280, +$958B, +$9662, +$967D, +$968E, +$96C6, +$9762, +$984C, +$98F2, +$9928, +$99C5, +$9F3B, +$4E0D, +$4E89, +$4ED8, +$4EE4, +$4EE5, +$4EF2, +$4F1D, +$4F4D, +$4F4E, +$4F8B, +$4FBF, +$4FE1, +$5009, +$5019, +$501F, +$505C, +$5065, +$5074, +$50CD, +$5104, +$5146, +$5150, +$5171, +$5175, +$5178, +$51B7, +$521D, +$5225, +$5229, +$5237, +$526F, +$529F, +$52A0, +$52AA, +$52B4, +$52C7, +$5305, +$5352, +$5354, +$5358, +$535A, +$5370, +$53C2, +$53F2, +$53F8, +$5404, +$544A, +$5468, +$5531, +$559C, +$5668, +$56F2, +$56FA, +$578B, +$5802, +$5869, +$58EB, +$5909, +$592B, +$5931, +$597D, +$5B63, +$5B6B, +$5B8C, +$5B98, +$5BB3, +$5BDF, +$5DE3, +$5DEE, +$5E0C, +$5E2D, +$5E2F, +$5E95, +$5E9C, +$5EB7, +$5EFA, +$5F84, +$5F92, +$5F97, +$5FC5, +$5FF5, +$611B, +$6210, +$6226, +$6298, +$6319, +$6539, +$6551, +$6557, +$6563, +$6599, +$65D7, +$6628, +$666F, +$6700, +$671B, +$672A, +$672B, +$672D, +$6750, +$675F, +$677E, +$679C, +$6804, +$6848, +$6885, +$68B0, +$6975, +$6A19, +$6A5F, +$6B20, +$6B74, +$6B8B, +$6BBA, +$6BD2, +$6C0F, +$6C11, +$6C42, +$6CBB, +$6CD5, +$6CE3, +$6D45, +$6D74, +$6E05, +$6E80, +$6F01, +$706F, +$7121, +$7136, +$713C, +$7167, +$71B1, +$7267, +$7279, +$7523, +$7684, +$7701, +$795D, +$7968, +$7A2E, +$7A4D, +$7AF6, +$7B11, +$7BA1, +$7BC0, +$7C89, +$7D00, +$7D04, +$7D50, +$7D66, +$7D9A, +$7F6E, +$8001, +$80C3, +$8108, +$8178, +$81E3, +$822A, +$826F, +$82B8, +$82BD, +$82F1, +$83DC, +$8857, +$8863, +$8981, +$899A, +$89B3, +$8A13, +$8A66, +$8AAC, +$8AB2, +$8B70, +$8C61, +$8CA8, +$8CAF, +$8CBB, +$8CDE, +$8ECD, +$8F2A, +$8F9E, +$8FBA, +$9023, +$9054, +$9078, +$90E1, +$91CF, +$9332, +$93E1, +$95A2, +$9678, +$968A, +$9759, +$9806, +$9858, +$985E, +$98DB, +$98EF, +$990A, +$9A13, +$4E45, +$4ECF, +$4EEE, +$4EF6, +$4EFB, +$4F3C, +$4F59, +$4FA1, +$4FDD, +$4FEE, +$4FF5, +$500B, +$5099, +$50CF, +$518D, +$520A, +$5224, +$5236, +$5238, +$5247, +$52B9, +$52D9, +$52E2, +$539A, +$53E5, +$53EF, +$55B6, +$56E0, +$56E3, +$5727, +$5728, +$5747, +$57FA, +$5831, +$5883, +$5893, +$5897, +$5922, +$59BB, +$5A66, +$5BB9, +$5BC4, +$5BCC, +$5C0E, +$5C45, +$5C5E, +$5E03, +$5E2B, +$5E38, +$5E79, +$5E8F, +$5F01, +$5F35, +$5F80, +$5FA9, +$5FB3, +$5FD7, +$5FDC, +$5FEB, +$6027, +$6069, +$60C5, +$614B, +$6163, +$627F, +$6280, +$62DB, +$6388, +$63A1, +$63A5, +$63D0, +$640D, +$652F, +$653F, +$6545, +$6575, +$65AD, +$65E7, +$6613, +$66B4, +$6761, +$679D, +$67FB, +$683C, +$685C, +$691C, +$69CB, +$6B66, +$6BD4, +$6C38, +$6CB3, +$6DB2, +$6DF7, +$6E1B, +$6E2C, +$6E96, +$6F14, +$6F54, +$707D, +$71C3, +$7248, +$72AF, +$72B6, +$72EC, +$7387, +$73FE, +$7559, +$7565, +$76CA, +$773C, +$7834, +$78BA, +$793A, +$7956, +$7981, +$79FB, +$7A0B, +$7A0E, +$7BC9, +$7CBE, +$7D20, +$7D4C, +$7D71, +$7D76, +$7DBF, +$7DCF, +$7DE8, +$7E3E, +$7E54, +$7F6A, +$7FA4, +$7FA9, +$8015, +$8077, +$80A5, +$80FD, +$8208, +$820C, +$820E, +$8853, +$885B, +$88FD, +$8907, +$898F, +$89E3, +$8A2D, +$8A31, +$8A3C, +$8A55, +$8B1B, +$8B1D, +$8B58, +$8B77, +$8C4A, +$8CA1, +$8CA7, +$8CAC, +$8CB8, +$8CBF, +$8CC0, +$8CC7, +$8CDB, +$8CEA, +$8F38, +$8FF0, +$8FF7, +$9000, +$9006, +$9020, +$904E, +$9069, +$9178, +$9271, +$9285, +$92AD, +$9632, +$9650, +$967A, +$969B, +$96D1, +$975E, +$9810, +$9818, +$984D, +$98FC, +$4E26, +$4E71, +$4E73, +$4EA1, +$4EC1, +$4F9B, +$4FF3, +$5024, +$50B7, +$512A, +$515A, +$518A, +$51E6, +$523B, +$5272, +$5275, +$5287, +$52E4, +$5371, +$5375, +$53B3, +$53CE, +$540E, +$5426, +$5438, +$547C, +$5584, +$56F0, +$5782, +$57CE, +$57DF, +$594F, +$596E, +$59FF, +$5B58, +$5B5D, +$5B85, +$5B87, +$5B97, +$5B99, +$5B9D, +$5BA3, +$5BC6, +$5BF8, +$5C02, +$5C04, +$5C06, +$5C0A, +$5C31, +$5C3A, +$5C4A, +$5C55, +$5C64, +$5DF1, +$5DFB, +$5E55, +$5E72, +$5E7C, +$5E81, +$5EA7, +$5EF6, +$5F8B, +$5F93, +$5FD8, +$5FE0, +$61B2, +$6211, +$6279, +$62C5, +$62DD, +$62E1, +$6368, +$63A2, +$63A8, +$63EE, +$64CD, +$656C, +$6620, +$6669, +$6696, +$66AE, +$6717, +$673A, +$679A, +$67D3, +$682A, +$68D2, +$6A21, +$6A29, +$6A39, +$6B32, +$6BB5, +$6CBF, +$6CC9, +$6D17, +$6D3E, +$6E08, +$6E90, +$6F6E, +$6FC0, +$7070, +$719F, +$7247, +$73ED, +$7570, +$7591, +$75DB, +$7687, +$76DB, +$76DF, +$770B, +$7802, +$78C1, +$79C1, +$79D8, +$7A40, +$7A74, +$7A93, +$7B4B, +$7B56, +$7C21, +$7CD6, +$7CFB, +$7D05, +$7D0D, +$7D14, +$7D79, +$7E26, +$7E2E, +$7F72, +$7FCC, +$8056, +$80BA, +$80CC, +$80F8, +$8133, +$8179, +$81D3, +$81E8, +$81F3, +$82E5, +$8457, +$84B8, +$8535, +$8695, +$8846, +$88C1, +$88C5, +$88CF, +$88DC, +$8996, +$89A7, +$8A0E, +$8A2A, +$8A33, +$8A5E, +$8A8C, +$8A8D, +$8A95, +$8AA0, +$8AA4, +$8AD6, +$8AF8, +$8B66, +$8CB4, +$8CC3, +$907A, +$90F5, +$90F7, +$91DD, +$92FC, +$9589, +$95A3, +$964D, +$965B, +$9664, +$969C, +$96E3, +$9769, +$9802, +$9AA8, +$4E08, +$4E0E, +$4E14, +$4E18, +$4E19, +$4E39, +$4E4F, +$4E59, +$4E7E, +$4E86, +$4E92, +$4E95, +$4E9C, +$4EAB, +$4EAD, +$4ECB, +$4ED9, +$4EF0, +$4F01, +$4F0F, +$4F10, +$4F2F, +$4F34, +$4F38, +$4F3A, +$4F46, +$4F50, +$4F73, +$4F75, +$4F8D, +$4F9D, +$4FAE, +$4FAF, +$4FB5, +$4FC3, +$4FCA, +$4FD7, +$4FF8, +$5012, +$5023, +$502B, +$5039, +$5049, +$504F, +$5075, +$5076, +$507D, +$508D, +$5091, +$5098, +$50AC, +$50B5, +$50BE, +$50D5, +$50DA, +$50E7, +$5100, +$5112, +$511F, +$5145, +$514B, +$514D, +$517C, +$5192, +$5197, +$51A0, +$51C6, +$51CD, +$51DD, +$51E1, +$51F6, +$51F8, +$51F9, +$5203, +$5208, +$5211, +$5230, +$523A, +$524A, +$5256, +$525B, +$5263, +$5264, +$5270, +$52A3, +$52B1, +$52BE, +$52C5, +$52D8, +$52DF, +$52E7, +$52F2, +$52FA, +$5301, +$5320, +$5339, +$533F, +$5347, +$5351, +$5353, +$5360, +$5373, +$5374, +$5378, +$5384, +$5398, +$53C8, +$53CA, +$53CC, +$53D4, +$53D9, +$53EB, +$53EC, +$5409, +$540F, +$5410, +$541F, +$542B, +$5439, +$5448, +$5449, +$54B2, +$54C0, +$54F2, +$5506, +$5507, +$5510, +$552F, +$5553, +$559A, +$559D, +$55AA, +$55AB, +$55E3, +$5606, +$5631, +$5674, +$5687, +$56DA, +$570F, +$574A, +$5751, +$576A, +$57A3, +$57CB, +$57F7, +$57F9, +$5800, +$5805, +$5815, +$5824, +$582A, +$5840, +$5841, +$584A, +$5851, +$5854, +$5857, +$585A, +$587E, +$589C, +$58A8, +$58B3, +$58BE, +$58C1, +$58C7, +$58CA, +$58CC, +$58EE, +$58F1, +$5947, +$5949, +$5951, +$5954, +$5965, +$5968, +$596A, +$5974, +$5982, +$5983, +$5984, +$598A, +$5999, +$59A5, +$59A8, +$59D3, +$59EB, +$59FB, +$5A01, +$5A18, +$5A20, +$5A2F, +$5A46, +$5A5A, +$5A7F, +$5A92, +$5AC1, +$5ACC, +$5AE1, +$5B22, +$5B54, +$5B64, +$5B9C, +$5BB0, +$5BB4, +$5BB5, +$5BC2, +$5BDB, +$5BDD, +$5BE1, +$5BE7, +$5BE9, +$5BEE, +$5BFF, +$5C01, +$5C09, +$5C0B, +$5C1A, +$5C3C, +$5C3D, +$5C3E, +$5C3F, +$5C48, +$5C65, +$5C6F, +$5C90, +$5CAC, +$5CB3, +$5CE0, +$5CE1, +$5CF0, +$5D07, +$5D0E, +$5D29, +$5DE1, +$5DE7, +$5DE8, +$5E06, +$5E1D, +$5E25, +$5E3D, +$5E45, +$5E63, +$5E7B, +$5E7D, +$5E7E, +$5E8A, +$5EB6, +$5EB8, +$5EC3, +$5EC9, +$5ECA, +$5EF7, +$5F0A, +$5F10, +$5F14, +$5F26, +$5F27, +$5F3E, +$5F69, +$5F6B, +$5F70, +$5F71, +$5F7C, +$5F81, +$5F90, +$5FA1, +$5FAA, +$5FAE, +$5FB4, +$5FB9, +$5FCC, +$5FCD, +$5FD9, +$6012, +$6016, +$6020, +$602A, +$604B, +$6050, +$6052, +$6065, +$6068, +$606D, +$6075, +$6094, +$609F, +$60A0, +$60A3, +$60A6, +$60A9, +$60BC, +$60D1, +$60DC, +$60E8, +$60F0, +$6101, +$6109, +$611A, +$6148, +$614C, +$614E, +$6155, +$6162, +$6168, +$616E, +$6170, +$6176, +$6182, +$618E, +$61A4, +$61A9, +$61B6, +$61BE, +$61C7, +$61D0, +$61F2, +$61F8, +$6212, +$622F, +$623B, +$623F, +$6247, +$6249, +$6255, +$6271, +$6276, +$6284, +$628A, +$6291, +$6297, +$629C, +$629E, +$62AB, +$62B1, +$62B5, +$62B9, +$62BC, +$62BD, +$62CD, +$62D0, +$62D2, +$62D3, +$62D8, +$62D9, +$62E0, +$62EC, +$62F7, +$6311, +$631F, +$632F, +$633F, +$6355, +$635C, +$636E, +$6383, +$638C, +$6392, +$6398, +$639B, +$63A7, +$63AA, +$63B2, +$63CF, +$63DA, +$63DB, +$63E1, +$63F4, +$63FA, +$642C, +$642D, +$643A, +$643E, +$6442, +$6458, +$6469, +$6483, +$64A4, +$64AE, +$64B2, +$64C1, +$64E6, +$64EC, +$653B, +$654F, +$6562, +$6577, +$6589, +$658E, +$6597, +$659C, +$65A4, +$65A5, +$65BD, +$65CB, +$65E2, +$65E8, +$65EC, +$6606, +$6607, +$662F, +$666E, +$6676, +$6681, +$6687, +$66A6, +$66AB, +$66C7, +$66F4, +$66F9, +$66FF, +$6715, +$6731, +$6734, +$673D, +$6749, +$676F, +$6790, +$67A0, +$67A2, +$67AF, +$67B6, +$67C4, +$67D0, +$67D4, +$67F3, +$6813, +$6838, +$683D, +$6843, +$6851, +$685F, +$68C4, +$68CB, +$68DA, +$68DF, +$68FA, +$697C, +$6982, +$69FD, +$6B04, +$6B27, +$6B3A, +$6B3E, +$6B53, +$6B73, +$6B89, +$6B8A, +$6B96, +$6BB4, +$6BBB, +$6BBF, +$6C41, +$6C57, +$6C5A, +$6C5F, +$6C88, +$6C96, +$6CA1, +$6CA2, +$6CB8, +$6CBC, +$6CC1, +$6CCA, +$6CCC, +$6CE1, +$6CE5, +$6CF0, +$6D1E, +$6D25, +$6D2A, +$6D44, +$6D5C, +$6D66, +$6D6A, +$6D6E, +$6D78, +$6D99, +$6DAF, +$6DBC, +$6DD1, +$6DE1, +$6DFB, +$6E07, +$6E09, +$6E0B, +$6E13, +$6E21, +$6E26, +$6E7E, +$6E7F, +$6E9D, +$6EB6, +$6EC5, +$6ECB, +$6ED1, +$6EDD, +$6EDE, +$6EF4, +$6F02, +$6F06, +$6F0F, +$6F20, +$6F2B, +$6F2C, +$6F38, +$6F5C, +$6F5F, +$6F64, +$6F84, +$6FC1, +$6FC3, +$6FEB, +$6FEF, +$702C, +$7089, +$708A, +$708E, +$70BA, +$70C8, +$7126, +$7159, +$7169, +$716E, +$71C8, +$71E5, +$7206, +$7235, +$7272, +$72A0, +$72C2, +$72E9, +$72ED, +$731B, +$731F, +$732B, +$732E, +$7336, +$733F, +$7344, +$7363, +$7372, +$7384, +$73CD, +$73E0, +$7434, +$74B0, +$74BD, +$74F6, +$7518, +$751A, +$7532, +$7554, +$755C, +$755D, +$7573, +$758E, +$75AB, +$75B2, +$75BE, +$75C7, +$75D8, +$75E2, +$75F4, +$7642, +$7652, +$7656, +$7686, +$76C6, +$76D7, +$76E3, +$76E4, +$76F2, +$76FE, +$7720, +$773A, +$7761, +$7763, +$77AC, +$77DB, +$77EF, +$7815, +$7832, +$785D, +$786B, +$786C, +$7881, +$7891, +$78E8, +$7901, +$790E, +$7948, +$7949, +$7965, +$7985, +$798D, +$79C0, +$79DF, +$79E9, +$79F0, +$7A1A, +$7A32, +$7A3C, +$7A3F, +$7A42, +$7A4F, +$7A6B, +$7A81, +$7A83, +$7A92, +$7AAE, +$7AAF, +$7ADC, +$7AEF, +$7B26, +$7B52, +$7B87, +$7BC4, +$7BE4, +$7C3F, +$7C4D, +$7C8B, +$7C92, +$7C97, +$7C98, +$7C9B, +$7CA7, +$7CE7, +$7CFE, +$7D0B, +$7D1B, +$7D21, +$7D22, +$7D2B, +$7D2F, +$7D33, +$7D39, +$7D3A, +$7D5E, +$7D61, +$7D99, +$7DAD, +$7DB1, +$7DB2, +$7DCA, +$7DD2, +$7DE0, +$7DE9, +$7DEF, +$7E01, +$7E04, +$7E1B, +$7E2B, +$7E41, +$7E4A, +$7E55, +$7E6D, +$7E70, +$7F36, +$7F70, +$7F77, +$7F85, +$7FC1, +$7FFB, +$7FFC, +$8010, +$8017, +$8074, +$808C, +$8096, +$809D, +$80A2, +$80A9, +$80AA, +$80AF, +$80C6, +$80CE, +$80DE, +$80F4, +$8102, +$8105, +$811A, +$8131, +$8139, +$8150, +$8155, +$8170, +$819A, +$819C, +$81A8, +$81ED, +$81F4, +$8217, +$821E, +$821F, +$822C, +$8236, +$8247, +$8266, +$828B, +$829D, +$82B3, +$82D7, +$8302, +$830E, +$8352, +$8358, +$83CA, +$83CC, +$83D3, +$83EF, +$846C, +$84C4, +$8584, +$85A6, +$85AA, +$85AB, +$85E9, +$85FB, +$8650, +$865A, +$865C, +$865E, +$868A, +$86C7, +$86CD, +$86EE, +$878D, +$885D, +$8861, +$8870, +$8877, +$888B, +$88AB, +$88C2, +$88D5, +$88F8, +$8910, +$8912, +$895F, +$8972, +$8986, +$8987, +$89E6, +$8A02, +$8A17, +$8A1F, +$8A34, +$8A3A, +$8A50, +$8A54, +$8A60, +$8A70, +$8A72, +$8A73, +$8A87, +$8A89, +$8A93, +$8A98, +$8ACB, +$8AED, +$8AEE, +$8AFE, +$8B00, +$8B01, +$8B04, +$8B19, +$8B21, +$8B39, +$8B5C, +$8B72, +$8C5A, +$8C6A, +$8C9E, +$8CA2, +$8CA9, +$8CAB, +$8CC4, +$8CCA, +$8CD3, +$8CDC, +$8CE0, +$8CE2, +$8CE6, +$8CFC, +$8D08, +$8D66, +$8D74, +$8D85, +$8D8A, +$8DA3, +$8DDD, +$8DE1, +$8DF3, +$8DF5, +$8E0A, +$8E0F, +$8E8D, +$8ECC, +$8ED2, +$8EDF, +$8EF8, +$8F03, +$8F09, +$8F1D, +$8F29, +$8F44, +$8F9B, +$8FB1, +$8FBC, +$8FC5, +$8FCE, +$8FEB, +$8FED, +$9003, +$900F, +$9010, +$9013, +$9014, +$901D, +$902E, +$9038, +$9042, +$9045, +$9047, +$904D, +$9055, +$9063, +$906D, +$906E, +$9075, +$9077, +$907F, +$9084, +$90A6, +$90AA, +$90B8, +$90CA, +$90CE, +$90ED, +$914C, +$9154, +$9162, +$916A, +$916C, +$9175, +$9177, +$919C, +$91B8, +$91C8, +$91E3, +$920D, +$9234, +$925B, +$9262, +$9283, +$9291, +$9298, +$92ED, +$92F3, +$9318, +$9320, +$932C, +$932F, +$935B, +$9396, +$93AE, +$9418, +$9451, +$9591, +$95A5, +$95B2, +$95D8, +$963B, +$9644, +$9663, +$9665, +$966A, +$9670, +$9673, +$9675, +$9676, +$9685, +$9686, +$968F, +$9694, +$96A0, +$96A3, +$96B7, +$96BB, +$96C4, +$96C5, +$96C7, +$96CC, +$96E2, +$96F0, +$96F6, +$96F7, +$9700, +$9707, +$970A, +$971C, +$9727, +$9732, +$9774, +$97FB, +$97FF, +$9805, +$9811, +$9812, +$983B, +$983C, +$9855, +$9867, +$98E2, +$98FD, +$98FE, +$9913, +$9999, +$99C4, +$99C6, +$99D0, +$9A0E, +$9A12, +$9A30, +$9A5A, +$9AC4, +$9AEA, +$9B3C, +$9B42, +$9B45, +$9B54, +$9BAE, +$9BE8, +$9D8F, +$9E97, +$9EBB, +$9ED9, +$9F13, +$9F62