From 4ced1453cee7a3131459040efd57f73bfc77aece Mon Sep 17 00:00:00 2001 From: fishsoupisgood Date: Mon, 15 Jun 2020 14:02:42 +0100 Subject: guage code --- Makefile.rules | 2 +- app/Makefile | 7 +- app/font21x32.c | 189 ++++--- app/font8x16.c | 1566 ++++++++++++++++++++++++++++++++++++------------------ app/font8x8.c | 24 +- app/gauge.c | 145 +++++ app/i2c.c | 9 +- app/i2c_hw.c | 142 ++--- app/led.c | 12 +- app/main.c | 59 +- app/oled.c | 112 ++-- app/oled1.c | 55 +- app/oled2.c | 55 +- app/prototypes.h | 5 + app/ring.c | 23 +- app/ring.h | 3 +- app/tacho.c | 10 +- app/ticker.c | 31 +- app/usart.c | 55 +- 19 files changed, 1588 insertions(+), 916 deletions(-) create mode 100644 app/gauge.c diff --git a/Makefile.rules b/Makefile.rules index a723e6f..ec27405 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -184,7 +184,7 @@ fish: clean: @#printf " CLEAN\n" - $(Q)$(RM) *.o *.d *.elf *.bin *.hex *.srec *.list *.map *~ *.dfu ${EXTRACLEANS} + $(Q)$(RM) *.o *.d *.elf *.bin *.hex *.srec *.list *.map *~ *.dfu ${EXTRACLEANS} *.orig *~ stylecheck: $(STYLECHECKFILES:=.stylecheck) styleclean: $(STYLECHECKFILES:=.styleclean) diff --git a/app/Makefile b/app/Makefile index 7fa09f4..f50e524 100644 --- a/app/Makefile +++ b/app/Makefile @@ -23,7 +23,7 @@ PROG=speedo V=1 default: ${PROG}.elf -CSRCS=main.c led.c i2c.c usart.c ring.c ticker.c oled.c i2c_hw.c font8x8.c font8x16.c tacho.c oled1.c oled2.c font21x32.c +CSRCS=main.c led.c i2c.c usart.c ring.c ticker.c oled.c i2c_hw.c font8x8.c font8x16.c tacho.c oled1.c oled2.c font21x32.c gauge.c HSRCS=i2c.h oled.h project.h ring.h @@ -60,5 +60,10 @@ protos: ${CSRCS} ${CPROTO} $(INCLUDES) $(DEFINES) -e -v ${CSRCS} > prototypes.h.tmp mv -f prototypes.h.tmp prototypes.h +tidy: +# indent -i2 -ts0 ${CSRCS} ${HSRCS} + astyle -A3 -s2 --attach-extern-c -L -c -w -Y -m0 -f -p -H -U -k3 -xj -xd ${CSRCS} ${HSRCS} + + #${OBJCOPY} -I binary -O elf32-littlearm -B arm --rename-section .data=.rodata.almanac,alloc,load,readonly,data,contents $< $@ diff --git a/app/font21x32.c b/app/font21x32.c index 67d1018..4e29869 100644 --- a/app/font21x32.c +++ b/app/font21x32.c @@ -1,83 +1,105 @@ #include "project.h" static uint8_t font21x32[][84] = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, - 0xfc, 0xfe, 0xff, 0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x0f, - 0xff, 0xfe, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, 0xff, - 0xe0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xf8, 0xff, 0x7f, 0x3f, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 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, - 0x06, 0x06, 0x06, 0x06, 0x02, 0x02, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, - 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x1e, 0x1f, 0x1f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x83, 0xc7, 0xff, - 0xff, 0xfe, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xf0, - 0xf0, 0xf8, 0xfc, 0xf4, 0xf6, 0xf3, 0xf3, 0xf1, 0xf1, 0xf1, 0xf0, 0xfc, - 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, 0x80, 0x80, 0x80, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x7e, 0x7f, 0x7b, 0x11, 0x01, 0x01, 0x01, 0x01, 0x83, 0xff, 0xff, - 0xfe, 0xfe, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x00, 0x04, 0x04, 0x04, 0x04, 0x0e, 0x0f, 0x3b, 0xfb, 0xf9, 0xf0, 0xe0, - 0xc0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x6f, 0x6e, 0x40, 0xc0, - 0xc0, 0xc0, 0xc0, 0x60, 0x78, 0x7f, 0x3f, 0x3f, 0x1f, 0x07, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x38, 0x0c, 0xfe, 0xff, 0xff, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xdc, 0xc6, - 0xc3, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, - 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, - 0x60, 0x60, 0x60, 0x7f, 0x7f, 0x7f, 0x7f, 0x60, 0x60, 0x60, 0x40, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x0f, 0x0f, 0x07, - 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x8f, 0x8f, - 0x06, 0x02, 0x03, 0x03, 0x01, 0x03, 0x03, 0x1e, 0xfe, 0xfc, 0xfc, 0xf0, - 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x37, 0x67, 0x63, 0x40, 0xc0, - 0xc0, 0xc0, 0x40, 0x60, 0x78, 0x7f, 0x3f, 0x1f, 0x0f, 0x01, 0x00, 0x00,}, - {0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xfc, 0x1e, 0x06, 0x02, 0x03, 0x03, - 0x03, 0x03, 0x3b, 0x7e, 0x7e, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x0c, 0x06, 0x02, 0x02, 0x02, 0x02, 0x06, 0xfe, - 0xfc, 0xf8, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x3f, 0x7f, - 0xff, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xff, 0x7f, 0x7f, 0x1f, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, - 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xcf, 0xef, 0x7f, - 0x3f, 0x0f, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0xf0, 0xfc, 0xfe, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xff, 0xff, - 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0xf0, 0xfc, 0xfe, 0xc2, 0x82, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x06, 0xfe, 0xfc, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xc1, 0xe7, 0xef, 0x3f, 0x1f, 0x1f, 0x3f, 0x3e, 0x7e, 0xfc, 0xfe, 0xfb, - 0xfb, 0xf1, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x7f, 0xe0, - 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc1, 0x63, 0x7f, 0x3f, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, - 0xfc, 0xfe, 0xfe, 0xff, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07, 0xff, - 0xfe, 0xfc, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1f, 0x3f, - 0x7f, 0x60, 0x40, 0x40, 0x40, 0x40, 0x20, 0x18, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7e, 0x7e, 0x5c, 0xc0, 0xc0, - 0xc0, 0x40, 0x60, 0x70, 0x38, 0x3f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00,}, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, + 0xfc, 0xfe, 0xff, 0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x0f, + 0xff, 0xfe, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, 0xff, + 0xe0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xf8, 0xff, 0x7f, 0x3f, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 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, + 0x06, 0x06, 0x06, 0x06, 0x02, 0x02, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x1e, 0x1f, 0x1f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x83, 0xc7, 0xff, + 0xff, 0xfe, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xf0, + 0xf0, 0xf8, 0xfc, 0xf4, 0xf6, 0xf3, 0xf3, 0xf1, 0xf1, 0xf1, 0xf0, 0xfc, + 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, 0x80, 0x80, 0x80, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x7e, 0x7f, 0x7b, 0x11, 0x01, 0x01, 0x01, 0x01, 0x83, 0xff, 0xff, + 0xfe, 0xfe, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, + 0x00, 0x04, 0x04, 0x04, 0x04, 0x0e, 0x0f, 0x3b, 0xfb, 0xf9, 0xf0, 0xe0, + 0xc0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x6f, 0x6e, 0x40, 0xc0, + 0xc0, 0xc0, 0xc0, 0x60, 0x78, 0x7f, 0x3f, 0x3f, 0x1f, 0x07, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x38, 0x0c, 0xfe, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xdc, 0xc6, + 0xc3, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, + 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, + 0x60, 0x60, 0x60, 0x7f, 0x7f, 0x7f, 0x7f, 0x60, 0x60, 0x60, 0x40, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x0f, 0x0f, 0x07, + 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x8f, 0x8f, + 0x06, 0x02, 0x03, 0x03, 0x01, 0x03, 0x03, 0x1e, 0xfe, 0xfc, 0xfc, 0xf0, + 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x37, 0x67, 0x63, 0x40, 0xc0, + 0xc0, 0xc0, 0x40, 0x60, 0x78, 0x7f, 0x3f, 0x1f, 0x0f, 0x01, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xfc, 0x1e, 0x06, 0x02, 0x03, 0x03, + 0x03, 0x03, 0x3b, 0x7e, 0x7e, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x0c, 0x06, 0x02, 0x02, 0x02, 0x02, 0x06, 0xfe, + 0xfc, 0xf8, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x3f, 0x7f, + 0xff, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xff, 0x7f, 0x7f, 0x1f, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, + 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xcf, 0xef, 0x7f, + 0x3f, 0x0f, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xf0, 0xfc, 0xfe, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xff, 0xff, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0xf0, 0xfc, 0xfe, 0xc2, 0x82, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x06, 0xfe, 0xfc, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xc1, 0xe7, 0xef, 0x3f, 0x1f, 0x1f, 0x3f, 0x3e, 0x7e, 0xfc, 0xfe, 0xfb, + 0xfb, 0xf1, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x7f, 0xe0, + 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc1, 0x63, 0x7f, 0x3f, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, + 0xfc, 0xfe, 0xfe, 0xff, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07, 0xff, + 0xfe, 0xfc, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1f, 0x3f, + 0x7f, 0x60, 0x40, 0x40, 0x40, 0x40, 0x20, 0x18, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7e, 0x7e, 0x5c, 0xc0, 0xc0, + 0xc0, 0x40, 0x60, 0x70, 0x38, 0x3f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00, + }, }; @@ -85,7 +107,7 @@ static uint8_t font21x32[][84] = { /* this can be budget, since it can only fit one way vertically*/ void -font21x32_put_ch (uint8_t * vram, unsigned ch, unsigned x) +font21x32_put_ch (uint8_t *vram, unsigned ch, unsigned x) { if ((ch >= '0') && (ch <= '9')) ch -= '0' - 1; @@ -104,11 +126,10 @@ font21x32_put_ch (uint8_t * vram, unsigned ch, unsigned x) void -font21x32_put_str (uint8_t * vram, char *str, unsigned x) +font21x32_put_str (uint8_t *vram, char *str, unsigned x) { - while (*str) - { - font21x32_put_ch (vram, *(str++), x); - x += 21; - } + while (*str) { + font21x32_put_ch (vram, * (str++), x); + x += 21; + } } diff --git a/app/font8x16.c b/app/font8x16.c index 3591129..80bae43 100644 --- a/app/font8x16.c +++ b/app/font8x16.c @@ -1,522 +1,1034 @@ #include "project.h" static uint8_t font8x16[][16] = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00,}, - {0xf0, 0x08, 0x48, 0x08, 0x08, 0x48, 0x08, 0xf0, 0x3f, 0x40, 0x44, 0x4c, - 0x4c, 0x44, 0x40, 0x3f,}, - {0xf0, 0xf8, 0xb8, 0xf8, 0xf8, 0xb8, 0xf8, 0xf0, 0x3f, 0x7f, 0x7b, 0x73, - 0x73, 0x7b, 0x7f, 0x3f,}, - {0x80, 0xc0, 0xc0, 0x80, 0xc0, 0xc0, 0x80, 0x00, 0x0f, 0x1f, 0x3f, 0x7f, - 0x3f, 0x1f, 0x0f, 0x00,}, - {0x00, 0x00, 0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x1f, 0x3f, - 0x1f, 0x0f, 0x06, 0x00,}, - {0x00, 0x00, 0xe0, 0xf0, 0xf0, 0xe0, 0x00, 0x00, 0x0f, 0x0f, 0x4f, 0x70, - 0x70, 0x4f, 0x0f, 0x0f,}, - {0x00, 0x80, 0xc0, 0xf0, 0xf0, 0xc0, 0x80, 0x00, 0x07, 0x0f, 0x4f, 0x7f, - 0x7f, 0x4f, 0x0f, 0x07,}, - {0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, - 0x0f, 0x07, 0x00, 0x00,}, - {0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf0, - 0xf0, 0xf8, 0xff, 0xff,}, - {0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x0f, 0x18, 0x10, - 0x10, 0x18, 0x0f, 0x00,}, - {0xff, 0x7f, 0x3f, 0xbf, 0xbf, 0x3f, 0x7f, 0xff, 0xff, 0xf0, 0xe7, 0xef, - 0xef, 0xe7, 0xf0, 0xff,}, - {0x00, 0x00, 0x80, 0xc8, 0x68, 0x38, 0x78, 0x00, 0x3e, 0x7f, 0x41, 0x41, - 0x7f, 0x3e, 0x00, 0x00,}, - {0x00, 0xf0, 0xf8, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x00, 0x13, 0x17, 0x7c, - 0x7c, 0x17, 0x13, 0x00,}, - {0x00, 0x00, 0xf8, 0xf8, 0x48, 0x48, 0x78, 0x78, 0x60, 0x70, 0x7f, 0x3f, - 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0xf8, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0xf8, 0xe0, 0xff, 0x7f, 0x00, - 0x00, 0x70, 0x7f, 0x3f,}, - {0x80, 0x80, 0x00, 0xe0, 0xe0, 0x00, 0x80, 0x80, 0x16, 0x16, 0x0f, 0x79, - 0x79, 0x0f, 0x16, 0x16,}, - {0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x3f, 0x1f, 0x0f, - 0x07, 0x03, 0x03, 0x00,}, - {0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0x00, 0x03, 0x03, 0x07, 0x0f, - 0x1f, 0x3f, 0x7f, 0x00,}, - {0x00, 0x20, 0x30, 0xf8, 0xf8, 0x30, 0x20, 0x00, 0x00, 0x10, 0x30, 0x7f, - 0x7f, 0x30, 0x10, 0x00,}, - {0x00, 0xf8, 0xf8, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x6f, 0x6f, 0x00, - 0x00, 0x6f, 0x6f, 0x00,}, - {0xf0, 0xf8, 0x08, 0xf8, 0xf8, 0x08, 0xf8, 0xf8, 0x00, 0x01, 0x01, 0x7f, - 0x7f, 0x00, 0x7f, 0x7f,}, - {0x10, 0xb8, 0xe8, 0x48, 0xc8, 0x98, 0x10, 0x00, 0x23, 0x67, 0x4c, 0x48, - 0x5c, 0x77, 0x23, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, - 0x70, 0x70, 0x70, 0x00,}, - {0x00, 0x20, 0x30, 0xf8, 0xf8, 0x30, 0x20, 0x00, 0x00, 0x90, 0xb0, 0xff, - 0xff, 0xb0, 0x90, 0x00,}, - {0x00, 0x20, 0x30, 0xf8, 0xf8, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7f, - 0x7f, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x7f, - 0x7f, 0x30, 0x10, 0x00,}, - {0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x0a, - 0x0f, 0x07, 0x02, 0x00,}, - {0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x0f, 0x0a, - 0x02, 0x02, 0x02, 0x00,}, - {0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x00,}, - {0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x02, 0x07, 0x0f, 0x02, - 0x02, 0x0f, 0x07, 0x02,}, - {0x00, 0x00, 0x80, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x18, 0x1e, 0x1f, 0x1f, - 0x1f, 0x1e, 0x18, 0x00,}, - {0x60, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x60, 0x00, 0x00, 0x01, 0x07, 0x1f, - 0x07, 0x01, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0xf0, 0xf8, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, - 0x6f, 0x00, 0x00, 0x00,}, - {0x00, 0x1c, 0x3c, 0x00, 0x00, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00,}, - {0x40, 0xf8, 0xf8, 0x40, 0xf8, 0xf8, 0x40, 0x00, 0x08, 0x7f, 0x7f, 0x08, - 0x7f, 0x7f, 0x08, 0x00,}, - {0xf0, 0xf8, 0x08, 0x0e, 0x0e, 0x18, 0x30, 0x00, 0x30, 0x61, 0x41, 0xc1, - 0xc1, 0x7f, 0x3e, 0x00,}, - {0x38, 0x38, 0x00, 0x80, 0xe0, 0x78, 0x18, 0x00, 0x60, 0x78, 0x1e, 0x07, - 0x01, 0x70, 0x70, 0x00,}, - {0x00, 0x70, 0xf8, 0x88, 0xf8, 0x70, 0x00, 0x00, 0x3e, 0x7f, 0x41, 0x47, - 0x3e, 0x7f, 0x41, 0x00,}, - {0x00, 0x00, 0x20, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0xe0, 0xf0, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, - 0x60, 0x40, 0x00, 0x00,}, - {0x00, 0x00, 0x08, 0x18, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, - 0x3f, 0x1f, 0x00, 0x00,}, - {0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x02, 0x0a, 0x0f, 0x07, - 0x07, 0x0f, 0x0a, 0x02,}, - {0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x1f, - 0x1f, 0x02, 0x02, 0x02,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, - 0x70, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, - 0x60, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x80, 0xe0, 0x78, 0x18, 0x00, 0x60, 0x78, 0x1e, 0x07, - 0x01, 0x00, 0x00, 0x00,}, - {0xf0, 0xf8, 0x08, 0x88, 0x08, 0xf8, 0xf0, 0x00, 0x3f, 0x7f, 0x40, 0x47, - 0x40, 0x7f, 0x3f, 0x00,}, - {0x00, 0x20, 0x30, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7f, - 0x7f, 0x40, 0x40, 0x00,}, - {0x10, 0x18, 0x08, 0x08, 0x88, 0xf8, 0x70, 0x00, 0x78, 0x7c, 0x46, 0x43, - 0x41, 0x60, 0x60, 0x00,}, - {0x10, 0x18, 0x08, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x20, 0x60, 0x41, 0x41, - 0x41, 0x7f, 0x3e, 0x00,}, - {0x00, 0x80, 0xe0, 0x78, 0xf8, 0xf8, 0x00, 0x00, 0x06, 0x07, 0x05, 0x44, - 0x7f, 0x7f, 0x44, 0x00,}, - {0xf8, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x21, 0x61, 0x41, 0x41, - 0x41, 0x7f, 0x3e, 0x00,}, - {0xe0, 0xf0, 0x18, 0x08, 0x08, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x41, 0x41, - 0x41, 0x7f, 0x3e, 0x00,}, - {0x18, 0x18, 0x08, 0x08, 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x78, 0x7e, - 0x07, 0x01, 0x00, 0x00,}, - {0xf0, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x3e, 0x7f, 0x41, 0x41, - 0x41, 0x7f, 0x3e, 0x00,}, - {0xf0, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x00, 0x41, 0x41, 0x41, - 0x61, 0x3f, 0x1f, 0x00,}, - {0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, - 0x30, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70, - 0x30, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x00, 0x00, 0x03, 0x07, 0x0c, - 0x18, 0x30, 0x20, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x00,}, - {0x00, 0x10, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x20, 0x30, 0x18, - 0x0c, 0x07, 0x03, 0x00,}, - {0x30, 0x38, 0x08, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x6e, - 0x6f, 0x01, 0x00, 0x00,}, - {0xe0, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0xe0, 0x00, 0x3f, 0x7f, 0x40, 0x4f, - 0x4f, 0x4f, 0x07, 0x00,}, - {0xc0, 0xe0, 0x30, 0x18, 0x30, 0xe0, 0xc0, 0x00, 0x7f, 0x7f, 0x02, 0x02, - 0x02, 0x7f, 0x7f, 0x00,}, - {0x08, 0xf8, 0xf8, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x40, 0x7f, 0x7f, 0x41, - 0x41, 0x7f, 0x3e, 0x00,}, - {0xe0, 0xf0, 0x18, 0x08, 0x08, 0x18, 0x30, 0x00, 0x1f, 0x3f, 0x60, 0x40, - 0x40, 0x60, 0x30, 0x00,}, - {0x08, 0xf8, 0xf8, 0x08, 0x18, 0xf0, 0xe0, 0x00, 0x40, 0x7f, 0x7f, 0x40, - 0x60, 0x3f, 0x1f, 0x00,}, - {0x08, 0xf8, 0xf8, 0x08, 0x88, 0x18, 0x38, 0x00, 0x40, 0x7f, 0x7f, 0x41, - 0x43, 0x60, 0x70, 0x00,}, - {0x08, 0xf8, 0xf8, 0x08, 0x88, 0x18, 0x38, 0x00, 0x40, 0x7f, 0x7f, 0x41, - 0x03, 0x00, 0x00, 0x00,}, - {0xe0, 0xf0, 0x18, 0x08, 0x08, 0x18, 0x30, 0x00, 0x1f, 0x3f, 0x60, 0x42, - 0x42, 0x3e, 0x7e, 0x00,}, - {0xf8, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x7f, 0x7f, 0x01, 0x01, - 0x01, 0x7f, 0x7f, 0x00,}, - {0x00, 0x00, 0x08, 0xf8, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x40, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x08, 0xf8, 0xf8, 0x08, 0x30, 0x70, 0x40, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0x08, 0xf8, 0xf8, 0x00, 0xc0, 0xf8, 0x38, 0x00, 0x40, 0x7f, 0x7f, 0x03, - 0x0f, 0x7e, 0x70, 0x00,}, - {0x08, 0xf8, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, 0x7f, 0x40, - 0x40, 0x60, 0x70, 0x00,}, - {0xf8, 0xf8, 0x70, 0xe0, 0x70, 0xf8, 0xf8, 0x00, 0x7f, 0x7f, 0x00, 0x01, - 0x00, 0x7f, 0x7f, 0x00,}, - {0xf8, 0xf8, 0xe0, 0x80, 0x00, 0xf8, 0xf8, 0x00, 0x7f, 0x7f, 0x01, 0x07, - 0x1e, 0x7f, 0x7f, 0x00,}, - {0xe0, 0xf0, 0x18, 0x08, 0x18, 0xf0, 0xe0, 0x00, 0x1f, 0x3f, 0x60, 0x40, - 0x60, 0x3f, 0x1f, 0x00,}, - {0x08, 0xf8, 0xf8, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x40, 0x7f, 0x7f, 0x41, - 0x01, 0x01, 0x00, 0x00,}, - {0xf0, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x3f, 0x7f, 0x40, 0x70, - 0xe0, 0xff, 0x3f, 0x00,}, - {0x08, 0xf8, 0xf8, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x40, 0x7f, 0x7f, 0x01, - 0x07, 0x7f, 0x78, 0x00,}, - {0x70, 0xf8, 0x88, 0x08, 0x08, 0x38, 0x30, 0x00, 0x30, 0x70, 0x41, 0x41, - 0x43, 0x7e, 0x3c, 0x00,}, - {0x00, 0x38, 0x18, 0xf8, 0xf8, 0x18, 0x38, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x40, 0x00, 0x00,}, - {0xf8, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0xf8, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x0f, 0x1f, 0x30, 0x60, - 0x30, 0x1f, 0x0f, 0x00,}, - {0xf8, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x1f, 0x7f, 0x70, 0x1e, - 0x70, 0x7f, 0x1f, 0x00,}, - {0x38, 0xf8, 0xc0, 0x00, 0xc0, 0xf8, 0x38, 0x00, 0x70, 0x7c, 0x0f, 0x03, - 0x0f, 0x7c, 0x70, 0x00,}, - {0x00, 0xf8, 0xf8, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x41, 0x7f, - 0x7f, 0x41, 0x00, 0x00,}, - {0x38, 0x18, 0x08, 0x08, 0x88, 0xf8, 0x78, 0x00, 0x78, 0x7c, 0x46, 0x43, - 0x41, 0x60, 0x70, 0x00,}, - {0x00, 0x00, 0xf8, 0xf8, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, - 0x40, 0x40, 0x00, 0x00,}, - {0x18, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, - 0x1e, 0x78, 0x60, 0x00,}, - {0x00, 0x00, 0x08, 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, - 0x7f, 0x7f, 0x00, 0x00,}, - {0x10, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x04, 0x0c, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x38, 0x7c, 0x44, 0x44, - 0x3f, 0x7f, 0x40, 0x00,}, - {0x08, 0xf8, 0xf8, 0x80, 0x80, 0x00, 0x00, 0x00, 0x40, 0x7f, 0x3f, 0x40, - 0x41, 0x7f, 0x3e, 0x00,}, - {0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x40, 0x61, 0x21, 0x00,}, - {0x00, 0x00, 0x80, 0x88, 0xf8, 0xf8, 0x00, 0x00, 0x3e, 0x7f, 0x41, 0x40, - 0x3f, 0x7f, 0x40, 0x00,}, - {0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x44, 0x44, - 0x44, 0x67, 0x27, 0x00,}, - {0x00, 0xf0, 0xf8, 0x08, 0x18, 0x30, 0x00, 0x00, 0x41, 0x7f, 0x7f, 0x41, - 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x1f, 0x3f, 0x20, 0x20, - 0xff, 0xff, 0x00, 0x00,}, - {0x08, 0xf8, 0xf8, 0x00, 0x80, 0x80, 0x00, 0x00, 0x40, 0x7f, 0x7f, 0x01, - 0x00, 0x7f, 0x7f, 0x00,}, - {0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x40, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x80, 0x80, 0x00, - 0x00, 0xff, 0xff, 0x00,}, - {0x08, 0xf8, 0xf8, 0x00, 0x00, 0x80, 0x80, 0x00, 0x40, 0x7f, 0x7f, 0x0c, - 0x1e, 0x73, 0x61, 0x00,}, - {0x00, 0x00, 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x40, 0x00, 0x00,}, - {0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x7f, 0x7f, 0x01, 0x1f, - 0x01, 0x7f, 0x7f, 0x00,}, - {0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, - 0x00, 0x7f, 0x7f, 0x00,}, - {0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x20, - 0x20, 0x3f, 0x1f, 0x00,}, - {0x00, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x1f, 0x3f, 0x20, 0x20, - 0xff, 0xff, 0x00, 0x00,}, - {0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x40, 0x7f, 0x7f, 0x41, - 0x00, 0x03, 0x03, 0x00,}, - {0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x21, 0x63, 0x46, 0x44, - 0x4c, 0x79, 0x31, 0x00,}, - {0x80, 0x80, 0xf0, 0xf8, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, - 0x40, 0x60, 0x20, 0x00,}, - {0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x3f, 0x7f, 0x40, 0x00,}, - {0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x1f, 0x3f, 0x60, - 0x60, 0x3f, 0x1f, 0x00,}, - {0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x3f, 0x7f, 0x60, 0x3c, - 0x60, 0x7f, 0x3f, 0x00,}, - {0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x61, 0x73, 0x1e, 0x0c, - 0x1e, 0x73, 0x61, 0x00,}, - {0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x1f, 0x3f, 0x20, 0x20, - 0x20, 0xff, 0xff, 0x00,}, - {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x61, 0x71, 0x58, 0x4c, - 0x46, 0x63, 0x61, 0x00,}, - {0x00, 0x00, 0x00, 0xf0, 0xf8, 0x08, 0x08, 0x00, 0x00, 0x03, 0x03, 0x3f, - 0x7c, 0x40, 0x40, 0x00,}, - {0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, - 0x7f, 0x00, 0x00, 0x00,}, - {0x00, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7c, - 0x3f, 0x03, 0x03, 0x00,}, - {0x10, 0x18, 0x08, 0x18, 0x10, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x21, 0x20, - 0x21, 0x3f, 0x3e, 0x00,}, - {0xe0, 0xf0, 0x18, 0x08, 0x08, 0x18, 0x30, 0x00, 0x1f, 0x3f, 0x60, 0xc0, - 0xc0, 0x60, 0x30, 0x00,}, - {0xb0, 0xb0, 0x00, 0x00, 0xb0, 0xb0, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x3f, 0x7f, 0x40, 0x00,}, - {0x00, 0x80, 0xa0, 0xb0, 0x98, 0x88, 0x00, 0x00, 0x3f, 0x7f, 0x44, 0x44, - 0x44, 0x67, 0x27, 0x00,}, - {0x00, 0xa0, 0xb0, 0x98, 0xb0, 0x20, 0x00, 0x00, 0x38, 0x7c, 0x44, 0x44, - 0x3f, 0x7f, 0x40, 0x00,}, - {0x30, 0xb0, 0x80, 0x80, 0xb0, 0x30, 0x00, 0x00, 0x38, 0x7c, 0x44, 0x44, - 0x3f, 0x7f, 0x40, 0x00,}, - {0x00, 0x88, 0x98, 0xb0, 0xa0, 0x00, 0x00, 0x00, 0x38, 0x7c, 0x44, 0x44, - 0x3f, 0x7f, 0x40, 0x00,}, - {0x00, 0x90, 0xb8, 0xa8, 0xb8, 0x10, 0x00, 0x00, 0x38, 0x7c, 0x44, 0x44, - 0x3f, 0x7f, 0x40, 0x00,}, - {0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0xc0, - 0xc0, 0x61, 0x21, 0x00,}, - {0x00, 0xa0, 0xb0, 0x98, 0xb0, 0xa0, 0x00, 0x00, 0x3f, 0x7f, 0x44, 0x44, - 0x44, 0x67, 0x27, 0x00,}, - {0x30, 0xb0, 0x80, 0x80, 0xb0, 0xb0, 0x00, 0x00, 0x3f, 0x7f, 0x44, 0x44, - 0x44, 0x67, 0x27, 0x00,}, - {0x00, 0x88, 0x98, 0xb0, 0xa0, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x44, 0x44, - 0x44, 0x67, 0x27, 0x00,}, - {0x00, 0x30, 0xb0, 0x80, 0x80, 0x30, 0x30, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x40, 0x00, 0x00,}, - {0x00, 0x20, 0xb0, 0x98, 0x98, 0x30, 0x20, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x40, 0x00, 0x00,}, - {0x00, 0x08, 0x98, 0xb0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x40, 0x00, 0x00,}, - {0xc3, 0xe3, 0x30, 0x18, 0x30, 0xe3, 0xc3, 0x00, 0x7f, 0x7f, 0x02, 0x02, - 0x02, 0x7f, 0x7f, 0x00,}, - {0xc0, 0xe2, 0x37, 0x15, 0x37, 0xe2, 0xc0, 0x00, 0x7f, 0x7f, 0x02, 0x02, - 0x02, 0x7f, 0x7f, 0x00,}, - {0x08, 0xf8, 0xf8, 0x0a, 0x8b, 0x19, 0x38, 0x00, 0x40, 0x7f, 0x7f, 0x41, - 0x43, 0x60, 0x70, 0x00,}, - {0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x38, 0x7c, 0x47, 0x3f, - 0x7c, 0x47, 0x47, 0x00,}, - {0xe0, 0xf0, 0x18, 0x08, 0xf8, 0xf8, 0x08, 0x00, 0x7f, 0x7f, 0x01, 0x01, - 0x7f, 0x7f, 0x41, 0x00,}, - {0x00, 0xa0, 0xb0, 0x98, 0xb0, 0xa0, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0x30, 0xb0, 0x80, 0x80, 0x80, 0xb0, 0x30, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0x00, 0x88, 0x98, 0xb0, 0xa0, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0xa0, 0xb0, 0x18, 0x18, 0xb0, 0xa0, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x3f, 0x7f, 0x40, 0x00,}, - {0x80, 0x88, 0x18, 0x30, 0xa0, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x3f, 0x7f, 0x40, 0x00,}, - {0xb0, 0xb0, 0x00, 0x00, 0x00, 0xb0, 0xb0, 0x00, 0x1f, 0x3f, 0x20, 0x20, - 0x20, 0xff, 0xff, 0x00,}, - {0xe3, 0xf3, 0x18, 0x08, 0x18, 0xf3, 0xe3, 0x00, 0x1f, 0x3f, 0x60, 0x40, - 0x60, 0x3f, 0x1f, 0x00,}, - {0xfb, 0xfb, 0x00, 0x00, 0x00, 0xfb, 0xfb, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0xbf, 0xff, 0x70, 0x4c, - 0x43, 0x7f, 0x3f, 0x00,}, - {0x80, 0xf8, 0xfc, 0x84, 0x0c, 0x18, 0x00, 0x00, 0x60, 0x7f, 0x7f, 0x40, - 0x40, 0x60, 0x20, 0x00,}, - {0xe0, 0xf0, 0x18, 0x88, 0x78, 0xfc, 0xe4, 0x00, 0x9f, 0xff, 0x78, 0x47, - 0x60, 0x3f, 0x1f, 0x00,}, - {0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x10, 0x19, 0x0f, 0x06, - 0x0f, 0x19, 0x10, 0x00,}, - {0x00, 0x00, 0x00, 0xf8, 0xfc, 0x04, 0x0c, 0x08, 0x80, 0x81, 0x01, 0xff, - 0xff, 0x01, 0x01, 0x00,}, - {0x00, 0x80, 0xa0, 0xb0, 0x98, 0x08, 0x00, 0x00, 0x38, 0x7c, 0x44, 0x44, - 0x3f, 0x7f, 0x40, 0x00,}, - {0x00, 0x00, 0xa0, 0xb0, 0x98, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x40, 0x00, 0x00,}, - {0x00, 0x80, 0xa0, 0xb0, 0x98, 0x88, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0x80, 0x80, 0x20, 0x30, 0x98, 0x88, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x3f, 0x7f, 0x40, 0x00,}, - {0xa0, 0xb0, 0x10, 0xb0, 0xa0, 0xb0, 0x10, 0x00, 0x00, 0x7f, 0x7f, 0x00, - 0x00, 0x7f, 0x7f, 0x00,}, - {0xfa, 0xfb, 0xe1, 0x83, 0x02, 0xfb, 0xf9, 0x00, 0x7f, 0x7f, 0x01, 0x07, - 0x1e, 0x7f, 0x7f, 0x00,}, - {0x00, 0x38, 0x7c, 0x44, 0x7c, 0x7c, 0x40, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00,}, - {0x00, 0x38, 0x7c, 0x44, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00,}, - {0x00, 0x00, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7e, 0x43, 0x41, - 0x40, 0x70, 0x30, 0x00,}, - {0xf0, 0x18, 0xe8, 0x28, 0xc8, 0x18, 0xf0, 0x00, 0x1f, 0x30, 0x2f, 0x21, - 0x2e, 0x30, 0x1f, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x1f, 0x1f, 0x00,}, - {0xfc, 0xfc, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x00, 0x18, 0x0c, 0x96, 0xcb, - 0x69, 0x38, 0x10, 0x00,}, - {0xfc, 0xfc, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x00, 0x18, 0x4c, 0x66, 0x73, - 0xf9, 0xf8, 0x40, 0x00,}, - {0x00, 0x00, 0x00, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x7f, - 0x7f, 0x38, 0x00, 0x00,}, - {0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x06, 0x0f, 0x19, 0x10, - 0x06, 0x0f, 0x19, 0x10,}, - {0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x10, 0x19, 0x0f, 0x06, - 0x10, 0x19, 0x0f, 0x06,}, - {0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, - 0x00, 0xaa, 0x00, 0x55,}, - {0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, - 0xaa, 0x55, 0xaa, 0x55,}, - {0x55, 0xff, 0xaa, 0xff, 0x55, 0xff, 0xaa, 0xff, 0x55, 0xff, 0xaa, 0xff, - 0x55, 0xff, 0xaa, 0xff,}, - {0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0xff, - 0xff, 0x00, 0x00, 0x00,}, - {0xc0, 0xe0, 0x30, 0x1a, 0x33, 0xe1, 0xc0, 0x00, 0x7f, 0x7f, 0x02, 0x02, - 0x02, 0x7f, 0x7f, 0x00,}, - {0xc0, 0xe2, 0x33, 0x19, 0x33, 0xe2, 0xc0, 0x00, 0x7f, 0x7f, 0x02, 0x02, - 0x02, 0x7f, 0x7f, 0x00,}, - {0xc0, 0xe1, 0x33, 0x1a, 0x30, 0xe0, 0xc0, 0x00, 0x7f, 0x7f, 0x02, 0x02, - 0x02, 0x7f, 0x7f, 0x00,}, - {0xf0, 0x18, 0xc8, 0x28, 0x28, 0x18, 0xf0, 0x00, 0x1f, 0x30, 0x27, 0x28, - 0x28, 0x30, 0x1f, 0x00,}, - {0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x05, 0x05, 0xfd, 0xfd, - 0x00, 0xff, 0xff, 0x00,}, - {0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x00, 0xff, 0xff, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0xfd, 0xfd, - 0x01, 0xff, 0xff, 0x00,}, - {0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x05, 0x05, 0x05, 0x05, - 0x04, 0x07, 0x07, 0x00,}, - {0x00, 0xc0, 0xe0, 0x38, 0x38, 0x60, 0x40, 0x00, 0x00, 0x0f, 0x1f, 0x70, - 0x70, 0x18, 0x08, 0x00,}, - {0x00, 0x38, 0x78, 0xc0, 0xc0, 0x78, 0x38, 0x00, 0x00, 0x09, 0x09, 0x7f, - 0x7f, 0x09, 0x09, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0xfe, - 0xfe, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x03, 0x02, 0x02, 0x02,}, - {0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, - 0x03, 0x02, 0x02, 0x02,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0xfe, - 0xfe, 0x02, 0x02, 0x02,}, - {0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x02, 0x02, 0x02,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02,}, - {0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0xff, - 0xff, 0x02, 0x02, 0x02,}, - {0x20, 0xb0, 0x90, 0xb0, 0xa0, 0x30, 0x10, 0x00, 0x38, 0x7c, 0x44, 0x44, - 0x3f, 0x7f, 0x40, 0x00,}, - {0xc2, 0xe3, 0x31, 0x1b, 0x32, 0xe3, 0xc1, 0x00, 0x7f, 0x7f, 0x02, 0x02, - 0x02, 0x7f, 0x7f, 0x00,}, - {0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0x07, - 0x04, 0x05, 0x05, 0x05,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x01, 0xfd, 0xfd, 0x05,}, - {0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x05, 0x05, 0x05, 0x05, - 0x04, 0x05, 0x05, 0x05,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0xfd, 0xfd, - 0x01, 0xfd, 0xfd, 0x05,}, - {0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x00, 0xfd, 0xfd, 0x05,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05,}, - {0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x05, 0x05, 0xfd, 0xfd, - 0x00, 0xfd, 0xfd, 0x05,}, - {0x90, 0xf0, 0x60, 0x40, 0x60, 0xf0, 0x90, 0x00, 0x27, 0x3f, 0x18, 0x08, - 0x18, 0x3f, 0x27, 0x00,}, - {0x20, 0xa8, 0x98, 0xb0, 0xe8, 0xc8, 0x80, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0x08, 0xf8, 0xf8, 0x08, 0x18, 0xf0, 0xe0, 0x00, 0x41, 0x7f, 0x7f, 0x41, - 0x60, 0x3f, 0x1f, 0x00,}, - {0x08, 0xfa, 0xfb, 0x09, 0x8b, 0x1a, 0x38, 0x00, 0x40, 0x7f, 0x7f, 0x41, - 0x43, 0x60, 0x70, 0x00,}, - {0x08, 0xfb, 0xfb, 0x08, 0x88, 0x1b, 0x3b, 0x00, 0x40, 0x7f, 0x7f, 0x41, - 0x43, 0x60, 0x70, 0x00,}, - {0x08, 0xf9, 0xfb, 0x0a, 0x88, 0x18, 0x38, 0x00, 0x40, 0x7f, 0x7f, 0x41, - 0x43, 0x60, 0x70, 0x00,}, - {0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x40, 0x00, 0x00,}, - {0x00, 0x00, 0x08, 0xfa, 0xfb, 0x09, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x40, 0x00, 0x00,}, - {0x00, 0x02, 0x0b, 0xf9, 0xf9, 0x0b, 0x02, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x40, 0x00, 0x00,}, - {0x00, 0x03, 0x0b, 0xf8, 0xf8, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x40, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, - 0x03, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0xfe, 0x02, 0x02, 0x02,}, - {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xfe,}, - {0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, - 0x7c, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x09, 0xfb, 0xfa, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x40, 0x00, 0x00,}, - {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01,}, - {0xe0, 0xf0, 0x18, 0x0a, 0x1b, 0xf1, 0xe0, 0x00, 0x1f, 0x3f, 0x60, 0x40, - 0x60, 0x3f, 0x1f, 0x00,}, - {0xf0, 0xf8, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x41, - 0x43, 0x7e, 0x3c, 0x00,}, - {0xe0, 0xf2, 0x1b, 0x09, 0x1b, 0xf2, 0xe0, 0x00, 0x1f, 0x3f, 0x60, 0x40, - 0x60, 0x3f, 0x1f, 0x00,}, - {0xe0, 0xf1, 0x1b, 0x0a, 0x18, 0xf0, 0xe0, 0x00, 0x1f, 0x3f, 0x60, 0x40, - 0x60, 0x3f, 0x1f, 0x00,}, - {0x20, 0xb0, 0x90, 0xb0, 0xa0, 0xb0, 0x10, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0xe2, 0xf3, 0x19, 0x0b, 0x1a, 0xf3, 0xe1, 0x00, 0x1f, 0x3f, 0x60, 0x40, - 0x60, 0x3f, 0x1f, 0x00,}, - {0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0xff, 0xff, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0x08, 0xf8, 0xf8, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x20, - 0x20, 0x3f, 0x1f, 0x00,}, - {0x08, 0xf8, 0xf8, 0x48, 0x40, 0xc0, 0x80, 0x00, 0x40, 0x7f, 0x7f, 0x48, - 0x08, 0x0f, 0x07, 0x00,}, - {0xf8, 0xf8, 0x00, 0x02, 0x03, 0xf9, 0xf8, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0xf8, 0xfa, 0x03, 0x01, 0x03, 0xfa, 0xf8, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0xf8, 0xf9, 0x03, 0x02, 0x00, 0xf8, 0xf8, 0x00, 0x3f, 0x7f, 0x40, 0x40, - 0x40, 0x7f, 0x3f, 0x00,}, - {0x80, 0x80, 0x20, 0x30, 0x18, 0x88, 0x80, 0x00, 0x1f, 0x3f, 0x20, 0x20, - 0x20, 0xff, 0xff, 0x00,}, - {0x00, 0xf8, 0xf8, 0x02, 0x03, 0xf9, 0xf8, 0x00, 0x00, 0x00, 0x41, 0x7f, - 0x7f, 0x41, 0x00, 0x00,}, - {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x10, 0x18, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x00,}, - {0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x41, 0x4f, - 0x4f, 0x41, 0x41, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80,}, - {0x84, 0x94, 0xfc, 0x68, 0x80, 0xc0, 0x60, 0x00, 0x18, 0x4c, 0x66, 0x73, - 0xf9, 0xf8, 0x40, 0x00,}, - {0xf0, 0xf8, 0x08, 0xf8, 0xf8, 0x08, 0xf8, 0xf8, 0x00, 0x01, 0x01, 0x7f, - 0x7f, 0x00, 0x7f, 0x7f,}, - {0x10, 0xb8, 0xe8, 0x48, 0xc8, 0x98, 0x10, 0x00, 0x23, 0x67, 0x4c, 0x48, - 0x5c, 0x77, 0x23, 0x00,}, - {0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x32, - 0x32, 0x02, 0x02, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, - 0xc0, 0x80, 0x00, 0x00,}, - {0x00, 0x38, 0x7c, 0x44, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x0c, 0x0c, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x00,}, - {0x00, 0x00, 0x08, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00,}, - {0x00, 0x88, 0x8c, 0x24, 0xfc, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00,}, - {0x00, 0x88, 0xcc, 0x64, 0x3c, 0x98, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x00, 0x00,}, - {0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, - 0x3f, 0x3f, 0x00, 0x00,}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00,}, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0xf0, 0x08, 0x48, 0x08, 0x08, 0x48, 0x08, 0xf0, 0x3f, 0x40, 0x44, 0x4c, + 0x4c, 0x44, 0x40, 0x3f, + }, + { + 0xf0, 0xf8, 0xb8, 0xf8, 0xf8, 0xb8, 0xf8, 0xf0, 0x3f, 0x7f, 0x7b, 0x73, + 0x73, 0x7b, 0x7f, 0x3f, + }, + { + 0x80, 0xc0, 0xc0, 0x80, 0xc0, 0xc0, 0x80, 0x00, 0x0f, 0x1f, 0x3f, 0x7f, + 0x3f, 0x1f, 0x0f, 0x00, + }, + { + 0x00, 0x00, 0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x1f, 0x3f, + 0x1f, 0x0f, 0x06, 0x00, + }, + { + 0x00, 0x00, 0xe0, 0xf0, 0xf0, 0xe0, 0x00, 0x00, 0x0f, 0x0f, 0x4f, 0x70, + 0x70, 0x4f, 0x0f, 0x0f, + }, + { + 0x00, 0x80, 0xc0, 0xf0, 0xf0, 0xc0, 0x80, 0x00, 0x07, 0x0f, 0x4f, 0x7f, + 0x7f, 0x4f, 0x0f, 0x07, + }, + { + 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, + 0x0f, 0x07, 0x00, 0x00, + }, + { + 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf0, + 0xf0, 0xf8, 0xff, 0xff, + }, + { + 0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x0f, 0x18, 0x10, + 0x10, 0x18, 0x0f, 0x00, + }, + { + 0xff, 0x7f, 0x3f, 0xbf, 0xbf, 0x3f, 0x7f, 0xff, 0xff, 0xf0, 0xe7, 0xef, + 0xef, 0xe7, 0xf0, 0xff, + }, + { + 0x00, 0x00, 0x80, 0xc8, 0x68, 0x38, 0x78, 0x00, 0x3e, 0x7f, 0x41, 0x41, + 0x7f, 0x3e, 0x00, 0x00, + }, + { + 0x00, 0xf0, 0xf8, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x00, 0x13, 0x17, 0x7c, + 0x7c, 0x17, 0x13, 0x00, + }, + { + 0x00, 0x00, 0xf8, 0xf8, 0x48, 0x48, 0x78, 0x78, 0x60, 0x70, 0x7f, 0x3f, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0xf8, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0xf8, 0xe0, 0xff, 0x7f, 0x00, + 0x00, 0x70, 0x7f, 0x3f, + }, + { + 0x80, 0x80, 0x00, 0xe0, 0xe0, 0x00, 0x80, 0x80, 0x16, 0x16, 0x0f, 0x79, + 0x79, 0x0f, 0x16, 0x16, + }, + { + 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x3f, 0x1f, 0x0f, + 0x07, 0x03, 0x03, 0x00, + }, + { + 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0x00, 0x03, 0x03, 0x07, 0x0f, + 0x1f, 0x3f, 0x7f, 0x00, + }, + { + 0x00, 0x20, 0x30, 0xf8, 0xf8, 0x30, 0x20, 0x00, 0x00, 0x10, 0x30, 0x7f, + 0x7f, 0x30, 0x10, 0x00, + }, + { + 0x00, 0xf8, 0xf8, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x6f, 0x6f, 0x00, + 0x00, 0x6f, 0x6f, 0x00, + }, + { + 0xf0, 0xf8, 0x08, 0xf8, 0xf8, 0x08, 0xf8, 0xf8, 0x00, 0x01, 0x01, 0x7f, + 0x7f, 0x00, 0x7f, 0x7f, + }, + { + 0x10, 0xb8, 0xe8, 0x48, 0xc8, 0x98, 0x10, 0x00, 0x23, 0x67, 0x4c, 0x48, + 0x5c, 0x77, 0x23, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, + 0x70, 0x70, 0x70, 0x00, + }, + { + 0x00, 0x20, 0x30, 0xf8, 0xf8, 0x30, 0x20, 0x00, 0x00, 0x90, 0xb0, 0xff, + 0xff, 0xb0, 0x90, 0x00, + }, + { + 0x00, 0x20, 0x30, 0xf8, 0xf8, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7f, + 0x7f, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x7f, + 0x7f, 0x30, 0x10, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x0a, + 0x0f, 0x07, 0x02, 0x00, + }, + { + 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x0f, 0x0a, + 0x02, 0x02, 0x02, 0x00, + }, + { + 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x00, + }, + { + 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x02, 0x07, 0x0f, 0x02, + 0x02, 0x0f, 0x07, 0x02, + }, + { + 0x00, 0x00, 0x80, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x18, 0x1e, 0x1f, 0x1f, + 0x1f, 0x1e, 0x18, 0x00, + }, + { + 0x60, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x60, 0x00, 0x00, 0x01, 0x07, 0x1f, + 0x07, 0x01, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, + 0x6f, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x1c, 0x3c, 0x00, 0x00, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0x40, 0xf8, 0xf8, 0x40, 0xf8, 0xf8, 0x40, 0x00, 0x08, 0x7f, 0x7f, 0x08, + 0x7f, 0x7f, 0x08, 0x00, + }, + { + 0xf0, 0xf8, 0x08, 0x0e, 0x0e, 0x18, 0x30, 0x00, 0x30, 0x61, 0x41, 0xc1, + 0xc1, 0x7f, 0x3e, 0x00, + }, + { + 0x38, 0x38, 0x00, 0x80, 0xe0, 0x78, 0x18, 0x00, 0x60, 0x78, 0x1e, 0x07, + 0x01, 0x70, 0x70, 0x00, + }, + { + 0x00, 0x70, 0xf8, 0x88, 0xf8, 0x70, 0x00, 0x00, 0x3e, 0x7f, 0x41, 0x47, + 0x3e, 0x7f, 0x41, 0x00, + }, + { + 0x00, 0x00, 0x20, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0xe0, 0xf0, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, + 0x60, 0x40, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x08, 0x18, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, + 0x3f, 0x1f, 0x00, 0x00, + }, + { + 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x02, 0x0a, 0x0f, 0x07, + 0x07, 0x0f, 0x0a, 0x02, + }, + { + 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x1f, + 0x1f, 0x02, 0x02, 0x02, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, + 0x70, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, + 0x60, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x80, 0xe0, 0x78, 0x18, 0x00, 0x60, 0x78, 0x1e, 0x07, + 0x01, 0x00, 0x00, 0x00, + }, + { + 0xf0, 0xf8, 0x08, 0x88, 0x08, 0xf8, 0xf0, 0x00, 0x3f, 0x7f, 0x40, 0x47, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0x00, 0x20, 0x30, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7f, + 0x7f, 0x40, 0x40, 0x00, + }, + { + 0x10, 0x18, 0x08, 0x08, 0x88, 0xf8, 0x70, 0x00, 0x78, 0x7c, 0x46, 0x43, + 0x41, 0x60, 0x60, 0x00, + }, + { + 0x10, 0x18, 0x08, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x20, 0x60, 0x41, 0x41, + 0x41, 0x7f, 0x3e, 0x00, + }, + { + 0x00, 0x80, 0xe0, 0x78, 0xf8, 0xf8, 0x00, 0x00, 0x06, 0x07, 0x05, 0x44, + 0x7f, 0x7f, 0x44, 0x00, + }, + { + 0xf8, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x21, 0x61, 0x41, 0x41, + 0x41, 0x7f, 0x3e, 0x00, + }, + { + 0xe0, 0xf0, 0x18, 0x08, 0x08, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x41, 0x41, + 0x41, 0x7f, 0x3e, 0x00, + }, + { + 0x18, 0x18, 0x08, 0x08, 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x78, 0x7e, + 0x07, 0x01, 0x00, 0x00, + }, + { + 0xf0, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x3e, 0x7f, 0x41, 0x41, + 0x41, 0x7f, 0x3e, 0x00, + }, + { + 0xf0, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x00, 0x41, 0x41, 0x41, + 0x61, 0x3f, 0x1f, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, + 0x30, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70, + 0x30, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x00, 0x00, 0x03, 0x07, 0x0c, + 0x18, 0x30, 0x20, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x00, + }, + { + 0x00, 0x10, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x20, 0x30, 0x18, + 0x0c, 0x07, 0x03, 0x00, + }, + { + 0x30, 0x38, 0x08, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x6e, + 0x6f, 0x01, 0x00, 0x00, + }, + { + 0xe0, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0xe0, 0x00, 0x3f, 0x7f, 0x40, 0x4f, + 0x4f, 0x4f, 0x07, 0x00, + }, + { + 0xc0, 0xe0, 0x30, 0x18, 0x30, 0xe0, 0xc0, 0x00, 0x7f, 0x7f, 0x02, 0x02, + 0x02, 0x7f, 0x7f, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x40, 0x7f, 0x7f, 0x41, + 0x41, 0x7f, 0x3e, 0x00, + }, + { + 0xe0, 0xf0, 0x18, 0x08, 0x08, 0x18, 0x30, 0x00, 0x1f, 0x3f, 0x60, 0x40, + 0x40, 0x60, 0x30, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x08, 0x18, 0xf0, 0xe0, 0x00, 0x40, 0x7f, 0x7f, 0x40, + 0x60, 0x3f, 0x1f, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x08, 0x88, 0x18, 0x38, 0x00, 0x40, 0x7f, 0x7f, 0x41, + 0x43, 0x60, 0x70, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x08, 0x88, 0x18, 0x38, 0x00, 0x40, 0x7f, 0x7f, 0x41, + 0x03, 0x00, 0x00, 0x00, + }, + { + 0xe0, 0xf0, 0x18, 0x08, 0x08, 0x18, 0x30, 0x00, 0x1f, 0x3f, 0x60, 0x42, + 0x42, 0x3e, 0x7e, 0x00, + }, + { + 0xf8, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x7f, 0x7f, 0x01, 0x01, + 0x01, 0x7f, 0x7f, 0x00, + }, + { + 0x00, 0x00, 0x08, 0xf8, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, + 0x7f, 0x40, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x08, 0xf8, 0xf8, 0x08, 0x30, 0x70, 0x40, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x00, 0xc0, 0xf8, 0x38, 0x00, 0x40, 0x7f, 0x7f, 0x03, + 0x0f, 0x7e, 0x70, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, 0x7f, 0x40, + 0x40, 0x60, 0x70, 0x00, + }, + { + 0xf8, 0xf8, 0x70, 0xe0, 0x70, 0xf8, 0xf8, 0x00, 0x7f, 0x7f, 0x00, 0x01, + 0x00, 0x7f, 0x7f, 0x00, + }, + { + 0xf8, 0xf8, 0xe0, 0x80, 0x00, 0xf8, 0xf8, 0x00, 0x7f, 0x7f, 0x01, 0x07, + 0x1e, 0x7f, 0x7f, 0x00, + }, + { + 0xe0, 0xf0, 0x18, 0x08, 0x18, 0xf0, 0xe0, 0x00, 0x1f, 0x3f, 0x60, 0x40, + 0x60, 0x3f, 0x1f, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x40, 0x7f, 0x7f, 0x41, + 0x01, 0x01, 0x00, 0x00, + }, + { + 0xf0, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x3f, 0x7f, 0x40, 0x70, + 0xe0, 0xff, 0x3f, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x40, 0x7f, 0x7f, 0x01, + 0x07, 0x7f, 0x78, 0x00, + }, + { + 0x70, 0xf8, 0x88, 0x08, 0x08, 0x38, 0x30, 0x00, 0x30, 0x70, 0x41, 0x41, + 0x43, 0x7e, 0x3c, 0x00, + }, + { + 0x00, 0x38, 0x18, 0xf8, 0xf8, 0x18, 0x38, 0x00, 0x00, 0x00, 0x40, 0x7f, + 0x7f, 0x40, 0x00, 0x00, + }, + { + 0xf8, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0xf8, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x0f, 0x1f, 0x30, 0x60, + 0x30, 0x1f, 0x0f, 0x00, + }, + { + 0xf8, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x1f, 0x7f, 0x70, 0x1e, + 0x70, 0x7f, 0x1f, 0x00, + }, + { + 0x38, 0xf8, 0xc0, 0x00, 0xc0, 0xf8, 0x38, 0x00, 0x70, 0x7c, 0x0f, 0x03, + 0x0f, 0x7c, 0x70, 0x00, + }, + { + 0x00, 0xf8, 0xf8, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x41, 0x7f, + 0x7f, 0x41, 0x00, 0x00, + }, + { + 0x38, 0x18, 0x08, 0x08, 0x88, 0xf8, 0x78, 0x00, 0x78, 0x7c, 0x46, 0x43, + 0x41, 0x60, 0x70, 0x00, + }, + { + 0x00, 0x00, 0xf8, 0xf8, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, + 0x40, 0x40, 0x00, 0x00, + }, + { + 0x18, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, + 0x1e, 0x78, 0x60, 0x00, + }, + { + 0x00, 0x00, 0x08, 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, + 0x7f, 0x7f, 0x00, 0x00, + }, + { + 0x10, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x04, 0x0c, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x38, 0x7c, 0x44, 0x44, + 0x3f, 0x7f, 0x40, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x80, 0x80, 0x00, 0x00, 0x00, 0x40, 0x7f, 0x3f, 0x40, + 0x41, 0x7f, 0x3e, 0x00, + }, + { + 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x40, 0x61, 0x21, 0x00, + }, + { + 0x00, 0x00, 0x80, 0x88, 0xf8, 0xf8, 0x00, 0x00, 0x3e, 0x7f, 0x41, 0x40, + 0x3f, 0x7f, 0x40, 0x00, + }, + { + 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x44, 0x44, + 0x44, 0x67, 0x27, 0x00, + }, + { + 0x00, 0xf0, 0xf8, 0x08, 0x18, 0x30, 0x00, 0x00, 0x41, 0x7f, 0x7f, 0x41, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x1f, 0x3f, 0x20, 0x20, + 0xff, 0xff, 0x00, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x00, 0x80, 0x80, 0x00, 0x00, 0x40, 0x7f, 0x7f, 0x01, + 0x00, 0x7f, 0x7f, 0x00, + }, + { + 0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, + 0x7f, 0x40, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x80, 0x80, 0x00, + 0x00, 0xff, 0xff, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x80, 0x80, 0x00, 0x40, 0x7f, 0x7f, 0x0c, + 0x1e, 0x73, 0x61, 0x00, + }, + { + 0x00, 0x00, 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, + 0x7f, 0x40, 0x00, 0x00, + }, + { + 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x7f, 0x7f, 0x01, 0x1f, + 0x01, 0x7f, 0x7f, 0x00, + }, + { + 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, + 0x00, 0x7f, 0x7f, 0x00, + }, + { + 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x20, + 0x20, 0x3f, 0x1f, 0x00, + }, + { + 0x00, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x1f, 0x3f, 0x20, 0x20, + 0xff, 0xff, 0x00, 0x00, + }, + { + 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x40, 0x7f, 0x7f, 0x41, + 0x00, 0x03, 0x03, 0x00, + }, + { + 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x21, 0x63, 0x46, 0x44, + 0x4c, 0x79, 0x31, 0x00, + }, + { + 0x80, 0x80, 0xf0, 0xf8, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, + 0x40, 0x60, 0x20, 0x00, + }, + { + 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x3f, 0x7f, 0x40, 0x00, + }, + { + 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x1f, 0x3f, 0x60, + 0x60, 0x3f, 0x1f, 0x00, + }, + { + 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x3f, 0x7f, 0x60, 0x3c, + 0x60, 0x7f, 0x3f, 0x00, + }, + { + 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x61, 0x73, 0x1e, 0x0c, + 0x1e, 0x73, 0x61, 0x00, + }, + { + 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x1f, 0x3f, 0x20, 0x20, + 0x20, 0xff, 0xff, 0x00, + }, + { + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x61, 0x71, 0x58, 0x4c, + 0x46, 0x63, 0x61, 0x00, + }, + { + 0x00, 0x00, 0x00, 0xf0, 0xf8, 0x08, 0x08, 0x00, 0x00, 0x03, 0x03, 0x3f, + 0x7c, 0x40, 0x40, 0x00, + }, + { + 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, + 0x7f, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7c, + 0x3f, 0x03, 0x03, 0x00, + }, + { + 0x10, 0x18, 0x08, 0x18, 0x10, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x21, 0x20, + 0x21, 0x3f, 0x3e, 0x00, + }, + { + 0xe0, 0xf0, 0x18, 0x08, 0x08, 0x18, 0x30, 0x00, 0x1f, 0x3f, 0x60, 0xc0, + 0xc0, 0x60, 0x30, 0x00, + }, + { + 0xb0, 0xb0, 0x00, 0x00, 0xb0, 0xb0, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x3f, 0x7f, 0x40, 0x00, + }, + { + 0x00, 0x80, 0xa0, 0xb0, 0x98, 0x88, 0x00, 0x00, 0x3f, 0x7f, 0x44, 0x44, + 0x44, 0x67, 0x27, 0x00, + }, + { + 0x00, 0xa0, 0xb0, 0x98, 0xb0, 0x20, 0x00, 0x00, 0x38, 0x7c, 0x44, 0x44, + 0x3f, 0x7f, 0x40, 0x00, + }, + { + 0x30, 0xb0, 0x80, 0x80, 0xb0, 0x30, 0x00, 0x00, 0x38, 0x7c, 0x44, 0x44, + 0x3f, 0x7f, 0x40, 0x00, + }, + { + 0x00, 0x88, 0x98, 0xb0, 0xa0, 0x00, 0x00, 0x00, 0x38, 0x7c, 0x44, 0x44, + 0x3f, 0x7f, 0x40, 0x00, + }, + { + 0x00, 0x90, 0xb8, 0xa8, 0xb8, 0x10, 0x00, 0x00, 0x38, 0x7c, 0x44, 0x44, + 0x3f, 0x7f, 0x40, 0x00, + }, + { + 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0xc0, + 0xc0, 0x61, 0x21, 0x00, + }, + { + 0x00, 0xa0, 0xb0, 0x98, 0xb0, 0xa0, 0x00, 0x00, 0x3f, 0x7f, 0x44, 0x44, + 0x44, 0x67, 0x27, 0x00, + }, + { + 0x30, 0xb0, 0x80, 0x80, 0xb0, 0xb0, 0x00, 0x00, 0x3f, 0x7f, 0x44, 0x44, + 0x44, 0x67, 0x27, 0x00, + }, + { + 0x00, 0x88, 0x98, 0xb0, 0xa0, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x44, 0x44, + 0x44, 0x67, 0x27, 0x00, + }, + { + 0x00, 0x30, 0xb0, 0x80, 0x80, 0x30, 0x30, 0x00, 0x00, 0x00, 0x40, 0x7f, + 0x7f, 0x40, 0x00, 0x00, + }, + { + 0x00, 0x20, 0xb0, 0x98, 0x98, 0x30, 0x20, 0x00, 0x00, 0x00, 0x40, 0x7f, + 0x7f, 0x40, 0x00, 0x00, + }, + { + 0x00, 0x08, 0x98, 0xb0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, + 0x7f, 0x40, 0x00, 0x00, + }, + { + 0xc3, 0xe3, 0x30, 0x18, 0x30, 0xe3, 0xc3, 0x00, 0x7f, 0x7f, 0x02, 0x02, + 0x02, 0x7f, 0x7f, 0x00, + }, + { + 0xc0, 0xe2, 0x37, 0x15, 0x37, 0xe2, 0xc0, 0x00, 0x7f, 0x7f, 0x02, 0x02, + 0x02, 0x7f, 0x7f, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x0a, 0x8b, 0x19, 0x38, 0x00, 0x40, 0x7f, 0x7f, 0x41, + 0x43, 0x60, 0x70, 0x00, + }, + { + 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x38, 0x7c, 0x47, 0x3f, + 0x7c, 0x47, 0x47, 0x00, + }, + { + 0xe0, 0xf0, 0x18, 0x08, 0xf8, 0xf8, 0x08, 0x00, 0x7f, 0x7f, 0x01, 0x01, + 0x7f, 0x7f, 0x41, 0x00, + }, + { + 0x00, 0xa0, 0xb0, 0x98, 0xb0, 0xa0, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0x30, 0xb0, 0x80, 0x80, 0x80, 0xb0, 0x30, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0x00, 0x88, 0x98, 0xb0, 0xa0, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0xa0, 0xb0, 0x18, 0x18, 0xb0, 0xa0, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x3f, 0x7f, 0x40, 0x00, + }, + { + 0x80, 0x88, 0x18, 0x30, 0xa0, 0x80, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x3f, 0x7f, 0x40, 0x00, + }, + { + 0xb0, 0xb0, 0x00, 0x00, 0x00, 0xb0, 0xb0, 0x00, 0x1f, 0x3f, 0x20, 0x20, + 0x20, 0xff, 0xff, 0x00, + }, + { + 0xe3, 0xf3, 0x18, 0x08, 0x18, 0xf3, 0xe3, 0x00, 0x1f, 0x3f, 0x60, 0x40, + 0x60, 0x3f, 0x1f, 0x00, + }, + { + 0xfb, 0xfb, 0x00, 0x00, 0x00, 0xfb, 0xfb, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0xbf, 0xff, 0x70, 0x4c, + 0x43, 0x7f, 0x3f, 0x00, + }, + { + 0x80, 0xf8, 0xfc, 0x84, 0x0c, 0x18, 0x00, 0x00, 0x60, 0x7f, 0x7f, 0x40, + 0x40, 0x60, 0x20, 0x00, + }, + { + 0xe0, 0xf0, 0x18, 0x88, 0x78, 0xfc, 0xe4, 0x00, 0x9f, 0xff, 0x78, 0x47, + 0x60, 0x3f, 0x1f, 0x00, + }, + { + 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x10, 0x19, 0x0f, 0x06, + 0x0f, 0x19, 0x10, 0x00, + }, + { + 0x00, 0x00, 0x00, 0xf8, 0xfc, 0x04, 0x0c, 0x08, 0x80, 0x81, 0x01, 0xff, + 0xff, 0x01, 0x01, 0x00, + }, + { + 0x00, 0x80, 0xa0, 0xb0, 0x98, 0x08, 0x00, 0x00, 0x38, 0x7c, 0x44, 0x44, + 0x3f, 0x7f, 0x40, 0x00, + }, + { + 0x00, 0x00, 0xa0, 0xb0, 0x98, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, + 0x7f, 0x40, 0x00, 0x00, + }, + { + 0x00, 0x80, 0xa0, 0xb0, 0x98, 0x88, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0x80, 0x80, 0x20, 0x30, 0x98, 0x88, 0x00, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x3f, 0x7f, 0x40, 0x00, + }, + { + 0xa0, 0xb0, 0x10, 0xb0, 0xa0, 0xb0, 0x10, 0x00, 0x00, 0x7f, 0x7f, 0x00, + 0x00, 0x7f, 0x7f, 0x00, + }, + { + 0xfa, 0xfb, 0xe1, 0x83, 0x02, 0xfb, 0xf9, 0x00, 0x7f, 0x7f, 0x01, 0x07, + 0x1e, 0x7f, 0x7f, 0x00, + }, + { + 0x00, 0x38, 0x7c, 0x44, 0x7c, 0x7c, 0x40, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, + }, + { + 0x00, 0x38, 0x7c, 0x44, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, + }, + { + 0x00, 0x00, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7e, 0x43, 0x41, + 0x40, 0x70, 0x30, 0x00, + }, + { + 0xf0, 0x18, 0xe8, 0x28, 0xc8, 0x18, 0xf0, 0x00, 0x1f, 0x30, 0x2f, 0x21, + 0x2e, 0x30, 0x1f, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x1f, 0x1f, 0x00, + }, + { + 0xfc, 0xfc, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x00, 0x18, 0x0c, 0x96, 0xcb, + 0x69, 0x38, 0x10, 0x00, + }, + { + 0xfc, 0xfc, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x00, 0x18, 0x4c, 0x66, 0x73, + 0xf9, 0xf8, 0x40, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x7f, + 0x7f, 0x38, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x06, 0x0f, 0x19, 0x10, + 0x06, 0x0f, 0x19, 0x10, + }, + { + 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x10, 0x19, 0x0f, 0x06, + 0x10, 0x19, 0x0f, 0x06, + }, + { + 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, + 0x00, 0xaa, 0x00, 0x55, + }, + { + 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, + 0xaa, 0x55, 0xaa, 0x55, + }, + { + 0x55, 0xff, 0xaa, 0xff, 0x55, 0xff, 0xaa, 0xff, 0x55, 0xff, 0xaa, 0xff, + 0x55, 0xff, 0xaa, 0xff, + }, + { + 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0xff, + 0xff, 0x00, 0x00, 0x00, + }, + { + 0xc0, 0xe0, 0x30, 0x1a, 0x33, 0xe1, 0xc0, 0x00, 0x7f, 0x7f, 0x02, 0x02, + 0x02, 0x7f, 0x7f, 0x00, + }, + { + 0xc0, 0xe2, 0x33, 0x19, 0x33, 0xe2, 0xc0, 0x00, 0x7f, 0x7f, 0x02, 0x02, + 0x02, 0x7f, 0x7f, 0x00, + }, + { + 0xc0, 0xe1, 0x33, 0x1a, 0x30, 0xe0, 0xc0, 0x00, 0x7f, 0x7f, 0x02, 0x02, + 0x02, 0x7f, 0x7f, 0x00, + }, + { + 0xf0, 0x18, 0xc8, 0x28, 0x28, 0x18, 0xf0, 0x00, 0x1f, 0x30, 0x27, 0x28, + 0x28, 0x30, 0x1f, 0x00, + }, + { + 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x05, 0x05, 0xfd, 0xfd, + 0x00, 0xff, 0xff, 0x00, + }, + { + 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0xff, 0xff, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0xfd, 0xfd, + 0x01, 0xff, 0xff, 0x00, + }, + { + 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x05, 0x05, 0x05, 0x05, + 0x04, 0x07, 0x07, 0x00, + }, + { + 0x00, 0xc0, 0xe0, 0x38, 0x38, 0x60, 0x40, 0x00, 0x00, 0x0f, 0x1f, 0x70, + 0x70, 0x18, 0x08, 0x00, + }, + { + 0x00, 0x38, 0x78, 0xc0, 0xc0, 0x78, 0x38, 0x00, 0x00, 0x09, 0x09, 0x7f, + 0x7f, 0x09, 0x09, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0xfe, + 0xfe, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x03, 0x02, 0x02, 0x02, + }, + { + 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, + 0x03, 0x02, 0x02, 0x02, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0xfe, + 0xfe, 0x02, 0x02, 0x02, + }, + { + 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x02, 0x02, 0x02, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, + }, + { + 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0xff, + 0xff, 0x02, 0x02, 0x02, + }, + { + 0x20, 0xb0, 0x90, 0xb0, 0xa0, 0x30, 0x10, 0x00, 0x38, 0x7c, 0x44, 0x44, + 0x3f, 0x7f, 0x40, 0x00, + }, + { + 0xc2, 0xe3, 0x31, 0x1b, 0x32, 0xe3, 0xc1, 0x00, 0x7f, 0x7f, 0x02, 0x02, + 0x02, 0x7f, 0x7f, 0x00, + }, + { + 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0x07, + 0x04, 0x05, 0x05, 0x05, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0xfd, 0xfd, 0x05, + }, + { + 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x05, 0x05, 0x05, 0x05, + 0x04, 0x05, 0x05, 0x05, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0xfd, 0xfd, + 0x01, 0xfd, 0xfd, 0x05, + }, + { + 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0xfd, 0xfd, 0x05, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, + }, + { + 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x05, 0x05, 0xfd, 0xfd, + 0x00, 0xfd, 0xfd, 0x05, + }, + { + 0x90, 0xf0, 0x60, 0x40, 0x60, 0xf0, 0x90, 0x00, 0x27, 0x3f, 0x18, 0x08, + 0x18, 0x3f, 0x27, 0x00, + }, + { + 0x20, 0xa8, 0x98, 0xb0, 0xe8, 0xc8, 0x80, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x08, 0x18, 0xf0, 0xe0, 0x00, 0x41, 0x7f, 0x7f, 0x41, + 0x60, 0x3f, 0x1f, 0x00, + }, + { + 0x08, 0xfa, 0xfb, 0x09, 0x8b, 0x1a, 0x38, 0x00, 0x40, 0x7f, 0x7f, 0x41, + 0x43, 0x60, 0x70, 0x00, + }, + { + 0x08, 0xfb, 0xfb, 0x08, 0x88, 0x1b, 0x3b, 0x00, 0x40, 0x7f, 0x7f, 0x41, + 0x43, 0x60, 0x70, 0x00, + }, + { + 0x08, 0xf9, 0xfb, 0x0a, 0x88, 0x18, 0x38, 0x00, 0x40, 0x7f, 0x7f, 0x41, + 0x43, 0x60, 0x70, 0x00, + }, + { + 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, + 0x7f, 0x40, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x08, 0xfa, 0xfb, 0x09, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, + 0x7f, 0x40, 0x00, 0x00, + }, + { + 0x00, 0x02, 0x0b, 0xf9, 0xf9, 0x0b, 0x02, 0x00, 0x00, 0x00, 0x40, 0x7f, + 0x7f, 0x40, 0x00, 0x00, + }, + { + 0x00, 0x03, 0x0b, 0xf8, 0xf8, 0x0b, 0x03, 0x00, 0x00, 0x00, 0x40, 0x7f, + 0x7f, 0x40, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, + 0x03, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, + 0xfe, 0x02, 0x02, 0x02, + }, + { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, + }, + { + 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, + 0x7c, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x09, 0xfb, 0xfa, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, + 0x7f, 0x40, 0x00, 0x00, + }, + { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, + }, + { + 0xe0, 0xf0, 0x18, 0x0a, 0x1b, 0xf1, 0xe0, 0x00, 0x1f, 0x3f, 0x60, 0x40, + 0x60, 0x3f, 0x1f, 0x00, + }, + { + 0xf0, 0xf8, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x41, + 0x43, 0x7e, 0x3c, 0x00, + }, + { + 0xe0, 0xf2, 0x1b, 0x09, 0x1b, 0xf2, 0xe0, 0x00, 0x1f, 0x3f, 0x60, 0x40, + 0x60, 0x3f, 0x1f, 0x00, + }, + { + 0xe0, 0xf1, 0x1b, 0x0a, 0x18, 0xf0, 0xe0, 0x00, 0x1f, 0x3f, 0x60, 0x40, + 0x60, 0x3f, 0x1f, 0x00, + }, + { + 0x20, 0xb0, 0x90, 0xb0, 0xa0, 0xb0, 0x10, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0xe2, 0xf3, 0x19, 0x0b, 0x1a, 0xf3, 0xe1, 0x00, 0x1f, 0x3f, 0x60, 0x40, + 0x60, 0x3f, 0x1f, 0x00, + }, + { + 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0xff, 0xff, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x20, + 0x20, 0x3f, 0x1f, 0x00, + }, + { + 0x08, 0xf8, 0xf8, 0x48, 0x40, 0xc0, 0x80, 0x00, 0x40, 0x7f, 0x7f, 0x48, + 0x08, 0x0f, 0x07, 0x00, + }, + { + 0xf8, 0xf8, 0x00, 0x02, 0x03, 0xf9, 0xf8, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0xf8, 0xfa, 0x03, 0x01, 0x03, 0xfa, 0xf8, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0xf8, 0xf9, 0x03, 0x02, 0x00, 0xf8, 0xf8, 0x00, 0x3f, 0x7f, 0x40, 0x40, + 0x40, 0x7f, 0x3f, 0x00, + }, + { + 0x80, 0x80, 0x20, 0x30, 0x18, 0x88, 0x80, 0x00, 0x1f, 0x3f, 0x20, 0x20, + 0x20, 0xff, 0xff, 0x00, + }, + { + 0x00, 0xf8, 0xf8, 0x02, 0x03, 0xf9, 0xf8, 0x00, 0x00, 0x00, 0x41, 0x7f, + 0x7f, 0x41, 0x00, 0x00, + }, + { + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x10, 0x18, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x00, + }, + { + 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x41, 0x4f, + 0x4f, 0x41, 0x41, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, + }, + { + 0x84, 0x94, 0xfc, 0x68, 0x80, 0xc0, 0x60, 0x00, 0x18, 0x4c, 0x66, 0x73, + 0xf9, 0xf8, 0x40, 0x00, + }, + { + 0xf0, 0xf8, 0x08, 0xf8, 0xf8, 0x08, 0xf8, 0xf8, 0x00, 0x01, 0x01, 0x7f, + 0x7f, 0x00, 0x7f, 0x7f, + }, + { + 0x10, 0xb8, 0xe8, 0x48, 0xc8, 0x98, 0x10, 0x00, 0x23, 0x67, 0x4c, 0x48, + 0x5c, 0x77, 0x23, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x32, + 0x32, 0x02, 0x02, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, + 0xc0, 0x80, 0x00, 0x00, + }, + { + 0x00, 0x38, 0x7c, 0x44, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x02, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x08, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, + }, + { + 0x00, 0x88, 0x8c, 0x24, 0xfc, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x88, 0xcc, 0x64, 0x3c, 0x98, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, + }, + { + 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, + 0x3f, 0x3f, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, }; void -font8x16_put_ch (uint8_t * vram, unsigned ch, unsigned x, unsigned y) +font8x16_put_ch (uint8_t *vram, unsigned ch, unsigned x, unsigned y) { unsigned shift = y & 7; unsigned page = y >> 3; @@ -532,32 +1044,28 @@ font8x16_put_ch (uint8_t * vram, unsigned ch, unsigned x, unsigned y) mask = 0xff >> shift; if (shift) - { - oled_blit_strip (vram, x, x + 8, mask, -shift, font8x16[ch]); - } + oled_blit_strip (vram, x, x + 8, mask, -shift, font8x16[ch]); shift = y & 7; oled_blit_strip (vram, x, x + 8, ~mask & (0xff << shift), shift, &font8x16[ch][8]); - if (shift) - { - x += SSD1306_WIDTH; - shift = 8 - shift; - oled_blit_strip (vram, x, x + 8, 0xff >> shift, -shift, - &font8x16[ch][8]); - } + if (shift) { + x += SSD1306_WIDTH; + shift = 8 - shift; + oled_blit_strip (vram, x, x + 8, 0xff >> shift, -shift, + &font8x16[ch][8]); + } } void -font8x16_put_str (uint8_t * vram, char *str, unsigned x, unsigned y) +font8x16_put_str (uint8_t *vram, char *str, unsigned x, unsigned y) { - while (*str) - { - font8x16_put_ch (vram, *(str++), x, y); - x += 8; - } + while (*str) { + font8x16_put_ch (vram, * (str++), x, y); + x += 8; + } } diff --git a/app/font8x8.c b/app/font8x8.c index 4d49aa7..629a565 100644 --- a/app/font8x8.c +++ b/app/font8x8.c @@ -260,7 +260,7 @@ static uint8_t font8x8[][8] = { }; void -font8x8_put_ch (uint8_t * vram, unsigned ch, unsigned x, unsigned y) +font8x8_put_ch (uint8_t *vram, unsigned ch, unsigned x, unsigned y) { unsigned shift = y & 7; unsigned page = y >> 3; @@ -269,22 +269,20 @@ font8x8_put_ch (uint8_t * vram, unsigned ch, unsigned x, unsigned y) oled_blit_strip (vram, x, x + 8, 0xff << shift, shift, font8x8[ch]); - if (shift) - { - x += SSD1306_WIDTH; - shift = 8 - shift; - oled_blit_strip (vram, x, x + 8, 0xff >> shift, -shift, font8x8[ch]); - } + if (shift) { + x += SSD1306_WIDTH; + shift = 8 - shift; + oled_blit_strip (vram, x, x + 8, 0xff >> shift, -shift, font8x8[ch]); + } } void -font8x8_put_str (uint8_t * vram, char *str, unsigned x, unsigned y) +font8x8_put_str (uint8_t *vram, char *str, unsigned x, unsigned y) { - while (*str) - { - font8x8_put_ch (vram, *(str++), x, y); - x += 8; - } + while (*str) { + font8x8_put_ch (vram, * (str++), x, y); + x += 8; + } } diff --git a/app/gauge.c b/app/gauge.c new file mode 100644 index 0000000..c71d8d9 --- /dev/null +++ b/app/gauge.c @@ -0,0 +1,145 @@ +#include "project.h" + +#define P1_N GPIO12 +#define P1_N_PORT GPIOB +#define P1_P GPIO13 +#define P1_P_PORT GPIOB +#define P2_N GPIO14 +#define P2_N_PORT GPIOB +#define P2_P GPIO15 +#define P2_P_PORT GPIOB + + +unsigned gauge_target; +static unsigned gauge_current; + +#define GUAGE_N_STATE 6 +static unsigned gauge_state; + + +static inline unsigned +ccw (unsigned v) +{ + v += GUAGE_N_STATE - 1; + + if (v >= GUAGE_N_STATE) + v -= GUAGE_N_STATE; + + return v; +} + + +static inline unsigned +cw (unsigned v) +{ + v += 1; + + if (v >= GUAGE_N_STATE) + v -= GUAGE_N_STATE; + + return v; +} + +static inline void +p1 (int i) +{ + if (i < 0) { + SET (P1_N); + CLEAR (P1_P); + } else if (i > 0) { + CLEAR (P1_N); + SET (P1_P); + } else { + CLEAR (P1_N); + CLEAR (P1_P); + } +} + +static inline void +p2 (int i) +{ + if (i < 0) { + SET (P2_N); + CLEAR (P2_P); + } else if (i > 0) { + CLEAR (P2_N); + SET (P2_P); + } else { + CLEAR (P2_N); + CLEAR (P2_P); + } +} + + + +void +gauge_ticker (void) +{ + + if (gauge_current < gauge_target) { + gauge_state = cw (gauge_state); + gauge_current++; + } else if (gauge_current > gauge_target) { + gauge_state = ccw (gauge_state); + gauge_current--; + } + + switch (gauge_state) { + case 0: + p1 (1); + p2 (1); + break; + + case 1: + p1 (1); + p2 (0); + break; + + case 2: + p1 (0); + p2 (-1); + break; + + case 3: + p1 (-1); + p2 (-1); + break; + + case 4: + p1 (-1); + p2 (0); + break; + + case 5: + p1 (0); + p2 (1); + } + +} + +void +gauge_test (void) +{ + char buf[8]; + uint32_t now = dwt_read_cycle_counter(); /*This wraps every 59.9 seconds or so */ + + now &= 0x3fffffff; /* now wraps every 15s */ + now = now / (0x3fffffff / 810); + + gauge_target = now; + + sprintf (buf, "%3d", gauge_target); + font8x8_put_str (vram_1, buf, 90, 24); +} + + + + +void +gauge_init (void) +{ + MAP_OUTPUT_PP (P1_N); + MAP_OUTPUT_PP (P1_P); + MAP_OUTPUT_PP (P2_N); + MAP_OUTPUT_PP (P2_P); +} diff --git a/app/i2c.c b/app/i2c.c index edead09..8c5630e 100644 --- a/app/i2c.c +++ b/app/i2c.c @@ -5,11 +5,10 @@ static int mutex = 0; int i2c_lock (void) { - if (__sync_add_and_fetch (&mutex, 1) != 1) - { - __sync_sub_and_fetch (&mutex, 1); - return -1; - } + if (__sync_add_and_fetch (&mutex, 1) != 1) { + __sync_sub_and_fetch (&mutex, 1); + return -1; + } return 0; } diff --git a/app/i2c_hw.c b/app/i2c_hw.c index 35bde08..59d2451 100644 --- a/app/i2c_hw.c +++ b/app/i2c_hw.c @@ -1,20 +1,20 @@ #include "project.h" -#define SCL1 GPIO6 -#define SDA1 GPIO7 -#define SCL1_PORT GPIOB -#define SDA1_PORT GPIOB +#define SCL1 GPIO6 +#define SDA1 GPIO7 +#define SCL1_PORT GPIOB +#define SDA1_PORT GPIOB -#define SCL2 GPIO10 -#define SDA2 GPIO11 -#define SCL2_PORT GPIOB -#define SDA2_PORT GPIOB +#define SCL2 GPIO10 +#define SDA2 GPIO11 +#define SCL2_PORT GPIOB +#define SDA2_PORT GPIOB void i2c_clear_start (uint32_t i2c) { - I2C_CR1 (i2c) &= ~(uint32_t) I2C_CR1_START; + I2C_CR1 (i2c) &= ~ (uint32_t) I2C_CR1_START; } @@ -23,8 +23,9 @@ i2cp_start (uint32_t i2c) { uint32_t timeout = 1000; i2c_send_start (i2c); - while (!((I2C_SR1 (i2c) & I2C_SR1_SB) - & (I2C_SR2 (i2c) & (I2C_SR2_MSL | I2C_SR2_BUSY))) && (timeout--)); + + while (! ((I2C_SR1 (i2c) & I2C_SR1_SB) + & (I2C_SR2 (i2c) & (I2C_SR2_MSL | I2C_SR2_BUSY))) && (timeout--)); return timeout ? 0 : -1; } @@ -60,12 +61,13 @@ i2cp_send (uint32_t i2c, uint8_t v) while (! ((reg = - I2C_SR1 (i2c)) & (I2C_SR1_BTF | I2C_SR1_BERR | I2C_SR1_ARLO | - I2C_SR1_AF | I2C_SR1_PECERR | I2C_SR1_TIMEOUT | - I2C_SR1_SMBALERT)) && (timeout--)); + I2C_SR1 (i2c)) & (I2C_SR1_BTF | I2C_SR1_BERR | I2C_SR1_ARLO | + I2C_SR1_AF | I2C_SR1_PECERR | I2C_SR1_TIMEOUT | + I2C_SR1_SMBALERT)) && (timeout--)); + I2C_SR1 (i2c) = - reg & ~(I2C_SR1_BERR | I2C_SR1_ARLO | I2C_SR1_AF | I2C_SR1_PECERR | - I2C_SR1_TIMEOUT | I2C_SR1_SMBALERT); + reg & ~ (I2C_SR1_BERR | I2C_SR1_ARLO | I2C_SR1_AF | I2C_SR1_PECERR | + I2C_SR1_TIMEOUT | I2C_SR1_SMBALERT); if (!timeout) return 1; @@ -79,12 +81,13 @@ int i2cp_start_transaction (uint32_t i2c, uint8_t a, int wnr) { uint32_t reg; - uint32_t __attribute__((unused)) dummy; + uint32_t __attribute__ ((unused)) dummy; uint32_t timeout = 1000; i2c_send_start (i2c); - while (!((I2C_SR1 (i2c) & I2C_SR1_SB) - & (I2C_SR2 (i2c) & (I2C_SR2_MSL | I2C_SR2_BUSY))) && (timeout--)); + + while (! ((I2C_SR1 (i2c) & I2C_SR1_SB) + & (I2C_SR2 (i2c) & (I2C_SR2_MSL | I2C_SR2_BUSY))) && (timeout--)); if (!timeout) return -1; @@ -93,24 +96,25 @@ i2cp_start_transaction (uint32_t i2c, uint8_t a, int wnr) while (! ((reg = - I2C_SR1 (i2c)) & (I2C_SR1_ADDR | I2C_SR1_BERR | I2C_SR1_ARLO | - I2C_SR1_AF | I2C_SR1_PECERR | I2C_SR1_TIMEOUT | - I2C_SR1_SMBALERT)) && (timeout--)); + I2C_SR1 (i2c)) & (I2C_SR1_ADDR | I2C_SR1_BERR | I2C_SR1_ARLO | + I2C_SR1_AF | I2C_SR1_PECERR | I2C_SR1_TIMEOUT | + I2C_SR1_SMBALERT)) && (timeout--)); + if (!timeout) return -1; dummy = I2C_SR2 (i2c); I2C_SR1 (i2c) = - reg & ~(I2C_SR1_BERR | I2C_SR1_ARLO | I2C_SR1_AF | I2C_SR1_PECERR | - I2C_SR1_TIMEOUT | I2C_SR1_SMBALERT); + reg & ~ (I2C_SR1_BERR | I2C_SR1_ARLO | I2C_SR1_AF | I2C_SR1_PECERR | + I2C_SR1_TIMEOUT | I2C_SR1_SMBALERT); return (reg == 0x82) ? 0 : -1; } - /*This is stupid, it bit bangs a dummy transaction to get the host i2c controller back in the game */ +/*This is stupid, it bit bangs a dummy transaction to get the host i2c controller back in the game */ void i2cp1_reset_sm (void) { @@ -126,14 +130,14 @@ i2cp1_reset_sm (void) delay_us (10); CLEAR (SCL1); - for (i = 0; i < 9; ++i) - { - delay_us (10); - SET (SCL1); - delay_us (10); - CLEAR (SCL1); - delay_us (10); - } + for (i = 0; i < 9; ++i) { + delay_us (10); + SET (SCL1); + delay_us (10); + CLEAR (SCL1); + delay_us (10); + } + SET (SCL1); delay_us (10); SET (SDA1); @@ -159,14 +163,14 @@ i2cp2_reset_sm (void) delay_us (10); CLEAR (SCL2); - for (i = 0; i < 9; ++i) - { - delay_us (10); - SET (SCL2); - delay_us (10); - CLEAR (SCL2); - delay_us (10); - } + for (i = 0; i < 9; ++i) { + delay_us (10); + SET (SCL2); + delay_us (10); + CLEAR (SCL2); + delay_us (10); + } + SET (SCL2); delay_us (10); SET (SDA2); @@ -180,7 +184,7 @@ i2cp2_reset_sm (void) void -i2cp1_start_dma (uint8_t * buf, int len) +i2cp1_start_dma (uint8_t *buf, int len) { dma_channel_reset (DMA1, DMA_CHANNEL6); dma_set_peripheral_address (DMA1, DMA_CHANNEL6, (uint32_t) & I2C1_DR); @@ -200,7 +204,7 @@ i2cp1_start_dma (uint8_t * buf, int len) void -i2cp2_start_dma (uint8_t * buf, int len) +i2cp2_start_dma (uint8_t *buf, int len) { dma_channel_reset (DMA1, DMA_CHANNEL4); dma_set_peripheral_address (DMA1, DMA_CHANNEL4, (uint32_t) & I2C2_DR); @@ -222,7 +226,7 @@ i2cp2_start_dma (uint8_t * buf, int len) int i2cp1_dma_in_progress (void) { - return !(DMA1_ISR & (DMA_ISR_TCIF6 | DMA_ISR_TEIF6)); + return ! (DMA1_ISR & (DMA_ISR_TCIF6 | DMA_ISR_TEIF6)); } void @@ -253,7 +257,8 @@ i2cp2_stop_dma (void) void i2cp_reset (uint32_t i2c) { - while (i2c_lock ()); + while (i2c_lock()); + i2cp_start (i2c); i2cp_abort_start (i2c); i2cp_stop (i2c); @@ -263,7 +268,7 @@ i2cp_reset (uint32_t i2c) i2cp_abort_start (i2c); i2cp_stop (i2c); i2cp_abort_stop (i2c); - i2c_unlock (); + i2c_unlock(); } @@ -276,22 +281,27 @@ i2cp_scan (uint32_t i2c) i2cp_reset (i2c); printf ("Probing bus\n"); - for (i = 0; i < 128; ++i) - { - printf ("%d\n", i); - while (i2c_lock ()); - i2cp_start (i2c); - i2cp_abort_start (i2c); - i2cp_stop (i2c); - i2cp_abort_stop (i2c); - delay_ms (10); - r = i2cp_start_transaction (i2c, i, I2C_WRITE); - i2cp_stop (i2c); - i2c_unlock (); - if (!r) - printf ("Found device at address 0x%x\n", i); - usart1_drain (); - } + + for (i = 0; i < 128; ++i) { + printf ("%d\n", i); + + while (i2c_lock()); + + i2cp_start (i2c); + i2cp_abort_start (i2c); + i2cp_stop (i2c); + i2cp_abort_stop (i2c); + delay_ms (10); + r = i2cp_start_transaction (i2c, i, I2C_WRITE); + i2cp_stop (i2c); + i2c_unlock(); + + if (!r) + printf ("Found device at address 0x%x\n", i); + + usart1_drain(); + } + printf ("Done\n"); i2cp_reset (i2c); @@ -312,9 +322,9 @@ i2cp_bringup (uint32_t i2c) if (i2c == I2C1) - i2cp1_reset_sm (); + i2cp1_reset_sm(); else - i2cp2_reset_sm (); + i2cp2_reset_sm(); i2c_set_clock_frequency (i2c, I2C_CR2_FREQ_36MHZ); @@ -335,10 +345,10 @@ i2cp_init (void) rcc_periph_clock_enable (RCC_I2C2); rcc_periph_clock_enable (RCC_DMA1); - while (i2c_lock ()); + while (i2c_lock()); i2cp_bringup (I2C1); i2cp_bringup (I2C2); - i2c_unlock (); + i2c_unlock(); } diff --git a/app/led.c b/app/led.c index 9dcc543..4f5c084 100644 --- a/app/led.c +++ b/app/led.c @@ -32,11 +32,11 @@ led_set (void) void led_tick (void) { - if (led) - { - led--; - if (!led) - led_clear (); - } + if (led) { + led--; + + if (!led) + led_clear(); + } } diff --git a/app/main.c b/app/main.c index f358f01..d834802 100644 --- a/app/main.c +++ b/app/main.c @@ -1,6 +1,6 @@ #include "project.h" -#define WIGGLE GPIO4 +#define WIGGLE GPIO4 #define WIGGLE_PORT GPIOB int @@ -11,7 +11,7 @@ main (void) //nvic_set_priority_grouping(NVIC_PriorityGroup_4); /*set up pll */ - rcc_clock_setup_in_hse_8mhz_out_72mhz (); + rcc_clock_setup_in_hse_8mhz_out_72mhz(); /*turn on clocks which aren't done elsewhere */ rcc_periph_clock_enable (RCC_GPIOA); @@ -29,25 +29,28 @@ main (void) /* Claw some pins pack */ gpio_primary_remap (AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_ON, 0); - dwt_enable_cycle_counter (); + dwt_enable_cycle_counter(); - ticker_init (); + ticker_init(); - led_init (); - usart_init (); - i2cp_init (); + led_init(); + usart_init(); + i2cp_init(); printf ("Hello world\n"); - led_set (); - tacho_init (); + led_set(); + tacho_init(); - delay_ms(100); + delay_ms (100); + + + oled1_init(); + oled2_init(); + + gauge_init(); - - oled1_init (); - oled2_init (); font8x8_put_str (vram_1, "ABC fish soup!", 0, 0); @@ -55,26 +58,28 @@ main (void) MAP_OUTPUT_PP (WIGGLE); - for (;;) - { - char buf[20]; + for (;;) { + char buf[20]; + + sprintf (buf, "%6u rpm", (unsigned) raw_tacho); + font8x16_put_str (vram_1, buf, 30, 8); + + sprintf (buf, "%8d", cnt++); + font8x8_put_str (vram_1, buf, 0, 24); - sprintf (buf, "%6u rpm", (unsigned) raw_tacho); - font8x16_put_str (vram_1, buf, 30, 8); + sprintf (buf, "%6d", cnt >> 4); + font21x32_put_str (vram_2, buf, 0); - sprintf (buf, "%8d", cnt++); - font8x8_put_str (vram_1, buf, 0, 24); - sprintf (buf, "%6d", cnt >> 4); - font21x32_put_str (vram_2, buf, 0); + if (cnt & 1) + SET (WIGGLE); + else + CLEAR (WIGGLE); - if (cnt & 1) - SET (WIGGLE); - else - CLEAR (WIGGLE); + gauge_test(); - } + } return 0; } diff --git a/app/oled.c b/app/oled.c index e0c0bee..e5edfed 100644 --- a/app/oled.c +++ b/app/oled.c @@ -2,36 +2,34 @@ int -ssd1306_cmds (uint32_t i2c, uint8_t * buf, size_t len, int delay) +ssd1306_cmds (uint32_t i2c, uint8_t *buf, size_t len, int delay) { int ret = -1; - while (i2c_lock ()); + while (i2c_lock()); - do - { + do { - if (i2cp_start_transaction (i2c, SSD1306_I2C_ADDRESS, I2C_WRITE)) - break; + if (i2cp_start_transaction (i2c, SSD1306_I2C_ADDRESS, I2C_WRITE)) + break; + + if (i2cp_send (i2c, SSD1306_COMMAND)) + break; - if (i2cp_send (i2c, SSD1306_COMMAND)) + while (len--) + if (i2cp_send (i2c, * (buf++))) break; - while (len--) - if (i2cp_send (i2c, *(buf++))) - break; + i2cp_stop (i2c); - i2cp_stop (i2c); + if (delay) + delay_us (delay); - if (delay) - delay_us (delay); + ret = 0; + } while (0); - ret = 0; - } - while (0); - - i2c_unlock (); + i2c_unlock(); return ret; @@ -46,7 +44,7 @@ ssd1306_cmd (uint32_t i2c, uint8_t cmd, int delay) void -oled_generate_stream (uint8_t * vram) +oled_generate_stream (uint8_t *vram) { memset (vram, 0, DMA_BUF_SZ); vram[0] = SSD1306_DATA_CONTINUE; @@ -56,7 +54,7 @@ oled_generate_stream (uint8_t * vram) void -oled_cls (uint8_t * vram) +oled_cls (uint8_t *vram) { memset (vram + 1, 0, SSD1306_VRAM_SIZE); } @@ -91,16 +89,16 @@ oled_squirt (void) ssd1306_cmds (cmds, sizeof (cmds), 0); - while (i2c_lock ()); + while (i2c_lock()); i2cp_start_transaction (SSD1306_I2C_ADDRESS, I2C_WRITE); for (i = 0; i < DMA_BUF_SZ; ++i) i2cp_send (update_buf[i]); - i2cp_stop (); + i2cp_stop(); - i2c_unlock (); + i2c_unlock(); } #endif @@ -133,57 +131,49 @@ oled_reset (uint32_t i2c) void -oled_const_strip (uint8_t * vram, int x, int xe, uint8_t and, uint8_t or) +oled_const_strip (uint8_t *vram, int x, int xe, uint8_t and, uint8_t or) { uint8_t r; - for (x++; x <= xe; ++x) - { - r = vram[x] & and; - vram[x] = r | or; - } + for (x++; x <= xe; ++x) { + r = vram[x] & and; + vram[x] = r | or; + } } void -oled_blit_strip (uint8_t * vram, int x, int xe, uint8_t mask, int shift, - uint8_t * src) +oled_blit_strip (uint8_t *vram, int x, int xe, uint8_t mask, int shift, + uint8_t *src) { uint8_t r, s; - if (shift > 0) - { - for (x++; x <= xe; ++x) - { - s = *(src++); - s <<= shift; - s &= mask; - r = vram[x] & ~mask; - vram[x] = r | s; + if (shift > 0) { + for (x++; x <= xe; ++x) { + s = * (src++); + s <<= shift; + s &= mask; + r = vram[x] & ~mask; + vram[x] = r | s; - } } - else if (shift < 0) - { - shift = -shift; - for (x++; x <= xe; ++x) - { - s = *(src++); - s >>= shift; - s &= mask; - r = vram[x] & ~mask; - vram[x] = r | s; - } + } else if (shift < 0) { + shift = -shift; + + for (x++; x <= xe; ++x) { + s = * (src++); + s >>= shift; + s &= mask; + r = vram[x] & ~mask; + vram[x] = r | s; } - else - { - for (x++; x <= xe; ++x) - { - s = *(src++); - s &= mask; - r = vram[x] & ~mask; - vram[x] = r | s; - } + } else { + for (x++; x <= xe; ++x) { + s = * (src++); + s &= mask; + r = vram[x] & ~mask; + vram[x] = r | s; } + } } diff --git a/app/oled1.c b/app/oled1.c index 48c6167..cb1767d 100644 --- a/app/oled1.c +++ b/app/oled1.c @@ -24,17 +24,15 @@ start_dma (void) memcpy (dma_buf, vram_1, DMA_BUF_SZ); - if (ssd1306_cmds (I2C1, cmds, sizeof (cmds), 0)) - { - oled_sad++; - return; - } - - if (i2cp_start_transaction (I2C1, SSD1306_I2C_ADDRESS, I2C_WRITE)) - { - oled_sad++; - return; - } + if (ssd1306_cmds (I2C1, cmds, sizeof (cmds), 0)) { + oled_sad++; + return; + } + + if (i2cp_start_transaction (I2C1, SSD1306_I2C_ADDRESS, I2C_WRITE)) { + oled_sad++; + return; + } refresh_wdt = 0; dma_in_progress = 1; @@ -47,16 +45,15 @@ start_dma (void) void dma1_channel6_isr (void) { - if (dma_in_progress) - { - i2cp1_stop_dma (); + if (dma_in_progress) { + i2cp1_stop_dma(); - i2cp_stop (I2C1); - dma_in_progress = 0; - } + i2cp_stop (I2C1); + dma_in_progress = 0; + } if (refresh_enabled) - start_dma (); + start_dma(); } void @@ -72,19 +69,18 @@ oled1_ticker (void) refresh_wdt = 0; -/*No refresh for 1s, restart everything */ + /*No refresh for 1s, restart everything */ - i2cp1_stop_dma (); + i2cp1_stop_dma(); i2cp_stop (I2C1); dma_in_progress = 0; - if (oled_sad) - { - oled_sad = 0; - i2cp1_reset_sm (); - } + if (oled_sad) { + oled_sad = 0; + i2cp1_reset_sm(); + } - start_dma (); + start_dma(); } @@ -92,7 +88,7 @@ void oled1_enable_refresh (void) { refresh_enabled = 1; - start_dma (); + start_dma(); } @@ -100,6 +96,7 @@ void oled1_disable_refresh (void) { refresh_enabled = 0; + while (dma_in_progress); } @@ -115,13 +112,13 @@ oled1_init (void) oled_generate_stream (vram_1); nvic_enable_irq (NVIC_DMA1_CHANNEL6_IRQ); - oled1_enable_refresh (); + oled1_enable_refresh(); } void oled1_shutdown (void) { - oled1_disable_refresh (); + oled1_disable_refresh(); oled_off (I2C1); } diff --git a/app/oled2.c b/app/oled2.c index 331e5b7..93b9d0d 100644 --- a/app/oled2.c +++ b/app/oled2.c @@ -24,17 +24,15 @@ start_dma (void) memcpy (dma_buf, vram_2, DMA_BUF_SZ); - if (ssd1306_cmds (I2C2, cmds, sizeof (cmds), 0)) - { - oled_sad++; - return; - } - - if (i2cp_start_transaction (I2C2, SSD1306_I2C_ADDRESS, I2C_WRITE)) - { - oled_sad++; - return; - } + if (ssd1306_cmds (I2C2, cmds, sizeof (cmds), 0)) { + oled_sad++; + return; + } + + if (i2cp_start_transaction (I2C2, SSD1306_I2C_ADDRESS, I2C_WRITE)) { + oled_sad++; + return; + } refresh_wdt = 0; dma_in_progress = 1; @@ -47,16 +45,15 @@ start_dma (void) void dma1_channel4_isr (void) { - if (dma_in_progress) - { - i2cp2_stop_dma (); + if (dma_in_progress) { + i2cp2_stop_dma(); - i2cp_stop (I2C2); - dma_in_progress = 0; - } + i2cp_stop (I2C2); + dma_in_progress = 0; + } if (refresh_enabled) - start_dma (); + start_dma(); } void @@ -72,19 +69,18 @@ oled2_ticker (void) refresh_wdt = 0; -/*No refresh for 1s, restart everything */ + /*No refresh for 1s, restart everything */ - i2cp2_stop_dma (); + i2cp2_stop_dma(); i2cp_stop (I2C2); dma_in_progress = 0; - if (oled_sad) - { - oled_sad = 0; - i2cp2_reset_sm (); - } + if (oled_sad) { + oled_sad = 0; + i2cp2_reset_sm(); + } - start_dma (); + start_dma(); } @@ -92,7 +88,7 @@ void oled2_enable_refresh (void) { refresh_enabled = 1; - start_dma (); + start_dma(); } @@ -100,6 +96,7 @@ void oled2_disable_refresh (void) { refresh_enabled = 0; + while (dma_in_progress); } @@ -115,13 +112,13 @@ oled2_init (void) oled_generate_stream (vram_2); nvic_enable_irq (NVIC_DMA1_CHANNEL4_IRQ); - oled2_enable_refresh (); + oled2_enable_refresh(); } void oled2_shutdown (void) { - oled2_disable_refresh (); + oled2_disable_refresh(); oled_off (I2C2); } diff --git a/app/prototypes.h b/app/prototypes.h index 60ba26c..d7c2a97 100644 --- a/app/prototypes.h +++ b/app/prototypes.h @@ -84,3 +84,8 @@ extern void oled2_shutdown(void); /* font21x32.c */ extern void font21x32_put_ch(uint8_t *vram, unsigned ch, unsigned x); extern void font21x32_put_str(uint8_t *vram, char *str, unsigned x); +/* gauge.c */ +extern unsigned gauge_target; +extern void gauge_ticker(void); +extern void gauge_test(void); +extern void gauge_init(void); diff --git a/app/ring.c b/app/ring.c index c4f3458..c1d1803 100644 --- a/app/ring.c +++ b/app/ring.c @@ -2,16 +2,18 @@ static inline size_t -ring_next (ring_t * r, size_t p) +ring_next (ring_t *r, size_t p) { p++; + if (p >= r->size) p -= r->size; + return p; } void -ring_init (ring_t * r, uint8_t * buf, size_t len) +ring_init (ring_t *r, uint8_t *buf, size_t len) { r->data = buf; r->size = len; @@ -20,7 +22,7 @@ ring_init (ring_t * r, uint8_t * buf, size_t len) } int -ring_write_byte (ring_t * r, uint8_t c) +ring_write_byte (ring_t *r, uint8_t c) { size_t n = ring_next (r, r->write); @@ -36,7 +38,7 @@ ring_write_byte (ring_t * r, uint8_t c) int -ring_read_byte (ring_t * r, uint8_t * c) +ring_read_byte (ring_t *r, uint8_t *c) { size_t n = ring_next (r, r->read); @@ -50,19 +52,18 @@ ring_read_byte (ring_t * r, uint8_t * c) } int -ring_write (ring_t * r, uint8_t * buf, size_t len) +ring_write (ring_t *r, uint8_t *buf, size_t len) { - while (len--) - { - if (ring_write_byte (r, *(buf++))) - return -1; - } + while (len--) { + if (ring_write_byte (r, * (buf++))) + return -1; + } return 0; } int -ring_empty (ring_t * r) +ring_empty (ring_t *r) { return (r->read == r->write) ? 1 : 0; } diff --git a/app/ring.h b/app/ring.h index ba8887b..1eae65b 100644 --- a/app/ring.h +++ b/app/ring.h @@ -1,5 +1,4 @@ -typedef struct ring -{ +typedef struct ring { uint8_t *data; size_t size; size_t write; diff --git a/app/tacho.c b/app/tacho.c index 87f398f..bf0222c 100644 --- a/app/tacho.c +++ b/app/tacho.c @@ -1,6 +1,6 @@ #include "project.h" -#define SPURIOUS MS(10) /*Anything faster than 6000rpm is a false trigger */ +#define SPURIOUS MS(10) /*Anything faster than 6000rpm is a false trigger */ @@ -20,12 +20,12 @@ TACHO_ISR (void) uint32_t now, diff; static uint32_t last_edge; - if (!(EXTI_PR & TACHO)) + if (! (EXTI_PR & TACHO)) return; EXTI_PR = TACHO; - now = dwt_read_cycle_counter (); + now = dwt_read_cycle_counter(); diff = cycle_diff (last_edge, now); @@ -35,12 +35,12 @@ TACHO_ISR (void) last_edge = now; -/* Want RPM, diff is in units of 1/72 us */ + /* Want RPM, diff is in units of 1/72 us */ if (!diff) return; -/* uint32_t is un-able to express 60s in clock ticks, so divide everything by 2 */ + /* uint32_t is un-able to express 60s in clock ticks, so divide everything by 2 */ diff >>= 1; diff --git a/app/ticker.c b/app/ticker.c index 15d5e3f..6950c6b 100644 --- a/app/ticker.c +++ b/app/ticker.c @@ -22,9 +22,9 @@ sys_tick_handler (void) delay_ms_count--; - led_tick (); - oled1_ticker (); - oled2_ticker (); + led_tick(); + oled1_ticker(); + oled2_ticker(); ticks++; } @@ -34,6 +34,7 @@ void delay_ms (uint32_t d) { delay_ms_count = d; + while (delay_ms_count); } @@ -49,25 +50,23 @@ ticker_init (void) /* 72MHz / 8 = > 9Mhz */ systick_set_reload (9000); /* 9MHz / 9000 => 1kHz */ - systick_interrupt_enable (); - systick_counter_enable (); + systick_interrupt_enable(); + systick_counter_enable(); /*Calibrate the delay loop */ - do - { - scale--; - v = ticks; + do { + scale--; + v = ticks; - while (v == ticks); + while (v == ticks); - delay_us (1000); - w = ticks; - v++; - w -= v; - } - while (w); + delay_us (1000); + w = ticks; + v++; + w -= v; + } while (w); } diff --git a/app/usart.c b/app/usart.c index 163fe4f..8d98287 100644 --- a/app/usart.c +++ b/app/usart.c @@ -22,31 +22,25 @@ usart1_isr (void) /* Check if we were called because of RXNE. */ if (((USART_CR1 (USART1) & USART_CR1_RXNEIE) != 0) && - ((USART_SR (USART1) & USART_SR_RXNE) != 0)) - { + ((USART_SR (USART1) & USART_SR_RXNE) != 0)) { - /* Retrieve the data from the peripheral. */ - data = usart_recv (USART1); + /* Retrieve the data from the peripheral. */ + data = usart_recv (USART1); - ring_write_byte (&rx1_ring, data); - } + ring_write_byte (&rx1_ring, data); + } /* Check if we were called because of TXE. */ if (((USART_CR1 (USART1) & USART_CR1_TXEIE) != 0) && - ((USART_SR (USART1) & USART_SR_TXE) != 0)) - { - - if (ring_read_byte (&tx1_ring, &data)) - { - /*No more data, Disable the TXE interrupt, it's no longer needed. */ - USART_CR1 (USART1) &= ~USART_CR1_TXEIE; - } - else - { - usart_send (USART1, data); - } - } + ((USART_SR (USART1) & USART_SR_TXE) != 0)) { + + if (ring_read_byte (&tx1_ring, &data)) { + /*No more data, Disable the TXE interrupt, it's no longer needed. */ + USART_CR1 (USART1) &= ~USART_CR1_TXEIE; + } else + usart_send (USART1, data); + } } @@ -56,23 +50,22 @@ _write (int file, char *ptr, int len) { int ret; - if (file == 1) - { - ret = len; + if (file == 1) { + ret = len; - usart1_drain (); + usart1_drain(); - while (len--) - { - if (*ptr == '\n') - ring_write_byte (&tx1_ring, '\r'); - ring_write_byte (&tx1_ring, *(ptr++)); - } + while (len--) { + if (*ptr == '\n') + ring_write_byte (&tx1_ring, '\r'); - USART_CR1 (USART1) |= USART_CR1_TXEIE; - return ret; + ring_write_byte (&tx1_ring, * (ptr++)); } + USART_CR1 (USART1) |= USART_CR1_TXEIE; + return ret; + } + errno = EIO; return -1; } -- cgit v1.2.3