From 5b106896a161577b5c9a57e1c7e07d51571876d8 Mon Sep 17 00:00:00 2001 From: Mike Trudeau Date: Fri, 13 Feb 2026 20:30:52 +0000 Subject: [PATCH] migrate --- .gitignore | 2 + LICENSE | 21 + README.md | 75 + build/.gitignore | 2 + build/Dockerfile.dapper | 9 + build/Makefile | 25 + build/scripts/entry.sh | 13 + build/scripts/help.sh | 2 + build/scripts/sdcc/n76e003-ebake1.ihx | 13 + build/scripts/sdcc/n76e003-test1.ihx | 13 + build/scripts/sdcc/stm8s-ebake1.ihx | 9 + build/scripts/sdcc/stm8s-test1.ihx | 9 + fw/.gitignore | 20 + fw/n76e003/common/Makefile | 42 + fw/n76e003/common/inc/Common.h | 38 + fw/n76e003/common/inc/Delay.h | 8 + fw/n76e003/common/inc/Function_define.h | 543 ++ fw/n76e003/common/inc/N76E003.h | 306 + fw/n76e003/common/inc/SFR_Macro.h | 1178 ++++ fw/n76e003/common/inc/font.h | 2832 +++++++++ fw/n76e003/common/inc/lcd.h | 62 + fw/n76e003/common/inc/max6675.h | 32 + fw/n76e003/common/inc/spi.h | 25 + fw/n76e003/common/src/Common.c | 147 + fw/n76e003/common/src/Delay.c | 116 + fw/n76e003/common/src/lcd.c | 167 + fw/n76e003/common/src/max6675.c | 26 + fw/n76e003/common/src/spi.c | 34 + fw/n76e003/ebake1/Makefile | 51 + fw/n76e003/ebake1/defaults.h | 72 + fw/n76e003/ebake1/main.c | 517 ++ fw/n76e003/ebake1/pid.c | 47 + fw/n76e003/ebake1/pid.h | 26 + fw/n76e003/ebake1/strings.h | 27 + fw/n76e003/test1/Makefile | 45 + fw/n76e003/test1/defaults.h | 18 + fw/n76e003/test1/main.c | 317 + fw/stm8s/common/Makefile | 40 + fw/stm8s/common/extra.def | 216 + fw/stm8s/common/inc/beep.h | 16 + fw/stm8s/common/inc/clock.h | 21 + fw/stm8s/common/inc/delay.h | 23 + fw/stm8s/common/inc/eeprom.h | 14 + fw/stm8s/common/inc/font.h | 2832 +++++++++ fw/stm8s/common/inc/format.h | 10 + fw/stm8s/common/inc/lcd12864.h | 69 + fw/stm8s/common/inc/max31855k.h | 26 + fw/stm8s/common/inc/max6675.h | 27 + fw/stm8s/common/inc/oled.h | 108 + fw/stm8s/common/inc/spi.h | 21 + fw/stm8s/common/inc/stm8s.h | 425 ++ fw/stm8s/common/inc/uart.h | 28 + fw/stm8s/common/inc/uart_stdin.h | 6 + fw/stm8s/common/inc/uart_stdout.h | 8 + fw/stm8s/common/src/beep_freq.c | 6 + fw/stm8s/common/src/beep_init.c | 7 + fw/stm8s/common/src/beep_off.c | 6 + fw/stm8s/common/src/beep_on.c | 6 + fw/stm8s/common/src/clock_init.c | 3 + fw/stm8s/common/src/delay_ms.c | 3 + fw/stm8s/common/src/delay_us.c | 3 + fw/stm8s/common/src/eeprom_lock.c | 5 + fw/stm8s/common/src/eeprom_read.c | 6 + fw/stm8s/common/src/eeprom_unlock.c | 7 + fw/stm8s/common/src/eeprom_wait_busy.c | 5 + fw/stm8s/common/src/eeprom_write.c | 10 + fw/stm8s/common/src/format_sprintf.c | 12 + fw/stm8s/common/src/format_vsprintf.c | 114 + fw/stm8s/common/src/lcd12864_clear.c | 21 + fw/stm8s/common/src/lcd12864_clear_display.c | 10 + fw/stm8s/common/src/lcd12864_clear_segment.c | 13 + fw/stm8s/common/src/lcd12864_command1.c | 11 + fw/stm8s/common/src/lcd12864_command_list.c | 13 + .../common/src/lcd12864_display_segment.c | 88 + fw/stm8s/common/src/lcd12864_free_segment.c | 19 + fw/stm8s/common/src/lcd12864_init.c | 63 + fw/stm8s/common/src/lcd12864_invert_display.c | 9 + fw/stm8s/common/src/lcd12864_new_segment.c | 31 + fw/stm8s/common/src/max31855k_init.c | 20 + fw/stm8s/common/src/max31855k_read.c | 30 + fw/stm8s/common/src/max6675_init.c | 20 + fw/stm8s/common/src/max6675_read.c | 25 + fw/stm8s/common/src/oled_clear_display.c | 23 + fw/stm8s/common/src/oled_clear_segment.c | 14 + fw/stm8s/common/src/oled_command1.c | 9 + fw/stm8s/common/src/oled_command_list.c | 12 + fw/stm8s/common/src/oled_dim_display.c | 19 + fw/stm8s/common/src/oled_display_segment.c | 90 + fw/stm8s/common/src/oled_free_segment.c | 21 + fw/stm8s/common/src/oled_init.c | 100 + fw/stm8s/common/src/oled_invert_display.c | 12 + fw/stm8s/common/src/oled_new_segment.c | 30 + fw/stm8s/common/src/spi_init.c | 9 + fw/stm8s/common/src/spi_read.c | 10 + fw/stm8s/common/src/spi_write.c | 9 + fw/stm8s/common/src/uart_init.c | 12 + fw/stm8s/common/src/uart_read.c | 7 + fw/stm8s/common/src/uart_stdin_getchar.c | 10 + fw/stm8s/common/src/uart_stdout_putchar.c | 11 + fw/stm8s/common/src/uart_stdout_putstring.c | 10 + fw/stm8s/common/src/uart_write.c | 7 + fw/stm8s/ebake1/Makefile | 47 + fw/stm8s/ebake1/defaults.h | 70 + fw/stm8s/ebake1/main.c | 416 ++ fw/stm8s/ebake1/pid.c | 47 + fw/stm8s/ebake1/pid.h | 18 + fw/stm8s/ebake1/strings.h | 28 + fw/stm8s/test1/Makefile | 47 + fw/stm8s/test1/defaults.h | 17 + fw/stm8s/test1/main.c | 193 + hw/.gitignore | 30 + hw/v1/bom/ibom.html | 3428 +++++++++++ hw/v1/gerbers/v1-B_Cu.gbr | 2454 ++++++++ hw/v1/gerbers/v1-B_Mask.gbr | 5436 +++++++++++++++++ hw/v1/gerbers/v1-B_Paste.gbr | 1675 +++++ hw/v1/gerbers/v1-B_SilkS.gbr | 1117 ++++ hw/v1/gerbers/v1-Edge_Cuts.gbr | 26 + hw/v1/gerbers/v1-F_Cu.gbr | 2667 ++++++++ hw/v1/gerbers/v1-F_Mask.gbr | 540 ++ hw/v1/gerbers/v1-F_Paste.gbr | 117 + hw/v1/gerbers/v1-F_SilkS.gbr | 360 ++ hw/v1/gerbers/v1.drl | 69 + hw/v1/v1-cache.lib | 400 ++ hw/v1/v1.kicad_pcb | 2222 +++++++ hw/v1/v1.net | 785 +++ hw/v1/v1.pro | 249 + hw/v1/v1.sch | 999 +++ 127 files changed, 35217 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 build/.gitignore create mode 100644 build/Dockerfile.dapper create mode 100644 build/Makefile create mode 100755 build/scripts/entry.sh create mode 100755 build/scripts/help.sh create mode 100755 build/scripts/sdcc/n76e003-ebake1.ihx create mode 100755 build/scripts/sdcc/n76e003-test1.ihx create mode 100755 build/scripts/sdcc/stm8s-ebake1.ihx create mode 100755 build/scripts/sdcc/stm8s-test1.ihx create mode 100644 fw/.gitignore create mode 100644 fw/n76e003/common/Makefile create mode 100755 fw/n76e003/common/inc/Common.h create mode 100755 fw/n76e003/common/inc/Delay.h create mode 100755 fw/n76e003/common/inc/Function_define.h create mode 100755 fw/n76e003/common/inc/N76E003.h create mode 100755 fw/n76e003/common/inc/SFR_Macro.h create mode 100644 fw/n76e003/common/inc/font.h create mode 100644 fw/n76e003/common/inc/lcd.h create mode 100644 fw/n76e003/common/inc/max6675.h create mode 100644 fw/n76e003/common/inc/spi.h create mode 100755 fw/n76e003/common/src/Common.c create mode 100755 fw/n76e003/common/src/Delay.c create mode 100644 fw/n76e003/common/src/lcd.c create mode 100644 fw/n76e003/common/src/max6675.c create mode 100644 fw/n76e003/common/src/spi.c create mode 100644 fw/n76e003/ebake1/Makefile create mode 100644 fw/n76e003/ebake1/defaults.h create mode 100644 fw/n76e003/ebake1/main.c create mode 100644 fw/n76e003/ebake1/pid.c create mode 100644 fw/n76e003/ebake1/pid.h create mode 100644 fw/n76e003/ebake1/strings.h create mode 100644 fw/n76e003/test1/Makefile create mode 100644 fw/n76e003/test1/defaults.h create mode 100644 fw/n76e003/test1/main.c create mode 100644 fw/stm8s/common/Makefile create mode 100644 fw/stm8s/common/extra.def create mode 100644 fw/stm8s/common/inc/beep.h create mode 100644 fw/stm8s/common/inc/clock.h create mode 100644 fw/stm8s/common/inc/delay.h create mode 100644 fw/stm8s/common/inc/eeprom.h create mode 100644 fw/stm8s/common/inc/font.h create mode 100644 fw/stm8s/common/inc/format.h create mode 100644 fw/stm8s/common/inc/lcd12864.h create mode 100644 fw/stm8s/common/inc/max31855k.h create mode 100644 fw/stm8s/common/inc/max6675.h create mode 100644 fw/stm8s/common/inc/oled.h create mode 100644 fw/stm8s/common/inc/spi.h create mode 100644 fw/stm8s/common/inc/stm8s.h create mode 100644 fw/stm8s/common/inc/uart.h create mode 100644 fw/stm8s/common/inc/uart_stdin.h create mode 100644 fw/stm8s/common/inc/uart_stdout.h create mode 100644 fw/stm8s/common/src/beep_freq.c create mode 100644 fw/stm8s/common/src/beep_init.c create mode 100644 fw/stm8s/common/src/beep_off.c create mode 100644 fw/stm8s/common/src/beep_on.c create mode 100644 fw/stm8s/common/src/clock_init.c create mode 100644 fw/stm8s/common/src/delay_ms.c create mode 100644 fw/stm8s/common/src/delay_us.c create mode 100644 fw/stm8s/common/src/eeprom_lock.c create mode 100644 fw/stm8s/common/src/eeprom_read.c create mode 100644 fw/stm8s/common/src/eeprom_unlock.c create mode 100644 fw/stm8s/common/src/eeprom_wait_busy.c create mode 100644 fw/stm8s/common/src/eeprom_write.c create mode 100644 fw/stm8s/common/src/format_sprintf.c create mode 100644 fw/stm8s/common/src/format_vsprintf.c create mode 100644 fw/stm8s/common/src/lcd12864_clear.c create mode 100644 fw/stm8s/common/src/lcd12864_clear_display.c create mode 100644 fw/stm8s/common/src/lcd12864_clear_segment.c create mode 100644 fw/stm8s/common/src/lcd12864_command1.c create mode 100644 fw/stm8s/common/src/lcd12864_command_list.c create mode 100644 fw/stm8s/common/src/lcd12864_display_segment.c create mode 100644 fw/stm8s/common/src/lcd12864_free_segment.c create mode 100644 fw/stm8s/common/src/lcd12864_init.c create mode 100644 fw/stm8s/common/src/lcd12864_invert_display.c create mode 100644 fw/stm8s/common/src/lcd12864_new_segment.c create mode 100644 fw/stm8s/common/src/max31855k_init.c create mode 100644 fw/stm8s/common/src/max31855k_read.c create mode 100644 fw/stm8s/common/src/max6675_init.c create mode 100644 fw/stm8s/common/src/max6675_read.c create mode 100644 fw/stm8s/common/src/oled_clear_display.c create mode 100644 fw/stm8s/common/src/oled_clear_segment.c create mode 100644 fw/stm8s/common/src/oled_command1.c create mode 100644 fw/stm8s/common/src/oled_command_list.c create mode 100644 fw/stm8s/common/src/oled_dim_display.c create mode 100644 fw/stm8s/common/src/oled_display_segment.c create mode 100644 fw/stm8s/common/src/oled_free_segment.c create mode 100644 fw/stm8s/common/src/oled_init.c create mode 100644 fw/stm8s/common/src/oled_invert_display.c create mode 100644 fw/stm8s/common/src/oled_new_segment.c create mode 100644 fw/stm8s/common/src/spi_init.c create mode 100644 fw/stm8s/common/src/spi_read.c create mode 100644 fw/stm8s/common/src/spi_write.c create mode 100644 fw/stm8s/common/src/uart_init.c create mode 100644 fw/stm8s/common/src/uart_read.c create mode 100644 fw/stm8s/common/src/uart_stdin_getchar.c create mode 100644 fw/stm8s/common/src/uart_stdout_putchar.c create mode 100644 fw/stm8s/common/src/uart_stdout_putstring.c create mode 100644 fw/stm8s/common/src/uart_write.c create mode 100644 fw/stm8s/ebake1/Makefile create mode 100644 fw/stm8s/ebake1/defaults.h create mode 100644 fw/stm8s/ebake1/main.c create mode 100644 fw/stm8s/ebake1/pid.c create mode 100644 fw/stm8s/ebake1/pid.h create mode 100644 fw/stm8s/ebake1/strings.h create mode 100644 fw/stm8s/test1/Makefile create mode 100644 fw/stm8s/test1/defaults.h create mode 100644 fw/stm8s/test1/main.c create mode 100644 hw/.gitignore create mode 100644 hw/v1/bom/ibom.html create mode 100644 hw/v1/gerbers/v1-B_Cu.gbr create mode 100644 hw/v1/gerbers/v1-B_Mask.gbr create mode 100644 hw/v1/gerbers/v1-B_Paste.gbr create mode 100644 hw/v1/gerbers/v1-B_SilkS.gbr create mode 100644 hw/v1/gerbers/v1-Edge_Cuts.gbr create mode 100644 hw/v1/gerbers/v1-F_Cu.gbr create mode 100644 hw/v1/gerbers/v1-F_Mask.gbr create mode 100644 hw/v1/gerbers/v1-F_Paste.gbr create mode 100644 hw/v1/gerbers/v1-F_SilkS.gbr create mode 100644 hw/v1/gerbers/v1.drl create mode 100644 hw/v1/v1-cache.lib create mode 100644 hw/v1/v1.kicad_pcb create mode 100644 hw/v1/v1.net create mode 100644 hw/v1/v1.pro create mode 100644 hw/v1/v1.sch diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6b7036f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# ---> VisualStudioCode +.vscode \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f4e321b --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 microjelly + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 17e95f3..6dcbfff 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,77 @@ # toaster +A barebones toaster reflow board and software. For details please visit my [project log](https://microjelly.com/reflow-controller-replacement/) +## Software +### Build +This project currently is using a Docker based build system. +\ +\ +*from a command line* +```bash +git clone https://github.com/microjelly/toaster.git +cd toaster/build +make sdcc/stm8s-ebake1.ihx +make sdcc/n76e003-ebake1.ihx +``` +`stm8s-ebake1.ihx` and `n76e003-ebake1.ihx` will be found in the `build/bin` directory. + +### Flash STM8s +https://github.com/vdudouyt/stm8flash +```bash +stm8flash -c stlinkv2 -p stm8s103?3 -w stm8s-ebake1.ihx +``` + +### Flash N76E003 +https://github.com/erincandescent/nuvoprog +```bash +nuvoprog program -t n76e003 -c FFFFFFFF -a n76e003-bake1.ihx +``` + +## Hardware +`hw/v1/bom/index.html` has component value and placement information. + +### STM8s build +Reference | Value +-- | -- +C5 | 1uF +R5 | DNP (Do Not Populate) +U1 | STM8S103F3P6 + +### N76E003 build +Reference | Value +-- | -- +C5 | DNP (Do Not Populate) +R5 | 0 Ohm +U1 | N76E003AT20 + +### Programing/Debug Header +The header uses a 10pin card edge 2.54mm pitch connector. +``` +Top with pads on the bottom right + | 2| 4| 6| 8|10| + +Bottom with pads on the bottom left + | 1| 3| 5| 7| 9| +``` + +Pad | STM8s | N76E003 +-- | -- | -- +1 | 3v3 | 3v3 +2 | 3v3 | 3v3 +3 | GND | GND +4 | SWIM | ICPCK +5 | GND | GND +6 | GND | GND +7 | RX | RX +8 | NRST | RST +9 | TX | TX +10 | N/A | ICPDAT + +## Debug +Connect RX/TX/GND to a serial device. +\ +\ +OSX; (exit Ctrl+A; Ctrl+\\; Y) +```bash +screen -port /dev/tty.usbserial-0001 115200 +``` \ No newline at end of file diff --git a/build/.gitignore b/build/.gitignore new file mode 100644 index 0000000..ac81e61 --- /dev/null +++ b/build/.gitignore @@ -0,0 +1,2 @@ +Dockerfile.dapper[0-9]* +bin/ \ No newline at end of file diff --git a/build/Dockerfile.dapper b/build/Dockerfile.dapper new file mode 100644 index 0000000..4f98358 --- /dev/null +++ b/build/Dockerfile.dapper @@ -0,0 +1,9 @@ +FROM ubuntu:20.10 AS sdcc +RUN apt-get update \ + && apt-get install -y vim make sdcc \ + && apt-get autoclean +ENV DAPPER_SOURCE /source +ENV DAPPER_OUTPUT ./build/bin +WORKDIR ${DAPPER_SOURCE} +ENTRYPOINT ["./build/scripts/entry.sh"] +CMD ["help"] \ No newline at end of file diff --git a/build/Makefile b/build/Makefile new file mode 100644 index 0000000..b2cfe3a --- /dev/null +++ b/build/Makefile @@ -0,0 +1,25 @@ +SDCC_TARGETS := $(shell find scripts/sdcc -type f|cut -c9-) + +$(PWD)/bin: + @mkdir -p $(PWD)/bin + +$(PWD)/bin/.dapper: $(PWD)/bin + @echo Downloading dapper + @curl -sL https://releases.rancher.com/dapper/v0.5.4/dapper-`uname -s`-`uname -m` > $(PWD)/bin/.dapper.tmp + @@chmod +x $(PWD)/bin/.dapper.tmp + @$(PWD)/bin/.dapper.tmp -v + @mv $(PWD)/bin/.dapper.tmp $(PWD)/bin/.dapper + +$(SDCC_TARGETS): $(PWD)/bin/.dapper + @echo "Building $@" + cd ../ && DOCKER_BUILDKIT=1 $(PWD)/bin/.dapper --target sdcc -f build/Dockerfile.dapper build/scripts/$@ + +.PHONY: help +.DEFAULT_GOAL := help + +help: + @$(PWD)/scripts/help.sh + +clean: + @rm -rf $(PWD)/bin $(PWD)/Dockerfile.dapper[0-9]* + @docker rmi toaster:master \ No newline at end of file diff --git a/build/scripts/entry.sh b/build/scripts/entry.sh new file mode 100755 index 0000000..8c92812 --- /dev/null +++ b/build/scripts/entry.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +mkdir -p ${DAPPER_OUTPUT} +if [ -e ${DIR}/$1 ]; then + ${DIR}/"$@" +else + exec "$@" +fi + +chown -R $DAPPER_UID:$DAPPER_GID ${DAPPER_OUTPUT} \ No newline at end of file diff --git a/build/scripts/help.sh b/build/scripts/help.sh new file mode 100755 index 0000000..6db523b --- /dev/null +++ b/build/scripts/help.sh @@ -0,0 +1,2 @@ +#!/bin/bash +echo help \ No newline at end of file diff --git a/build/scripts/sdcc/n76e003-ebake1.ihx b/build/scripts/sdcc/n76e003-ebake1.ihx new file mode 100755 index 0000000..1730355 --- /dev/null +++ b/build/scripts/sdcc/n76e003-ebake1.ihx @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +FOLDER=ebake1 +CORE=n76e003 + +make -C ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER} +cp ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER}/${FOLDER}.ihx ${DAPPER_OUTPUT}/${CORE}-${FOLDER}.ihx +ls -al ${DAPPER_OUTPUT}/${CORE}-${FOLDER}.ihx + +tail -10 ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER}/${FOLDER}.mem +#ls -la ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER}/ +#cp ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER}/test2.[ml]* ${DAPPER_OUTPUT}/ \ No newline at end of file diff --git a/build/scripts/sdcc/n76e003-test1.ihx b/build/scripts/sdcc/n76e003-test1.ihx new file mode 100755 index 0000000..1c0351f --- /dev/null +++ b/build/scripts/sdcc/n76e003-test1.ihx @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +FOLDER=test1 +CORE=n76e003 + +make -C ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER} +cp ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER}/${FOLDER}.ihx ${DAPPER_OUTPUT}/${CORE}-${FOLDER}.ihx +ls -al ${DAPPER_OUTPUT}/${CORE}-${FOLDER}.ihx + +tail -10 ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER}/${FOLDER}.mem +#ls -la ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER}/ +#cp ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER}/test2.[ml]* ${DAPPER_OUTPUT}/ \ No newline at end of file diff --git a/build/scripts/sdcc/stm8s-ebake1.ihx b/build/scripts/sdcc/stm8s-ebake1.ihx new file mode 100755 index 0000000..908775b --- /dev/null +++ b/build/scripts/sdcc/stm8s-ebake1.ihx @@ -0,0 +1,9 @@ +#!/bin/bash +set -e + +FOLDER=ebake1 +CORE=stm8s + +make -C ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER} +cp ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER}/${FOLDER}.ihx ${DAPPER_OUTPUT}/${CORE}-${FOLDER}.ihx +ls -al ${DAPPER_OUTPUT}/${CORE}-${FOLDER}.ihx \ No newline at end of file diff --git a/build/scripts/sdcc/stm8s-test1.ihx b/build/scripts/sdcc/stm8s-test1.ihx new file mode 100755 index 0000000..1f7a054 --- /dev/null +++ b/build/scripts/sdcc/stm8s-test1.ihx @@ -0,0 +1,9 @@ +#!/bin/bash +set -e + +FOLDER=test1 +CORE=stm8s + +make -C ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER} +cp ${DAPPER_SOURCE}/fw/${CORE}/${FOLDER}/${FOLDER}.ihx ${DAPPER_OUTPUT}/${CORE}-${FOLDER}.ihx +ls -al ${DAPPER_OUTPUT}/${CORE}-${FOLDER}.ihx diff --git a/fw/.gitignore b/fw/.gitignore new file mode 100644 index 0000000..d7cc626 --- /dev/null +++ b/fw/.gitignore @@ -0,0 +1,20 @@ +*.p1 +*.d +*.pre +*.sym +*.cmf +*.cof +*.hxl +*.lst +*.obj +*.rlf +*.sdb +*.elf +*.rel +*.rst +*.asm +*.cdb +*.ihx +*.lk + +*.lib \ No newline at end of file diff --git a/fw/n76e003/common/Makefile b/fw/n76e003/common/Makefile new file mode 100644 index 0000000..bbb2449 --- /dev/null +++ b/fw/n76e003/common/Makefile @@ -0,0 +1,42 @@ +DFOSC = -DFOSC_160000 +DFONTSET_MINI ?= -DFONTSET_MINI + +SRCDIR = ./src +INCDIR = ./inc + +## Get program name from enclosing directory name +PROGRAM = $(lastword $(subst /, ,$(CURDIR))) + +SOURCES=$(wildcard *.c $(SRCDIR)/*.c) +OBJECTS=$(SOURCES:.c=.rel) +HEADERS=$(wildcard *.h $(INCDIR)/*.h) + +CC = sdcc +AS = sdas8051 +MCU_MODEL = mcs51 +MODEL = small +CODE_SIZE = --code-size 18432 +IRAM_SIZE = --iram-size 256 +XRAM_SIZE = --xram-size 768 + +AFLAGS = -l -s +CFLAGS = -I$(INCDIR) -m$(MCU_MODEL) --model-$(MODEL) --out-fmt-ihx --no-xinit-opt $(DFOSC) $(DFONTSET_MINI) +LFLAGS = $(LIBPATH) $(LIBS) -m$(MCU_MODEL) --model-$(MODEL) $(CODE_SIZE) $(IRAM_SIZE) $(XRAM_SIZE) --out-fmt-ihx $(DEBUG) $(DFOSC) $(DFONTSET_MINI) + +AR = sdar +ARFLAGS = -rc + +.PHONY: all clean flash + +all: $(PROGRAM).lib + +$(PROGRAM).lib: $(OBJECTS) + $(AR) $(ARFLAGS) $(PROGRAM).lib $^ + +%.rel : %.c $(HEADERS) + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + +CCOMPILEDFILES=$(SOURCES:.c=.asm) $(SOURCES:.c=.lst) $(SOURCES:.c=.rel) \ + $(SOURCES:.c=.rst) $(SOURCES:.c=.sym) +clean: + @rm -f $(PROGRAM).lib $(PROGRAM).cdb $(PROGRAM).lk $(PROGRAM).map $(CCOMPILEDFILES) diff --git a/fw/n76e003/common/inc/Common.h b/fw/n76e003/common/inc/Common.h new file mode 100755 index 0000000..658df72 --- /dev/null +++ b/fw/n76e003/common/inc/Common.h @@ -0,0 +1,38 @@ +typedef __bit BIT; +typedef unsigned char UINT8; +typedef unsigned int UINT16; +typedef unsigned long UINT32; + +typedef unsigned char uint8_t; +typedef unsigned int uint16_t; +typedef unsigned long uint32_t; + + + + +#define CID_READ 0x0B +#define DID_READ 0x0C + +#define ERASE_APROM 0x22 +#define READ_APROM 0x00 +#define PROGRAM_APROM 0x21 +#define ERASE_LDROM +#define READ_LDROM +#define PROGRAM_LDROM +#define READ_CFG 0xC0 +#define PROGRAM_CFG 0xE1 +#define READ_UID 0x04 + + +void InitialUART0_Timer1(UINT32 u32Baudrate); //T1M = 1, SMOD = 1 +void InitialUART0_Timer3(UINT32 u32Baudrate); //Timer3 as Baudrate, SMOD=1, Prescale=0 +void InitialUART1_Timer3(UINT32 u32Baudrate); +void Send_Data_To_UART0(UINT8 c); +UINT8 Receive_Data_From_UART0(void); +void Send_Data_To_UART1(UINT8 c); +UINT8 Receive_Data_From_UART1(void); +void InitialUART1(UINT32 u32Baudrate); + +//unsigned char _sdcc_external_startup (void); + +extern __bit BIT_TMP; diff --git a/fw/n76e003/common/inc/Delay.h b/fw/n76e003/common/inc/Delay.h new file mode 100755 index 0000000..e2eef90 --- /dev/null +++ b/fw/n76e003/common/inc/Delay.h @@ -0,0 +1,8 @@ +void Timer0_Delay100us(UINT32 u32CNT); +void Timer0_Delay1ms(UINT32 u32CNT); +void Timer1_Delay10ms(UINT32 u32CNT); +void Timer2_Delay500us(UINT32 u32CNT); +void Timer3_Delay100ms(UINT32 u32CNT); + +void Timer0_Delay40ms(UINT32 u32CNT); +void Timer3_Delay10us(UINT32 u32CNT); \ No newline at end of file diff --git a/fw/n76e003/common/inc/Function_define.h b/fw/n76e003/common/inc/Function_define.h new file mode 100755 index 0000000..54d176b --- /dev/null +++ b/fw/n76e003/common/inc/Function_define.h @@ -0,0 +1,543 @@ +/*-------------------------------------------------------------------------- +N76E003 Function_define.h V1.02 + +All function define inital setting file for Nuvoton N76E003 +--------------------------------------------------------------------------*/ + +#include + +#define nop __asm__ ("NOP"); + + +//16 --> 8 x 2 +#define HIBYTE(v1) ((UINT8)((v1)>>8)) //v1 is UINT16 +#define LOBYTE(v1) ((UINT8)((v1)&0xFF)) +//8 x 2 --> 16 +#define MAKEWORD(v1,v2) ((((UINT16)(v1))<<8)+(UINT16)(v2)) //v1,v2 is UINT8 +//8 x 4 --> 32 +#define MAKELONG(v1,v2,v3,v4) (UINT32)((v1<<32)+(v2<<16)+(v3<<8)+v4) //v1,v2,v3,v4 is UINT8 +//32 --> 16 x 2 +#define YBYTE1(v1) ((UINT16)((v1)>>16)) //v1 is UINT32 +#define YBYTE0(v1) ((UINT16)((v1)&0xFFFF)) +//32 --> 8 x 4 +#define TBYTE3(v1) ((UINT8)((v1)>>24)) //v1 is UINT32 +#define TBYTE2(v1) ((UINT8)((v1)>>16)) +#define TBYTE1(v1) ((UINT8)((v1)>>8)) +#define TBYTE0(v1) ((UINT8)((v1)&0xFF)) + +#define SET_BIT0 0x01 +#define SET_BIT1 0x02 +#define SET_BIT2 0x04 +#define SET_BIT3 0x08 +#define SET_BIT4 0x10 +#define SET_BIT5 0x20 +#define SET_BIT6 0x40 +#define SET_BIT7 0x80 +#define SET_BIT8 0x0100 +#define SET_BIT9 0x0200 +#define SET_BIT10 0x0400 +#define SET_BIT11 0x0800 +#define SET_BIT12 0x1000 +#define SET_BIT13 0x2000 +#define SET_BIT14 0x4000 +#define SET_BIT15 0x8000 + +#define CLR_BIT0 0xFE +#define CLR_BIT1 0xFD +#define CLR_BIT2 0xFB +#define CLR_BIT3 0xF7 +#define CLR_BIT4 0xEF +#define CLR_BIT5 0xDF +#define CLR_BIT6 0xBF +#define CLR_BIT7 0x7F + +#define CLR_BIT8 0xFEFF +#define CLR_BIT9 0xFDFF +#define CLR_BIT10 0xFBFF +#define CLR_BIT11 0xF7FF +#define CLR_BIT12 0xEFFF +#define CLR_BIT13 0xDFFF +#define CLR_BIT14 0xBFFF +#define CLR_BIT15 0x7FFF + +#define FAIL 1 +#define PASS 0 + +/***************************************************************************************** +* For GPIO INIT setting +*****************************************************************************************/ +//------------------- Define Port as Quasi mode ------------------- +#define P00_Quasi_Mode P0M1&=~SET_BIT0;P0M2&=~SET_BIT0 +#define P01_Quasi_Mode P0M1&=~SET_BIT1;P0M2&=~SET_BIT1 +#define P02_Quasi_Mode P0M1&=~SET_BIT2;P0M2&=~SET_BIT2 +#define P03_Quasi_Mode P0M1&=~SET_BIT3;P0M2&=~SET_BIT3 +#define P04_Quasi_Mode P0M1&=~SET_BIT4;P0M2&=~SET_BIT4 +#define P05_Quasi_Mode P0M1&=~SET_BIT5;P0M2&=~SET_BIT5 +#define P06_Quasi_Mode P0M1&=~SET_BIT6;P0M2&=~SET_BIT6 +#define P07_Quasi_Mode P0M1&=~SET_BIT7;P0M2&=~SET_BIT7 +#define P10_Quasi_Mode P1M1&=~SET_BIT0;P1M2&=~SET_BIT0 +#define P11_Quasi_Mode P1M1&=~SET_BIT1;P1M2&=~SET_BIT1 +#define P12_Quasi_Mode P1M1&=~SET_BIT2;P1M2&=~SET_BIT2 +#define P13_Quasi_Mode P1M1&=~SET_BIT3;P1M2&=~SET_BIT3 +#define P14_Quasi_Mode P1M1&=~SET_BIT4;P1M2&=~SET_BIT4 +#define P15_Quasi_Mode P1M1&=~SET_BIT5;P1M2&=~SET_BIT5 +#define P16_Quasi_Mode P1M1&=~SET_BIT6;P1M2&=~SET_BIT6 +#define P17_Quasi_Mode P1M1&=~SET_BIT7;P1M2&=~SET_BIT7 +#define P30_Quasi_Mode P3M1&=~SET_BIT0;P3M2&=~SET_BIT0 +//------------------- Define Port as Push Pull mode ------------------- +#define P00_PushPull_Mode P0M1&=~SET_BIT0;P0M2|=SET_BIT0 +#define P01_PushPull_Mode P0M1&=~SET_BIT1;P0M2|=SET_BIT1 +#define P02_PushPull_Mode P0M1&=~SET_BIT2;P0M2|=SET_BIT2 +#define P03_PushPull_Mode P0M1&=~SET_BIT3;P0M2|=SET_BIT3 +#define P04_PushPull_Mode P0M1&=~SET_BIT4;P0M2|=SET_BIT4 +#define P05_PushPull_Mode P0M1&=~SET_BIT5;P0M2|=SET_BIT5 +#define P06_PushPull_Mode P0M1&=~SET_BIT6;P0M2|=SET_BIT6 +#define P07_PushPull_Mode P0M1&=~SET_BIT7;P0M2|=SET_BIT7 +#define P10_PushPull_Mode P1M1&=~SET_BIT0;P1M2|=SET_BIT0 +#define P11_PushPull_Mode P1M1&=~SET_BIT1;P1M2|=SET_BIT1 +#define P12_PushPull_Mode P1M1&=~SET_BIT2;P1M2|=SET_BIT2 +#define P13_PushPull_Mode P1M1&=~SET_BIT3;P1M2|=SET_BIT3 +#define P14_PushPull_Mode P1M1&=~SET_BIT4;P1M2|=SET_BIT4 +#define P15_PushPull_Mode P1M1&=~SET_BIT5;P1M2|=SET_BIT5 +#define P16_PushPull_Mode P1M1&=~SET_BIT6;P1M2|=SET_BIT6 +#define P17_PushPull_Mode P1M1&=~SET_BIT7;P1M2|=SET_BIT7 +#define P30_PushPull_Mode P3M1&=~SET_BIT0;P3M2|=SET_BIT0 +#define GPIO1_PushPull_Mode P1M1&=~SET_BIT0;P1M2|=SET_BIT0 +//------------------- Define Port as Input Only mode ------------------- +#define P00_Input_Mode P0M1|=SET_BIT0;P0M2&=~SET_BIT0 +#define P01_Input_Mode P0M1|=SET_BIT1;P0M2&=~SET_BIT1 +#define P02_Input_Mode P0M1|=SET_BIT2;P0M2&=~SET_BIT2 +#define P03_Input_Mode P0M1|=SET_BIT3;P0M2&=~SET_BIT3 +#define P04_Input_Mode P0M1|=SET_BIT4;P0M2&=~SET_BIT4 +#define P05_Input_Mode P0M1|=SET_BIT5;P0M2&=~SET_BIT5 +#define P06_Input_Mode P0M1|=SET_BIT6;P0M2&=~SET_BIT6 +#define P07_Input_Mode P0M1|=SET_BIT7;P0M2&=~SET_BIT7 +#define P10_Input_Mode P1M1|=SET_BIT0;P1M2&=~SET_BIT0 +#define P11_Input_Mode P1M1|=SET_BIT1;P1M2&=~SET_BIT1 +#define P12_Input_Mode P1M1|=SET_BIT2;P1M2&=~SET_BIT2 +#define P13_Input_Mode P1M1|=SET_BIT3;P1M2&=~SET_BIT3 +#define P14_Input_Mode P1M1|=SET_BIT4;P1M2&=~SET_BIT4 +#define P15_Input_Mode P1M1|=SET_BIT5;P1M2&=~SET_BIT5 +#define P16_Input_Mode P1M1|=SET_BIT6;P1M2&=~SET_BIT6 +#define P17_Input_Mode P1M1|=SET_BIT7;P1M2&=~SET_BIT7 +#define P30_Input_Mode P3M1|=SET_BIT0;P3M2&=~SET_BIT0 +//-------------------Define Port as Open Drain mode ------------------- +#define P00_OpenDrain_Mode P0M1|=SET_BIT0;P0M2|=SET_BIT0 +#define P01_OpenDrain_Mode P0M1|=SET_BIT1;P0M2|=SET_BIT1 +#define P02_OpenDrain_Mode P0M1|=SET_BIT2;P0M2|=SET_BIT2 +#define P03_OpenDrain_Mode P0M1|=SET_BIT3;P0M2|=SET_BIT3 +#define P04_OpenDrain_Mode P0M1|=SET_BIT4;P0M2|=SET_BIT4 +#define P05_OpenDrain_Mode P0M1|=SET_BIT5;P0M2|=SET_BIT5 +#define P06_OpenDrain_Mode P0M1|=SET_BIT6;P0M2|=SET_BIT6 +#define P07_OpenDrain_Mode P0M1|=SET_BIT7;P0M2|=SET_BIT7 +#define P10_OpenDrain_Mode P1M1|=SET_BIT0;P1M2|=SET_BIT0 +#define P11_OpenDrain_Mode P1M1|=SET_BIT1;P1M2|=SET_BIT1 +#define P12_OpenDrain_Mode P1M1|=SET_BIT2;P1M2|=SET_BIT2 +#define P13_OpenDrain_Mode P1M1|=SET_BIT3;P1M2|=SET_BIT3 +#define P14_OpenDrain_Mode P1M1|=SET_BIT4;P1M2|=SET_BIT4 +#define P15_OpenDrain_Mode P1M1|=SET_BIT5;P1M2|=SET_BIT5 +#define P16_OpenDrain_Mode P1M1|=SET_BIT6;P1M2|=SET_BIT6 +#define P17_OpenDrain_Mode P1M1|=SET_BIT7;P1M2|=SET_BIT7 +#define P30_OpenDrain_Mode P3M1|=SET_BIT0;P3M2|=SET_BIT0 +//--------- Define all port as quasi mode --------- +#define Set_All_GPIO_Quasi_Mode P0M1=0;P0M2=0;P1M1=0;P1M2=0;P3M1=0;P3M2=0 + +#define set_GPIO1 P12=1 +#define clr_GPIO1 P12=0 + +/**************************************************************************** + Enable INT port 0~3 +***************************************************************************/ +#define Enable_INT_Port0 PICON &= 0xFB; +#define Enable_INT_Port1 PICON |= 0x01; +#define Enable_INT_Port2 PICON |= 0x02; +#define Enable_INT_Port3 PICON |= 0x03; +/***************************************************************************** + Enable each bit low level trig mode +*****************************************************************************/ +#define Enable_BIT7_LowLevel_Trig PICON&=0x7F;PINEN|=0x80;PIPEN&=0x7F +#define Enable_BIT6_LowLevel_Trig PICON&=0x7F;PINEN|=0x40;PIPEN&=0xBF +#define Enable_BIT5_LowLevel_Trig PICON&=0xBF;PINEN|=0x20;PIPEN&=0xDF +#define Enable_BIT4_LowLevel_Trig PICON&=0xBF;PINEN|=0x10;PIPEN&=0xEF +#define Enable_BIT3_LowLevel_Trig PICON&=0xDF;PINEN|=0x08;PIPEN&=0xF7 +#define Enable_BIT2_LowLevel_Trig PICON&=0xEF;PINEN|=0x04;PIPEN&=0xFB +#define Enable_BIT1_LowLevel_Trig PICON&=0xF7;PINEN|=0x02;PIPEN&=0xFD +#define Enable_BIT0_LowLevel_Trig PICON&=0xFD;PINEN|=0x01;PIPEN&=0xFE +/***************************************************************************** + Enable each bit high level trig mode +*****************************************************************************/ +#define Enable_BIT7_HighLevel_Trig PICON&=0x7F;PINEN&=0x7F;PIPEN|=0x80 +#define Enable_BIT6_HighLevel_Trig PICON&=0x7F;PINEN&=0xBF;PIPEN|=0x40 +#define Enable_BIT5_HighLevel_Trig PICON&=0xBF;PINEN&=0xDF;PIPEN|=0x20 +#define Enable_BIT4_HighLevel_Trig PICON&=0xBF;PINEN&=0xEF;PIPEN|=0x10 +#define Enable_BIT3_HighLevel_Trig PICON&=0xDF;PINEN&=0xF7;PIPEN|=0x08 +#define Enable_BIT2_HighLevel_Trig PICON&=0xEF;PINEN&=0xFB;PIPEN|=0x04 +#define Enable_BIT1_HighLevel_Trig PICON&=0xF7;PINEN&=0xFD;PIPEN|=0x02 +#define Enable_BIT0_HighLevel_Trig PICON&=0xFD;PINEN&=0xFE;PIPEN|=0x01 +/***************************************************************************** + Enable each bit falling edge trig mode +*****************************************************************************/ +#define Enable_BIT7_FallEdge_Trig PICON|=0x80;PINEN|=0x80;PIPEN&=0x7F +#define Enable_BIT6_FallEdge_Trig PICON|=0x80;PINEN|=0x40;PIPEN&=0xBF +#define Enable_BIT5_FallEdge_Trig PICON|=0x40;PINEN|=0x20;PIPEN&=0xDF +#define Enable_BIT4_FallEdge_Trig PICON|=0x40;PINEN|=0x10;PIPEN&=0xEF +#define Enable_BIT3_FallEdge_Trig PICON|=0x20;PINEN|=0x08;PIPEN&=0xF7 +#define Enable_BIT2_FallEdge_Trig PICON|=0x10;PINEN|=0x04;PIPEN&=0xFB +#define Enable_BIT1_FallEdge_Trig PICON|=0x08;PINEN|=0x02;PIPEN&=0xFD +#define Enable_BIT0_FallEdge_Trig PICON|=0x04;PINEN|=0x01;PIPEN&=0xFE +/***************************************************************************** + Enable each bit rasing edge trig mode +*****************************************************************************/ +#define Enable_BIT7_RasingEdge_Trig PICON|=0x80;PINEN&=0x7F;PIPEN|=0x80 +#define Enable_BIT6_RasingEdge_Trig PICON|=0x80;PINEN&=0xBF;PIPEN|=0x40 +#define Enable_BIT5_RasingEdge_Trig PICON|=0x40;PINEN&=0xDF;PIPEN|=0x20 +#define Enable_BIT4_RasingEdge_Trig PICON|=0x40;PINEN&=0xEF;PIPEN|=0x10 +#define Enable_BIT3_RasingEdge_Trig PICON|=0x20;PINEN&=0xF7;PIPEN|=0x08 +#define Enable_BIT2_RasingEdge_Trig PICON|=0x10;PINEN&=0xFB;PIPEN|=0x04 +#define Enable_BIT1_RasingEdge_Trig PICON|=0x08;PINEN&=0xFD;PIPEN|=0x02 +#define Enable_BIT0_RasingEdge_Trig PICON|=0x04;PINEN&=0xFE;PIPEN|=0x01 + + +/***************************************************************************************** +* For TIMER VALUE setting is base on " option -> C51 -> Preprocesser Symbols -> Define " +*****************************************************************************************/ +#ifdef FOSC_110592 // if Fsys = 11.0592MHz + #define TIMER_DIV12_VALUE_10us 65536-9 //9*12/11.0592 = 10 uS, // Timer divider = 12 for TM0/TM1 + #define TIMER_DIV12_VALUE_1ms 65536-923 //923*12/11.0592 = 1 mS // Timer divider = 12 + #define TIMER_DIV12_VALUE_10ms 65536-9216 //18432*12/22118400 = 10 ms // Timer divider = 12 + #define TIMER_DIV4_VALUE_10us 65536-28 //28*4/11.0592 = 10 uS // Timer divider = 4 for TM2/TM3 + #define TIMER_DIV4_VALUE_1ms 65536-2765 //2765*4/11.0592 = 1 mS // Timer divider = 4 + #define TIMER_DIV4_VALUE_100us 65536-277 //553*4/22118400 = 100 us // Timer divider = 4 + #define TIMER_DIV4_VALUE_200us 65536-553 //1106*4/22118400 = 200 us // Timer divider = 4 + #define TIMER_DIV4_VALUE_500us 65536-1383 //2765*4/22118400 = 500 us // Timer divider = 4 + #define TIMER_DIV16_VALUE_10ms 65536-6912 //1500*16/22118400 = 10 ms // Timer divider = 16 + #define TIMER_DIV64_VALUE_30ms 65536-5184 //10368*64/22118400 = 30 ms // Timer divider = 64 + #define TIMER_DIV128_VALUE_100ms 65536-8640 //17280*128/22118400 = 100 ms // Timer divider = 128 + #define TIMER_DIV128_VALUE_200ms 65536-17280 //34560*128/22118400 = 200 ms // Timer divider = 128 + #define TIMER_DIV256_VALUE_500ms 65536-21600 //43200*256/22118400 = 500 ms // Timer divider = 256 + #define TIMER_DIV512_VALUE_1s 65536-21600 //43200*512/22118400 = 1 s // Timer divider = 512 +#endif +#ifdef FOSC_160000 // if Fsys = 16MHz + #define TIMER_DIV12_VALUE_10us 65536-13 //13*12/16000000 = 10 uS, // Timer divider = 12 for TM0/TM1 + #define TIMER_DIV12_VALUE_100us 65536-130 //130*12/16000000 = 10 uS, // Timer divider = 12 + #define TIMER_DIV12_VALUE_1ms 65536-1334 //1334*12/16000000 = 1 mS, // Timer divider = 12 + #define TIMER_DIV12_VALUE_10ms 65536-13334 //13334*12/16000000 = 10 mS // Timer divider = 12 + #define TIMER_DIV12_VALUE_40ms 65536-53336 //53336*12/16000000 = 40 ms // Timer divider = 12 + #define TIMER_DIV4_VALUE_10us 65536-40 //40*4/16000000 = 10 uS, // Timer divider = 4 for TM2/TM3 + #define TIMER_DIV4_VALUE_100us 65536-400 //400*4/16000000 = 100 us // Timer divider = 4 + #define TIMER_DIV4_VALUE_200us 65536-800 //800*4/16000000 = 200 us // Timer divider = 4 + #define TIMER_DIV4_VALUE_500us 65536-2000 //2000*4/16000000 = 500 us // Timer divider = 4 + #define TIMER_DIV4_VALUE_1ms 65536-4000 //4000*4/16000000 = 1 mS, // Timer divider = 4 + #define TIMER_DIV16_VALUE_10ms 65536-10000 //10000*16/16000000 = 10 ms // Timer divider = 16 + #define TIMER_DIV64_VALUE_30ms 65536-7500 //7500*64/16000000 = 30 ms // Timer divider = 64 + #define TIMER_DIV128_VALUE_100ms 65536-12500 //12500*128/16000000 = 100 ms // Timer divider = 128 + #define TIMER_DIV128_VALUE_200ms 65536-25000 //25000*128/16000000 = 200 ms // Timer divider = 128 + #define TIMER_DIV128_VALUE_250ms 65536-31250 //31250*128/16000000 = 250 ms // Timer divider = 128 + #define TIMER_DIV256_VALUE_500ms 65536-31250 //31250*256/16000000 = 500 ms // Timer divider = 256 + #define TIMER_DIV512_VALUE_1s 65536-31250 //31250*512/16000000 = 1 s. // Timer Divider = 512 +#endif +#ifdef FOSC_166000 // if Fsys = 16.6MHz + #define TIMER_DIV12_VALUE_10us 65536-13 //13*12/16600000 = 10 uS, // Timer divider = 12 for TM0/TM1 + #define TIMER_DIV12_VALUE_100us 65536-138 //138*12/16600000 = 100 uS, // Timer divider = 12 + #define TIMER_DIV12_VALUE_1ms 65536-1384 //1384*12/16600000 = 1 mS, // Timer divider = 12 + #define TIMER_DIV12_VALUE_10ms 65536-13834 //13834*12/16600000 = 10 mS // Timer divider = 12 + #define TIMER_DIV12_VALUE_40ms 65536-55334 //55334*12/16600000 = 40 ms // Timer divider = 12 + #define TIMER_DIV4_VALUE_10us 65536-41 //41*4/16600000 = 10 uS, // Timer divider = 4 for TM2/TM3 + #define TIMER_DIV4_VALUE_100us 65536-415 //415*4/16600000 = 100 us // Timer divider = 4 + #define TIMER_DIV4_VALUE_200us 65536-830 //830*4/16600000 = 200 us // Timer divider = 4 + #define TIMER_DIV4_VALUE_500us 65536-2075 //2075*4/16600000 = 500 us // Timer divider = 4 + #define TIMER_DIV4_VALUE_1ms 65536-4150 //4150*4/16600000 = 1 mS, // Timer divider = 4 + #define TIMER_DIV16_VALUE_10ms 65536-10375 //10375*16/16600000 = 10 ms // Timer divider = 16 + #define TIMER_DIV64_VALUE_30ms 65536-7781 //7781*64/16600000 = 30 ms // Timer divider = 64 + #define TIMER_DIV128_VALUE_100ms 65536-12969 //12969*128/16600000 = 100 ms // Timer divider = 128 + #define TIMER_DIV128_VALUE_200ms 65536-25938 //25938*128/16600000 = 200 ms // Timer divider = 128 + #define TIMER_DIV256_VALUE_500ms 65536-32422 //32422*256/16600000 = 500 ms // Timer divider = 256 + #define TIMER_DIV512_VALUE_1s 65536-32422 //32422*512/16600000 = 1 s. // Timer Divider = 512 +#endif +#ifdef FOSC_184320 // if Fsys = 18.432MHz + #define TIMER_DIV12_VALUE_10us 65536-15 //15*12/18.432 = 10 uS, Timer Clock = Fsys/12 + #define TIMER_DIV12_VALUE_1ms 65536-1536 //1536*12/18.432 = 1 mS, Timer Clock = Fsys/12 + #define TIMER_DIV4_VALUE_10us 65536-46 //46*4/18.432 = 10 uS, Timer Clock = Fsys/4 + #define TIMER_DIV4_VALUE_1ms 65536-4608 //4608*4/18.432 = 1 mS, Timer Clock = Fsys/4 +#endif +#ifdef FOSC_200000 // if Fsys = 20 MHz + #define TIMER_DIV12_VALUE_10us 65536-17 //17*12/20000000 = 10 uS, Timer Clock = Fsys/12 + #define TIMER_DIV12_VALUE_1ms 65536-1667 //1667*12/20000000 = 1 mS, Timer Clock = Fsys/12 + #define TIMER_DIV4_VALUE_10us 65536-50 //50*4/20000000 = 10 uS, Timer Clock = Fsys/4 + #define TIMER_DIV4_VALUE_1ms 65536-5000 //5000*4/20000000 = 1 mS, Timer Clock = Fsys/4 +#endif +#ifdef FOSC_221184 // if Fsys = 22.1184 MHz + #define TIMER_DIV12_VALUE_10us 65536-18 //18*12/22118400 = 10 uS, // Timer divider = 12 + #define TIMER_DIV12_VALUE_1ms 65536-1843 //1843*12/22118400 = 1 mS, // Timer divider = 12 + #define TIMER_DIV12_VALUE_10ms 65536-18432 //18432*12/22118400 = 10 ms // Timer divider = 12 + #define TIMER_DIV4_VALUE_10us 65536-56 //9*4/22118400 = 10 uS, // Timer divider = 4 + #define TIMER_DIV4_VALUE_1ms 65536-5530 //923*4/22118400 = 1 mS, // Timer divider = 4 + #define TIMER_DIV4_VALUE_100us 65536-553 //553*4/22118400 = 100 us // Timer divider = 4 + #define TIMER_DIV4_VALUE_200us 65536-1106 //1106*4/22118400 = 200 us // Timer divider = 4 + #define TIMER_DIV4_VALUE_500us 65536-2765 //2765*4/22118400 = 500 us // Timer divider = 4 + #define TIMER_DIV16_VALUE_10ms 65536-13824 //1500*16/22118400 = 10 ms // Timer divider = 16 + #define TIMER_DIV64_VALUE_30ms 65536-10368 //10368*64/22118400 = 30 ms // Timer divider = 64 + #define TIMER_DIV128_VALUE_100ms 65536-17280 //17280*128/22118400 = 100 ms // Timer divider = 128 + #define TIMER_DIV128_VALUE_200ms 65536-34560 //34560*128/22118400 = 200 ms // Timer divider = 128 + #define TIMER_DIV256_VALUE_500ms 65536-43200 //43200*256/22118400 = 500 ms // Timer divider = 256 + #define TIMER_DIV512_VALUE_1s 65536-43200 //43200*512/22118400 = 1 s // Timer divider = 512 +#endif +#ifdef FOSC_240000 // if Fsys = 20 MHz + #define TIMER_DIV12_VALUE_10us 65536-20 //20*12/24000000 = 10 uS, // Timer divider = 12 + #define TIMER_DIV12_VALUE_1ms 65536-2000 //2000*12/24000000 = 1 mS, // Timer divider = 12 + #define TIMER_DIV12_VALUE_10ms 65536-20000 //2000*12/24000000 = 10 mS // Timer divider = 12 + #define TIMER_DIV4_VALUE_10us 65536-60 //60*4/24000000 = 10 uS, // Timer divider = 4 + #define TIMER_DIV4_VALUE_100us 65536-600 //600*4/24000000 = 100 us // Timer divider = 4 + #define TIMER_DIV4_VALUE_200us 65536-1200 //1200*4/24000000 = 200 us // Timer divider = 4 + #define TIMER_DIV4_VALUE_500us 65536-3000 //3000*4/24000000 = 500 us // Timer divider = 4 + #define TIMER_DIV4_VALUE_1ms 65536-6000 //6000*4/24000000 = 1 mS, // Timer divider = 4 + #define TIMER_DIV16_VALUE_10ms 65536-15000 //15000*16/24000000 = 10 ms // Timer divider = 16 + #define TIMER_DIV64_VALUE_30ms 65536-11250 //11250*64/24000000 = 30 ms // Timer divider = 64 + #define TIMER_DIV128_VALUE_100ms 65536-18750 //37500*128/24000000 = 200 ms // Timer divider = 128 + #define TIMER_DIV128_VALUE_200ms 65536-37500 //37500*128/24000000 = 200 ms // Timer divider = 128 + #define TIMER_DIV256_VALUE_500ms 65536-46875 //46875*256/24000000 = 500 ms // Timer divider = 256 + #define TIMER_DIV512_VALUE_1s 65536-46875 //46875*512/24000000 = 1 s. // Timer Divider = 512 +#endif +//-------------------- Timer0 function define -------------------- +#define TIMER1_MODE0_ENABLE TMOD&=0x0F +#define TIMER1_MODE1_ENABLE TMOD&=0x0F;TMOD|=0x10 +#define TIMER1_MODE2_ENABLE TMOD&=0x0F;TMOD|=0x20 +#define TIMER1_MODE3_ENABLE TMOD&=0x0F;TMOD|=0x30 +//-------------------- Timer1 function define -------------------- +#define TIMER0_MODE0_ENABLE TMOD&=0xF0 +#define TIMER0_MODE1_ENABLE TMOD&=0xF0;TMOD|=0x01 +#define TIMER0_MODE2_ENABLE TMOD&=0xF0;TMOD|=0x02 +#define TIMER0_MODE3_ENABLE TMOD&=0xF0;TMOD|=0x03 +//-------------------- Timer2 function define -------------------- +#define TIMER2_DIV_4 T2MOD|=0x10;T2MOD&=0x9F +#define TIMER2_DIV_16 T2MOD|=0x20;T2MOD&=0xAF +#define TIMER2_DIV_32 T2MOD|=0x30;T2MOD&=0xBF +#define TIMER2_DIV_64 T2MOD|=0x40;T2MOD&=0xCF +#define TIMER2_DIV_128 T2MOD|=0x50;T2MOD&=0xDF +#define TIMER2_DIV_256 T2MOD|=0x60;T2MOD&=0xEF +#define TIMER2_DIV_512 T2MOD|=0x70 +#define TIMER2_Auto_Reload_Delay_Mode T2CON&=~SET_BIT0;T2MOD|=SET_BIT7;T2MOD|=SET_BIT3 +#define TIMER2_Compare_Capture_Mode T2CON|=SET_BIT0;T2MOD&=~SET_BIT7;T2MOD|=SET_BIT2 + +#define TIMER2_CAP0_Capture_Mode T2CON&=~SET_BIT0;T2MOD=0x89 +#define TIMER2_CAP1_Capture_Mode T2CON&=~SET_BIT0;T2MOD=0x8A +#define TIMER2_CAP2_Capture_Mode T2CON&=~SET_BIT0;T2MOD=0x8B + +//-------------------- Timer2 Capture define -------------------- +//--- Falling Edge ----- +#define IC0_P12_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC1_P11_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x01;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC2_P10_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x02;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC3_P00_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x03;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC3_P04_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x04;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC4_P01_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x05;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC5_P03_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x06;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC6_P05_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x07;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC7_P15_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x08;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 + +#define IC0_P12_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5 +#define IC1_P11_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x10;CAPCON0|=SET_BIT5;CAPCON0|=SET_BIT5 +#define IC2_P10_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x20;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5 +#define IC3_P00_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x30;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5 +#define IC3_P04_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x40;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5 +#define IC4_P01_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x50;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5 +#define IC5_P03_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x60;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5 +#define IC6_P05_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x70;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5 +#define IC7_P15_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x80;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5 + +#define IC0_P12_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6 +#define IC1_P11_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x10;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6 +#define IC2_P10_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x20;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6 +#define IC3_P00_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x30;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6 +#define IC3_P04_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x40;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6 +#define IC4_P01_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x50;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6 +#define IC5_P03_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x60;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6 +#define IC6_P05_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x70;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6 +#define IC7_P15_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x80;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6 + +//----- Rising edge ---- +#define IC0_P12_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4; +#define IC1_P11_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x01;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4; +#define IC2_P10_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x02;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4; +#define IC3_P00_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x03;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4; +#define IC3_P04_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x04;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4; +#define IC4_P01_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x05;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4; +#define IC5_P03_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x06;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4; +#define IC6_P05_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x07;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4; +#define IC7_P15_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x08;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4; + +#define IC0_P12_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0FCAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC1_P11_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x10;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC2_P10_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x20;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC3_P00_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x30;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC3_P04_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x40;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC4_P01_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x50;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC5_P03_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x60;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC6_P05_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x70;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC7_P15_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x80;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; + +#define IC0_P12_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC1_P11_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x01;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC2_P10_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x02;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC3_P00_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x03;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC3_P04_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x04;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC4_P01_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x05;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC5_P03_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x06;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC6_P05_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x07;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC7_P15_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x08;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; + +//-----BOTH edge ---- +#define IC0_P12_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC1_P11_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x01;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC2_P10_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x02;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC3_P00_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x03;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC3_P04_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x04;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC4_P01_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x05;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC5_P03_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x06;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC6_P05_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x07;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 +#define IC7_P15_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x08;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4 + +#define IC0_P12_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5 +#define IC1_P11_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x10;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC2_P10_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x20;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC3_P00_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x30;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC3_P04_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x40;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC4_P01_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x50;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC5_P03_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x60;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC6_P05_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x70;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; +#define IC7_P15_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x80;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5; + +#define IC0_P12_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC1_P11_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x01;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC2_P10_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x02;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC3_P00_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x03;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC3_P04_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x04;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC4_P01_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x05;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC5_P03_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x06;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC6_P05_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x07;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; +#define IC7_P15_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x08;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6; + +#define TIMER2_IC2_DISABLE CAPCON0&=~SET_BIT6 +#define TIMER2_IC1_DISABLE CAPCON0&=~SET_BIT5 +#define TIMER2_IC0_DISABLE CAPCON0&=~SET_BIT4 + +/***************************************************************************************** +* For PWM setting +*****************************************************************************************/ +//--------- PMW clock source select define --------------------- +#define PWM_CLOCK_FSYS CKCON&=0xBF +#define PWM_CLOCK_TIMER1 CKCON|=0x40 +//--------- PWM clock devide define ---------------------------- +#define PWM_CLOCK_DIV_2 PWMCON1|=0x01;PWMCON1&=0xF9 +#define PWM_CLOCK_DIV_4 PWMCON1|=0x02;PWMCON1&=0xFA +#define PWM_CLOCK_DIV_8 PWMCON1|=0x03;PWMCON1&=0xFB +#define PWM_CLOCK_DIV_16 PWMCON1|=0x04;PWMCON1&=0xFC +#define PWM_CLOCK_DIV_32 PWMCON1|=0x05;PWMCON1&=0xFD +#define PWM_CLOCK_DIV_64 PWMCON1|=0x06;PWMCON1&=0xFE +#define PWM_CLOCK_DIV_128 PWMCON1|=0x07 +//--------- PWM I/O select define ------------------------------ +#define PWM5_P15_OUTPUT_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1|=0x20;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P1.5 as PWM5 output enable +#define PWM5_P03_OUTPUT_ENABLE PIOCON0|=0x20 //P0.3 as PWM5 +#define PWM4_P01_OUTPUT_ENABLE PIOCON0|=0x10 //P0.1 as PWM4 output enable +#define PWM3_P04_OUTPUT_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1|=0x08;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P0.4 as PWM3 output enable +#define PWM3_P00_OUTPUT_ENABLE PIOCON0|=0x08 //P0.0 as PWM3 +#define PWM2_P05_OUTPUT_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1|=0x04;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P1.0 as PWM2 output enable +#define PWM2_P10_OUTPUT_ENABLE PIOCON0|=0x04 //P1.0 as PWM2 +#define PWM1_P14_OUTPUT_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1|=0x02;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P1.4 as PWM1 output enable +#define PWM1_P11_OUTPUT_ENABLE PIOCON0|=0x02 //P1.1 as PWM1 +#define PWM0_P12_OUTPUT_ENABLE PIOCON0|=0x01 //P1.2 as PWM0 output enable +#define ALL_PWM_OUTPUT_ENABLE PIOCON0=0xFF;PIOCON1=0xFF +#define PWM5_P15_OUTPUT_DISABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1&=0xDF;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P1.5 as PWM5 output disable +#define PWM5_P03_OUTPUT_DISABLE PIOCON0&=0xDF //P0.3 as PWM5 +#define PWM4_P01_OUTPUT_DISABLE PIOCON0&=0xEF //P0.1 as PWM4 output disable +#define PWM3_P04_OUTPUT_DISABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1&=0xF7;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P0.4 as PWM3 output disable +#define PWM3_P00_OUTPUT_DISABLE PIOCON0&=0xF7 //P0.0 as PWM3 +#define PWM2_P05_OUTPUT_DISABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1&=0xFB;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P1.0 as PWM2 output disable +#define PWM2_P10_OUTPUT_DISABLE PIOCON0&=0xFB //P1.0 as PWM2 +#define PWM1_P14_OUTPUT_DISABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1&=0xFD;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P1.4 as PWM1 output disable +#define PWM1_P11_OUTPUT_DISABLE PIOCON0&=0xFD //P1.1 as PWM1 +#define PWM0_P12_OUTPUT_DISABLE PIOCON0&=0xFE //P1.2 as PWM0 output disable +#define ALL_PWM_OUTPUT_DISABLE PIOCON0=0x00;PIOCON1=0x00 +//--------- PWM I/O Polarity Control --------------------------- +#define PWM5_OUTPUT_INVERSE PNP|=0x20 +#define PWM4_OUTPUT_INVERSE PNP|=0x10 +#define PWM3_OUTPUT_INVERSE PNP|=0x08 +#define PWM2_OUTPUT_INVERSE PNP|=0x04 +#define PWM1_OUTPUT_INVERSE PNP|=0x02 +#define PWM0_OUTPUT_INVERSE PNP|=0x01 +#define PWM_OUTPUT_ALL_INVERSE PNP=0xFF +#define PWM5_OUTPUT_NORMAL PNP&=0xDF +#define PWM4_OUTPUT_NORMAL PNP&=0xEF +#define PWM3_OUTPUT_NORMAL PNP&=0xF7 +#define PWM2_OUTPUT_NORMAL PNP&=0xFB +#define PWM1_OUTPUT_NORMAL PNP&=0xFD +#define PWM0_OUTPUT_NORMAL PNP&=0xFE +#define PWM_OUTPUT_ALL_NORMAL PNP=0x00 +//--------- PWM type define ------------------------------------ +#define PWM_EDGE_TYPE PWMCON1&=~SET_BIT4 +#define PWM_CENTER_TYPE PWMCON1|=SET_BIT4 +//--------- PWM mode define ------------------------------------ +#define PWM_IMDEPENDENT_MODE PWMCON1&=0x3F +#define PWM_COMPLEMENTARY_MODE PWMCON1|=0x40;PWMCON1&=0x7F +#define PWM_SYNCHRONIZED_MODE PWMCON1|=0x80;PWMCON1&=0xBF +#define PWM_GP_MODE_ENABLE PWMCON1|=0x20 +#define PWM_GP_MODE_DISABLE PWMCON1&=0xDF +//--------- PMW interrupt setting ------------------------------ +#define PWM_FALLING_INT BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xCF;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define PWM_RISING_INT BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC|=0x10;PWMCON0&=0xDF;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define PWM_CENTRAL_POINT_INT BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC|=0x20;PWMCON0&=0xEF;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define PWM_PERIOD_END_INT BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC|=0x30;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +//--------- PWM interrupt pin select --------------------------- +#define PWM_INT_PWM0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xF8;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define PWM_INT_PWM1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xF8;PWMINTC|=0x01;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define PWM_INT_PWM2 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xF8;PWMINTC|=0x02;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define PWM_INT_PWM3 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xF8;PWMINTC|=0x03;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define PWM_INT_PWM4 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xF8;PWMINTC|=0x04;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define PWM_INT_PWM5 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xF8;PWMINTC|=0x05;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +//--------- PWM Dead time setting ------------------------------ +#define PWM45_DEADTIME_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN|=0x04;EA=BIT_TMP +#define PWM34_DEADTIME_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN|=0x02;EA=BIT_TMP +#define PWM01_DEADTIME_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN|=0x01;EA=BIT_TMP + +/***************************************************************************************** +* For ADC INIT setting +*****************************************************************************************/ +#define Enable_ADC_AIN0 ADCCON0&=0xF0;P17_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT0;ADCCON1|=SET_BIT0 //P17 +#define Enable_ADC_AIN1 ADCCON0&=0xF0;ADCCON0|=0x01;P30_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT1;ADCCON1|=SET_BIT0 //P30 +#define Enable_ADC_AIN2 ADCCON0&=0xF0;ADCCON0|=0x02;P07_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT2;ADCCON1|=SET_BIT0 //P07 +#define Enable_ADC_AIN3 ADCCON0&=0xF0;ADCCON0|=0x03;P06_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT3;ADCCON1|=SET_BIT0 //P06 +#define Enable_ADC_AIN4 ADCCON0&=0xF0;ADCCON0|=0x04;P05_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT4;ADCCON1|=SET_BIT0 //P05 +#define Enable_ADC_AIN5 ADCCON0&=0xF0;ADCCON0|=0x05;P04_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT5;ADCCON1|=SET_BIT0 //P04 +#define Enable_ADC_AIN6 ADCCON0&=0xF0;ADCCON0|=0x06;P03_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT6;ADCCON1|=SET_BIT0 //P03 +#define Enable_ADC_AIN7 ADCCON0&=0xF0;ADCCON0|=0x07;P11_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT7;ADCCON1|=SET_BIT0 //P11 +#define Enable_ADC_BandGap ADCCON0|=SET_BIT3;ADCCON0&=0xF8;ADCCON1|=SET_BIT0 //Band-gap 1.22V +#define Disable_ADC ADCCON1&=0xFE; + +#define PWM0_FALLINGEDGE_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1 +#define PWM2_FALLINGEDGE_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0|=SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1 +#define PWM4_FALLINGEDGE_TRIG_ADC ADCCON0|=SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1 +#define PWM0_RISINGEDGE_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1 +#define PWM2_RISINGEDGE_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0|=SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1 +#define PWM4_RISINGEDGE_TRIG_ADC ADCCON0|=SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1 +#define PWM0_CENTRAL_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1|=SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1 +#define PWM2_CENTRAL_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0|=SET_BIT4;ADCCON1|=SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1 +#define PWM4_CENTRAL_TRIG_ADC ADCCON0|=SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1|=SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1 +#define PWM0_END_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1|=SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1 +#define PWM2_END_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0|=SET_BIT4;ADCCON1|=SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1 +#define PWM4_END_TRIG_ADC ADCCON0|=SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1|=SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1 + +#define P04_FALLINGEDGE_TRIG_ADC ADCCON0|=0x30;ADCCON1&=0xF3;ADCCON1|=SET_BIT1;ADCCON1&=~SET_BIT6 +#define P13_FALLINGEDGE_TRIG_ADC ADCCON0|=0x30;ADCCON1&=0xF3;ADCCON1|=SET_BIT1;ADCCON1|=SET_BIT6 +#define P04_RISINGEDGE_TRIG_ADC ADCCON0|=0x30;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1;ADCCON1&=~SET_BIT6 +#define P13_RISINGEDGE_TRIG_ADC ADCCON0|=0x30;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1;ADCCON1|=SET_BIT6 + +/***************************************************************************************** +* For SPI INIT setting +*****************************************************************************************/ +#define SPICLK_DIV2 clr_SPR0;clr_SPR1 +#define SPICLK_DIV4 set_SPR0;clr_SPR1 +#define SPICLK_DIV8 clr_SPR0;set_SPR1 +#define SPICLK_DIV16 set_SPR0;set_SPR1 +#define Enable_SPI_Interrupt set_ESPI;set_EA +#define SS P15 + diff --git a/fw/n76e003/common/inc/N76E003.h b/fw/n76e003/common/inc/N76E003.h new file mode 100755 index 0000000..9d27a47 --- /dev/null +++ b/fw/n76e003/common/inc/N76E003.h @@ -0,0 +1,306 @@ +/*-------------------------------------------------------------------------- +N76E003.H + +Header file for Nuvoton N76E003 (SDCC version) +--------------------------------------------------------------------------*/ +#ifndef N76E003_H +#define N76E003_H + +__sfr __at (0x80) P0; +__sfr __at (0x81) SP; +__sfr __at (0x82) DPL; +__sfr __at (0x83) DPH; +__sfr __at (0x84) RCTRIM0; +__sfr __at (0x85) RCTRIM1; +__sfr __at (0x86) RWK; +__sfr __at (0x87) PCON; + +__sfr __at (0x88) TCON; +__sfr __at (0x89) TMOD; +__sfr __at (0x8A) TL0; +__sfr __at (0x8B) TL1; +__sfr __at (0x8C) TH0; +__sfr __at (0x8D) TH1; +__sfr __at (0x8E) CKCON; +__sfr __at (0x8F) WKCON; + +__sfr __at (0x90) P1; +__sfr __at (0x91) SFRS; //TA Protection +__sfr __at (0x92) CAPCON0; +__sfr __at (0x93) CAPCON1; +__sfr __at (0x94) CAPCON2; +__sfr __at (0x95) CKDIV; +__sfr __at (0x96) CKSWT; //TA Protection +__sfr __at (0x97) CKEN; //TA Protection + +__sfr __at (0x98) SCON; +__sfr __at (0x99) SBUF; +__sfr __at (0x9A) SBUF_1; +__sfr __at (0x9B) EIE; +__sfr __at (0x9C) EIE1; +__sfr __at (0x9F) CHPCON; //TA Protection + +__sfr __at (0xA0) P2; +__sfr __at (0xA2) AUXR1; +__sfr __at (0xA3) BODCON0; //TA Protection +__sfr __at (0xA4) IAPTRG; //TA Protection +__sfr __at (0xA5) IAPUEN; //TA Protection +__sfr __at (0xA6) IAPAL; +__sfr __at (0xA7) IAPAH; + +__sfr __at (0xA8) IE; +__sfr __at (0xA9) SADDR; +__sfr __at (0xAA) WDCON; //TA Protection +__sfr __at (0xAB) BODCON1; //TA Protection +__sfr __at (0xAC) P3M1; +__sfr __at (0xAC) P3S; //Page1 +__sfr __at (0xAD) P3M2; +__sfr __at (0xAD) P3SR; //Page1 +__sfr __at (0xAE) IAPFD; +__sfr __at (0xAF) IAPCN; + +__sfr __at (0xB0) P3; +__sfr __at (0xB1) P0M1; +__sfr __at (0xB1) P0S; //Page1 +__sfr __at (0xB2) P0M2; +__sfr __at (0xB2) P0SR; //Page1 +__sfr __at (0xB3) P1M1; +__sfr __at (0xB3) P1S; //Page1 +__sfr __at (0xB4) P1M2; +__sfr __at (0xB4) P1SR; //Page1 +__sfr __at (0xB5) P2S; +__sfr __at (0xB7) IPH; +__sfr __at (0xB7) PWMINTC; //Page1 + +__sfr __at (0xB8) IP; +__sfr __at (0xB9) SADEN; +__sfr __at (0xBA) SADEN_1; +__sfr __at (0xBB) SADDR_1; +__sfr __at (0xBC) I2DAT; +__sfr __at (0xBD) I2STAT; +__sfr __at (0xBE) I2CLK; +__sfr __at (0xBF) I2TOC; + +__sfr __at (0xC0) I2CON; +__sfr __at (0xC1) I2ADDR; +__sfr __at (0xC2) ADCRL; +__sfr __at (0xC3) ADCRH; +__sfr __at (0xC4) T3CON; +__sfr __at (0xC4) PWM4H; //Page1 +__sfr __at (0xC5) RL3; +__sfr __at (0xC5) PWM5H; //Page1 +__sfr __at (0xC6) RH3; +__sfr __at (0xC6) PIOCON1; //Page1 +__sfr __at (0xC7) TA; + +__sfr __at (0xC8) T2CON; +__sfr __at (0xC9) T2MOD; +__sfr __at (0xCA) RCMP2L; +__sfr __at (0xCB) RCMP2H; +__sfr __at (0xCC) TL2; +__sfr __at (0xCC) PWM4L; //Page1 +__sfr __at (0xCD) TH2; +__sfr __at (0xCD) PWM5L; //Page1 +__sfr __at (0xCE) ADCMPL; +__sfr __at (0xCF) ADCMPH; + +__sfr __at (0xD0) PSW; +__sfr __at (0xD1) PWMPH; +__sfr __at (0xD2) PWM0H; +__sfr __at (0xD3) PWM1H; +__sfr __at (0xD4) PWM2H; +__sfr __at (0xD5) PWM3H; +__sfr __at (0xD6) PNP; +__sfr __at (0xD7) FBD; + +__sfr __at (0xD8) PWMCON0; +__sfr __at (0xD9) PWMPL; +__sfr __at (0xDA) PWM0L; +__sfr __at (0xDB) PWM1L; +__sfr __at (0xDC) PWM2L; +__sfr __at (0xDD) PWM3L; +__sfr __at (0xDE) PIOCON0; +__sfr __at (0xDF) PWMCON1; + +__sfr __at (0xE0) ACC; +__sfr __at (0xE1) ADCCON1; +__sfr __at (0xE2) ADCCON2; +__sfr __at (0xE3) ADCDLY; +__sfr __at (0xE4) C0L; +__sfr __at (0xE5) C0H; +__sfr __at (0xE6) C1L; +__sfr __at (0xE7) C1H; + +__sfr __at (0xE8) ADCCON0; +__sfr __at (0xE9) PICON; +__sfr __at (0xEA) PINEN; +__sfr __at (0xEB) PIPEN; +__sfr __at (0xEC) PIF; +__sfr __at (0xED) C2L; +__sfr __at (0xEE) C2H; +__sfr __at (0xEF) EIP; + +__sfr __at (0xF0) B; +__sfr __at (0xF1) CAPCON3; +__sfr __at (0xF2) CAPCON4; +__sfr __at (0xF3) SPCR; +__sfr __at (0xF3) SPCR2; //Page1 +__sfr __at (0xF4) SPSR; +__sfr __at (0xF5) SPDR; +__sfr __at (0xF6) AINDIDS; +__sfr __at (0xF7) EIPH; + +__sfr __at (0xF8) SCON_1; +__sfr __at (0xF9) PDTEN; //TA Protection +__sfr __at (0xFA) PDTCNT; //TA Protection +__sfr __at (0xFB) PMEN; +__sfr __at (0xFC) PMD; +__sfr __at (0xFE) EIP1; +__sfr __at (0xFF) EIPH1; + +/* BIT Registers */ +/* SCON_1 */ +__sbit __at (0xFF) SM0_1 ; // SCON_1^7; +__sbit __at (0xFF) FE_1 ; // SCON_1^7; +__sbit __at (0xFE) SM1_1 ; // SCON_1^6; +__sbit __at (0xFD) SM2_1 ; // SCON_1^5; +__sbit __at (0xFC) REN_1 ; // SCON_1^4; +__sbit __at (0xFB) TB8_1 ; // SCON_1^3; +__sbit __at (0xFA) RB8_1 ; // SCON_1^2; +__sbit __at (0xF9) TI_1 ; // SCON_1^1; +__sbit __at (0xF8) RI_1 ; // SCON_1^0; + +/* ADCCON0 */ +__sbit __at (0xEF) ADCF ; // ADCCON0^7; +__sbit __at (0xEE) ADCS ; // ADCCON0^6; +__sbit __at (0xED) ETGSEL1 ; // ADCCON0^5; +__sbit __at (0xEC) ETGSEL0 ; // ADCCON0^4; +__sbit __at (0xEB) ADCHS3 ; // ADCCON0^3; +__sbit __at (0xEA) ADCHS2 ; // ADCCON0^2; +__sbit __at (0xE9) ADCHS1 ; // ADCCON0^1; +__sbit __at (0xE8) ADCHS0 ; // ADCCON0^0; + +/* PWMCON0 */ +__sbit __at (0xDF) PWMRUN ; // PWMCON0^7; +__sbit __at (0xDE) LOAD ; // PWMCON0^6; +__sbit __at (0xDD) PWMF ; // PWMCON0^5; +__sbit __at (0xDC) CLRPWM ; // PWMCON0^4; + + +/* PSW */ +__sbit __at (0xD7) CY ; // PSW^7; +__sbit __at (0xD6) AC ; // PSW^6; +__sbit __at (0xD5) F0 ; // PSW^5; +__sbit __at (0xD4) RS1 ; // PSW^4; +__sbit __at (0xD3) RS0 ; // PSW^3; +__sbit __at (0xD2) OV ; // PSW^2; +__sbit __at (0xD0) P ; // PSW^0; + +/* T2CON */ +__sbit __at (0xCF) TF2 ; // T2CON^7; +__sbit __at (0xCA) TR2 ; // T2CON^2; +__sbit __at (0xC8) CM_RL2 ; // T2CON^0; + +/* I2CON */ +__sbit __at (0xC6) I2CEN ; // I2CON^6; +__sbit __at (0xC5) STA ; // I2CON^5; +__sbit __at (0xC4) STO ; // I2CON^4; +__sbit __at (0xC3) SI ; // I2CON^3; +__sbit __at (0xC2) AA ; // I2CON^2; +__sbit __at (0xC0) I2CPX ; // I2CON^0; + +/* IP */ +__sbit __at (0xBE) PADC ; // IP^6; +__sbit __at (0xBD) PBOD ; // IP^5; +__sbit __at (0xBC) PS ; // IP^4; +__sbit __at (0xBB) PT1 ; // IP^3; +__sbit __at (0xBA) PX1 ; // IP^2; +__sbit __at (0xB9) PT0 ; // IP^1; +__sbit __at (0xB8) PX0 ; // IP^0; + +/* P3 */ +__sbit __at (0xB0) P30 ;// P3^0; + + +/* IE */ +__sbit __at (0xAF) EA ; // IE^7; +__sbit __at (0xAE) EADC ; // IE^6; +__sbit __at (0xAD) EBOD ; // IE^5; +__sbit __at (0xAC) ES ; // IE^4; +__sbit __at (0xAB) ET1 ; // IE^3; +__sbit __at (0xAA) EX1 ; // IE^2; +__sbit __at (0xA9) ET0 ; // IE^1; +__sbit __at (0xA8) EX0 ; // IE^0; + +/* P2 */ +__sbit __at (0xA0) P20 ; // P2^0; + +/* SCON */ +__sbit __at (0x9F) SM0 ; // SCON^7; +__sbit __at (0x9F) FE ; // SCON^7; +__sbit __at (0x9E) SM1 ; // SCON^6; +__sbit __at (0x9D) SM2 ; // SCON^5; +__sbit __at (0x9C) REN ; // SCON^4; +__sbit __at (0x9B) TB8 ; // SCON^3; +__sbit __at (0x9A) RB8 ; // SCON^2; +__sbit __at (0x99) TI ; // SCON^1; +__sbit __at (0x98) RI ; // SCON^0; + +/* P1 */ +__sbit __at (0x97) P17; // P1^7; +__sbit __at (0x96) P16; // P1^6; +__sbit __at (0x96) TXD_1; // P1^6; +__sbit __at (0x95) P15; // P1^5; +__sbit __at (0x94) P14; // P1^4; +__sbit __at (0x94) SDA; // P1^4; +__sbit __at (0x93) P13; // P1^3; +__sbit __at (0x93) SCL; // P1^3; +__sbit __at (0x92) P12 ; // P1^2; +__sbit __at (0x91) P11 ; // P1^1; +__sbit __at (0x90) P10 ; // P1^0; + +/* TCON */ +__sbit __at (0x8F) TF1 ; // TCON^7; +__sbit __at (0x8E) TR1 ; // TCON^6; +__sbit __at (0x8D) TF0 ; // TCON^5; +__sbit __at (0x8C) TR0 ; // TCON^4; +__sbit __at (0x8B) IE1 ; // TCON^3; +__sbit __at (0x8A) IT1 ; // TCON^2; +__sbit __at (0x89) IE0 ; // TCON^1; +__sbit __at (0x88) IT0 ; // TCON^0; + +/* P0 */ + +__sbit __at (0x87) P07 ; // P0^7; +__sbit __at (0x87) RXD ; // P0^7; +__sbit __at (0x86) P06 ; // P0^6; +__sbit __at (0x86) TXD ; // P0^6; +__sbit __at (0x85) P05 ; // P0^5; +__sbit __at (0x84) P04 ; // P0^4; +__sbit __at (0x84) STADC ; // P0^4; +__sbit __at (0x83) P03 ; // P0^3; +__sbit __at (0x82) P02 ; // P0^2; +__sbit __at (0x82) RXD_1 ; // P0^2; +__sbit __at (0x81) P01 ; // P0^1; +__sbit __at (0x81) MISO ; // P0^1; +__sbit __at (0x80) P00 ; // P0^0; +__sbit __at (0x80) MOSI ; // P0^0; + +#endif + + + + + + + + + + + + + + + + + diff --git a/fw/n76e003/common/inc/SFR_Macro.h b/fw/n76e003/common/inc/SFR_Macro.h new file mode 100755 index 0000000..8c6ad27 --- /dev/null +++ b/fw/n76e003/common/inc/SFR_Macro.h @@ -0,0 +1,1178 @@ + +/**** P0 80H *****/ +#define set_P00 P00 = 1 +#define set_P01 P01 = 1 +#define set_P02 P02 = 1 +#define set_P03 P03 = 1 +#define set_P04 P04 = 1 +#define set_P05 P05 = 1 +#define set_P06 P06 = 1 +#define set_P07 P07 = 1 + +#define clr_P00 P00 = 0 +#define clr_P01 P01 = 0 +#define clr_P02 P02 = 0 +#define clr_P03 P03 = 0 +#define clr_P04 P04 = 0 +#define clr_P05 P05 = 0 +#define clr_P06 P06 = 0 +#define clr_P07 P07 = 0 + +//**** SP 81H **** +//**** DPH 82H **** +//**** DPL 83H **** +//**** RWK 86H **** + +//**** PCON 87H ***** +#define set_SMOD PCON |= SET_BIT7 +#define set_SMOD0 PCON |= SET_BIT6 +#define set_POF PCON |= SET_BIT4 +#define set_GF1 PCON |= SET_BIT3 +#define set_GF0 PCON |= SET_BIT2 +#define set_PD PCON |= SET_BIT1 +#define set_IDL PCON |= SET_BIT0 + +#define clr_SMOD PCON &= ~SET_BIT7 +#define clr_SMOD0 PCON &= ~SET_BIT6 +#define clr_POF PCON &= ~SET_BIT4 +#define clr_GF1 PCON &= ~SET_BIT3 +#define clr_GF0 PCON &= ~SET_BIT2 +#define clr_PD PCON &= ~SET_BIT1 +#define clr_IDL PCON &= ~SET_BIT0 + +/**** TCON 88H ****/ +#define set_TF1 TF1 = 1 +#define set_TR1 TR1 = 1 +#define set_TF0 TF0 = 1 +#define set_TR0 TR0 = 1 +#define set_IE1 IE1 = 1 +#define set_IT1 IT1 = 1 +#define set_IE0 IE0 = 1 +#define set_IT0 IT0 = 1 + +#define clr_TF1 TF1 = 0 +#define clr_TR1 TR1 = 0 +#define clr_TF0 TF0 = 0 +#define clr_TR0 TR0 = 0 +#define clr_IE1 IE1 = 0 +#define clr_IT1 IT1 = 0 +#define clr_IE0 IE0 = 0 +#define clr_IT0 IT0 = 0 + +//**** TMOD 89H **** +#define set_GATE_T1 TMOD |= SET_BIT7 +#define set_CT_T1 TMOD |= SET_BIT6 +#define set_M1_T1 TMOD |= SET_BIT5 +#define set_M0_T1 TMOD |= SET_BIT4 +#define set_GATE_T0 TMOD |= SET_BIT3 +#define set_CT_T0 TMOD |= SET_BIT2 +#define set_M1_T0 TMOD |= SET_BIT1 +#define set_M0_T0 TMOD |= SET_BIT0 + +#define clr_GATE_T1 TMOD &= ~SET_BIT7 +#define clr_CT_T1 TMOD &= ~SET_BIT6 +#define clr_M1_T1 TMOD &= ~SET_BIT5 +#define clr_M0_T1 TMOD &= ~SET_BIT4 +#define clr_GATE_T0 TMOD &= ~SET_BIT3 +#define clr_CT_T0 TMOD &= ~SET_BIT2 +#define clr_M1_T0 TMOD &= ~SET_BIT1 +#define clr_M0_T0 TMOD &= ~SET_BIT0 + +//**** TH1 8AH **** +//**** TH0 8BH **** +//**** TL1 8CH **** +//**** TL0 8DH **** + +//**** CKCON 8EH **** +#define set_PWMCKS CKCON |= SET_BIT6 +#define set_T1M CKCON |= SET_BIT4 +#define set_T0M CKCON |= SET_BIT3 +#define set_CLOEN CKCON |= SET_BIT1 + +#define clr_PWMCKS CKCON &= ~SET_BIT6 +#define clr_T1M CKCON &= ~SET_BIT4 +#define clr_T0M CKCON &= ~SET_BIT3 +#define clr_CLOEN CKCON &= ~SET_BIT1 + +//**** WKCON 8FH **** +#define set_WKTCK WKCON |= SET_BIT5 +#define set_WKTF WKCON |= SET_BIT4 +#define set_WKTR WKCON |= SET_BIT3 +#define set_WKPS2 WKCON |= SET_BIT2 +#define set_WKPS1 WKCON |= SET_BIT1 +#define set_WKPS0 WKCON |= SET_BIT0 + +#define clr_WKTCK WKCON &= ~SET_BIT5 +#define clr_WKTF WKCON &= ~SET_BIT4 +#define clr_WKTR WKCON &= ~SET_BIT3 +#define clr_WKPS2 WKCON &= ~SET_BIT2 +#define clr_WKPS1 WKCON &= ~SET_BIT1 +#define clr_WKPS0 WKCON &= ~SET_BIT0 + +/**** P1 90H *****/ +#define set_P10 P10 = 1 +#define set_P11 P11 = 1 +#define set_P12 P12 = 1 +#define set_P13 P13 = 1 +#define set_P14 P14 = 1 +#define set_P15 P15 = 1 +#define set_P16 P16 = 1 +#define set_P17 P17 = 1 + +#define clr_P10 P10 = 0 +#define clr_P11 P11 = 0 +#define clr_P12 P12 = 0 +#define clr_P13 P13 = 0 +#define clr_P14 P14 = 0 +#define clr_P15 P15 = 0 +#define clr_P16 P16 = 0 +#define clr_P17 P17 = 0 + +//****SFRS 91H **** +#define set_SFRPAGE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=SET_BIT0;EA=BIT_TMP +#define clr_SFRPAGE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS&=~SET_BIT0;EA=BIT_TMP + +//****CAPCON0 92H **** +#define set_CAPEN2 CAPCON0 |= SET_BIT6 +#define set_CAPEN1 CAPCON0 |= SET_BIT5 +#define set_CAPEN0 CAPCON0 |= SET_BIT4 +#define set_CAPF2 CAPCON0 |= SET_BIT2 +#define set_CAPF1 CAPCON0 |= SET_BIT1 +#define set_CAPF0 CAPCON0 |= SET_BIT0 + +#define clr_CAPEN2 CAPCON0 &= ~SET_BIT6 +#define clr_CAPEN1 CAPCON0 &= ~SET_BIT5 +#define clr_CAPEN0 CAPCON0 &= ~SET_BIT4 +#define clr_CAPF2 CAPCON0 &= ~SET_BIT2 +#define clr_CAPF1 CAPCON0 &= ~SET_BIT1 +#define clr_CAPF0 CAPCON0 &= ~SET_BIT0 + +//**** CAPCON1 93H **** +#define set_CAP2LS1 CAPCON1 |= SET_BIT5 +#define set_CAP2LS0 CAPCON1 |= SET_BIT4 +#define set_CAP1LS1 CAPCON1 |= SET_BIT3 +#define set_CAP1LS0 CAPCON1 |= SET_BIT2 +#define set_CAP0LS1 CAPCON1 |= SET_BIT1 +#define set_CAP0LS0 CAPCON1 |= SET_BIT0 + +#define clr_CAP2LS1 CAPCON1 &= ~SET_BIT5 +#define clr_CAP2LS0 CAPCON1 &= ~SET_BIT4 +#define clr_CAP1LS1 CAPCON1 &= ~SET_BIT3 +#define clr_CAP1LS0 CAPCON1 &= ~SET_BIT2 +#define clr_CAP0LS1 CAPCON1 &= ~SET_BIT1 +#define clr_CAP0LS0 CAPCON1 &= ~SET_BIT0 + +//**** CAPCON2 94H **** +#define set_ENF2 CAPCON2 |= SET_BIT6 +#define set_ENF1 CAPCON2 |= SET_BIT5 +#define set_ENF0 CAPCON2 |= SET_BIT4 + +#define clr_ENF2 CAPCON2 &= ~SET_BIT6 +#define clr_ENF1 CAPCON2 &= ~SET_BIT5 +#define clr_ENF0 CAPCON2 &= ~SET_BIT4 + +//**** CKDIV 95H **** + +//**** CKSWT 96H **** TA protect register +#define set_HIRCST BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT|=SET_BIT5;EA=BIT_TMP; +#define set_LIRCST BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT|=SET_BIT4;EA=BIT_TMP; +#define set_ECLKST BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT|=SET_BIT3;EA=BIT_TMP; +#define set_OSC1 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT|=SET_BIT2;EA=BIT_TMP; +#define set_OSC0 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT|=SET_BIT1;EA=BIT_TMP; + +#define clr_HIRCST BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT&=~SET_BIT5;EA=BIT_TMP; +#define clr_LIRCST BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT&=~SET_BIT4;EA=BIT_TMP; +#define clr_ECLKST BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT&=~SET_BIT3;EA=BIT_TMP; +#define clr_OSC1 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT&=~SET_BIT2;EA=BIT_TMP; +#define clr_OSC0 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKSWT&=~SET_BIT1;EA=BIT_TMP; + +//**** CKEN 97H **** TA protect register +#define set_EXTEN1 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKEN|=SET_BIT7;EA=BIT_TMP; +#define set_EXTEN0 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKEN|=SET_BIT6;EA=BIT_TMP; +#define set_HIRCEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKEN|=SET_BIT5;EA=BIT_TMP; +#define set_CKSWTF BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKEN|=SET_BIT0;EA=BIT_TMP; + +#define clr_EXTEN1 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKEN&=~SET_BIT7;EA=BIT_TMP; +#define clr_EXTEN0 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKEN&=~SET_BIT6;EA=BIT_TMP; +#define clr_HIRCEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKEN&=~SET_BIT5;EA=BIT_TMP; +#define clr_CKSWTF BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CKEN&=~SET_BIT0;EA=BIT_TMP; + +//**** SCON 98H **** +#define set_FE FE = 1 +#define set_SM1 SM1 = 1 +#define set_SM2 SM2 = 1 +#define set_REN REN = 1 +#define set_TB8 TB8 = 1 +#define set_RB8 RB8 = 1 +#define set_TI TI = 1 +#define set_RI RI = 1 + +#define clr_FE FE = 0 +#define clr_SM1 SM1 = 0 +#define clr_SM2 SM2 = 0 +#define clr_REN REN = 0 +#define clr_TB8 TB8 = 0 +#define clr_RB8 RB8 = 0 +#define clr_TI TI = 0 +#define clr_RI RI = 0 + +//**** SBUF 99H **** +//**** SBUF_1 9AH **** + +//**** EIE 9BH **** +#define set_ET2 EIE |= SET_BIT7 +#define set_ESPI EIE |= SET_BIT6 +#define set_EFB EIE |= SET_BIT5 +#define set_EWDT EIE |= SET_BIT4 +#define set_EPWM EIE |= SET_BIT3 +#define set_ECAP EIE |= SET_BIT2 +#define set_EPI EIE |= SET_BIT1 +#define set_EI2C EIE |= SET_BIT0 + +#define clr_ET2 EIE &= ~SET_BIT7 +#define clr_ESPI EIE &= ~SET_BIT6 +#define clr_EFB EIE &= ~SET_BIT5 +#define clr_EWDT EIE &= ~SET_BIT4 +#define clr_EPWM EIE &= ~SET_BIT3 +#define clr_ECAP EIE &= ~SET_BIT2 +#define clr_EPI EIE &= ~SET_BIT1 +#define clr_EI2C EIE &= ~SET_BIT0 + +//**** EIE1 9CH **** +#define set_EWKT EIE1 |= SET_BIT2 +#define set_ET3 EIE1 |= SET_BIT1 +#define set_ES_1 EIE1 |= SET_BIT0 + +#define clr_EWKT EIE1 &= ~SET_BIT2 +#define clr_ET3 EIE1 &= ~SET_BIT1 +#define clr_ES_1 EIE1 &= ~SET_BIT0 + +//**** CHPCON 9DH **** TA protect register +#define set_SWRST BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON|=SET_BIT7 ;EA=BIT_TMP +#define set_IAPFF BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON|=SET_BIT6 ;EA=BIT_TMP +#define set_BS BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON|=SET_BIT1 ;EA=BIT_TMP +#define set_IAPEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON|=SET_BIT0 ;EA=BIT_TMP + +#define clr_SWRST BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON&=~SET_BIT7;EA=BIT_TMP +#define clr_IAPFF BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON&=~SET_BIT6;EA=BIT_TMP +#define clr_BS BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON&=~SET_BIT1;EA=BIT_TMP +#define clr_IAPEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON&=~SET_BIT0;EA=BIT_TMP + +//**** P2 A0H **** + +//**** AUXR1 A2H **** +#define set_SWRF AUXR1 |= SET_BIT7 +#define set_RSTPINF AUXR1 |= SET_BIT6 +#define set_HARDF AUXR1 |= SET_BIT5 +#define set_GF2 AUXR1 |= SET_BIT3 +#define set_UART0PX AUXR1 |= SET_BIT2 +#define set_DPS AUXR1 |= SET_BIT0 + +#define clr_SWRF AUXR1 &= ~SET_BIT7 +#define clr_RSTPINF AUXR1 &= ~SET_BIT6 +#define clr_HARDF AUXR1 &= ~SET_BIT5 +#define clr_GF2 AUXR1 &= ~SET_BIT3 +#define clr_UART0PX AUXR1 &= ~SET_BIT2 +#define clr_DPS AUXR1 &= ~SET_BIT0 + +//**** BODCON0 A3H **** TA protect register +#define set_BODEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0|=SET_BIT7;EA=BIT_TMP +#define set_BOV1 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0|=SET_BIT5;EA=BIT_TMP +#define set_BOV0 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0|=SET_BIT4;EA=BIT_TMP +#define set_BOF BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0|=SET_BIT3;EA=BIT_TMP +#define set_BORST BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0|=SET_BIT2;EA=BIT_TMP +#define set_BORF BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0|=SET_BIT1;EA=BIT_TMP +#define set_BOS BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0|=SET_BIT0;EA=BIT_TMP + +#define clr_BODEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0&=~SET_BIT7;EA=BIT_TMP +#define clr_BOV2 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0&=~SET_BIT6;EA=BIT_TMP +#define clr_BOV1 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0&=~SET_BIT5;EA=BIT_TMP +#define clr_BOV0 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0&=~SET_BIT4;EA=BIT_TMP +#define clr_BOF BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0&=~SET_BIT3;EA=BIT_TMP +#define clr_BORST BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0&=~SET_BIT2;EA=BIT_TMP +#define clr_BORF BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0&=~SET_BIT1;EA=BIT_TMP +#define clr_BOS BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON0&=~SET_BIT0;EA=BIT_TMP + +//**** IAPTRG A4H **** TA protect register +#define set_IAPGO BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;IAPTRG|=SET_BIT0 ;EA=BIT_TMP +#define clr_IAPGO BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;IAPTRG&=~SET_BIT0;EA=BIT_TMP + +//**** IAPUEN A5H **** TA protect register +#define set_CFUEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;IAPUEN|=SET_BIT2;EA=BIT_TMP +#define set_LDUEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;IAPUEN|=SET_BIT1;EA=BIT_TMP +#define set_APUEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;IAPUEN|=SET_BIT0;EA=BIT_TMP + +#define clr_CFUEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;IAPUEN&=~SET_BIT2;EA=BIT_TMP +#define clr_LDUEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;IAPUEN&=~SET_BIT1;EA=BIT_TMP +#define clr_APUEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;IAPUEN&=~SET_BIT0;EA=BIT_TMP + +//**** IAPAL A6H **** +//**** IAPAH A7H **** + +//**** IE A8H **** +#define set_EA EA = 1 +#define set_EADC EADC = 1 +#define set_EBOD EBOD = 1 +#define set_ES ES = 1 +#define set_ET1 ET1 = 1 +#define set_EX1 EX1 = 1 +#define set_ET0 ET0 = 1 +#define set_EX0 EX0 = 1 + +#define clr_EA EA = 0 +#define clr_EADC EADC = 0 +#define clr_EBOD EBOD = 0 +#define clr_ES ES = 0 +#define clr_ET1 ET1 = 0 +#define clr_EX1 EX1 = 0 +#define clr_ET0 ET0 = 0 +#define clr_EX0 EX0 = 0 + +//**** SADDR A9H **** + +//**** WDCON AAH **** TA protect register +#define set_WDTR BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON|=SET_BIT7;EA=BIT_TMP; +#define set_WDCLR BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON|=SET_BIT6;EA=BIT_TMP; +#define set_WDTF BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON|=SET_BIT5;EA=BIT_TMP; +#define set_WIDPD BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON|=SET_BIT4;EA=BIT_TMP; +#define set_WDTRF BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON|=SET_BIT3;EA=BIT_TMP; +#define set_WPS2 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON|=SET_BIT2;EA=BIT_TMP; +#define set_WPS1 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON|=SET_BIT1;EA=BIT_TMP; +#define set_WPS0 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON|=SET_BIT0;EA=BIT_TMP; + +#define clr_WDTEN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON&=~SET_BIT7;EA=BIT_TMP; +#define clr_WDCLR BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON&=~SET_BIT6;EA=BIT_TMP; +#define clr_WDTF BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON&=~SET_BIT5;EA=BIT_TMP; +#define clr_WDTRF BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON&=~SET_BIT3;EA=BIT_TMP; +#define clr_WPS2 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON&=~SET_BIT2;EA=BIT_TMP; +#define clr_WPS1 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON&=~SET_BIT1;EA=BIT_TMP; +#define clr_WPS0 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;WDCON&=~SET_BIT0;EA=BIT_TMP; + +//**** BODCON1 ABH **** TA protect register +#define set_LPBOD1 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON1|=SET_BIT2 ;EA=BIT_TMP; +#define set_LPBOD0 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON1|=SET_BIT1 ;EA=BIT_TMP; +#define set_BODFLT BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON1|=SET_BIT0 ;EA=BIT_TMP; + +#define clr_LPBOD1 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON1&=~SET_BIT2;EA=BIT_TMP; +#define clr_LPBOD0 BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON1&=~SET_BIT1;EA=BIT_TMP; +#define clr_BODFLT BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;BODCON1&=~SET_BIT0;EA=BIT_TMP; + + +//**** P3M1 ACH PAGE0 **** +#define set_P3M1_0 P3M1 |= SET_BIT0 +#define clr_P3M1_0 P3M1 &= ~SET_BIT0 + +//**** P3S ACH PAGE1 **** SFRS must set as 1 to modify this register +#define set_P3S_0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P3S|=SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P3S_0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P3S&=~SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +//**** P3M2 ADH PAGE0 **** +#define set_P3M2_0 P3M2 |= SET_BIT0 +#define clr_P3M2_0 P3M2 &= ~SET_BIT0 + +//**** P3SR ADH PAGE1 **** SFRS must set as 1 to modify this register +#define set_P3SR_0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P3SR|=SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P3SR_0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P3SR&=~SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +//**** IAPFD AEH **** + +//**** IAPCN AFH **** +#define set_FOEN IAPN |= SET_BIT5 +#define set_FCEN IAPN |= SET_BIT4 +#define set_FCTRL3 IAPN |= SET_BIT3 +#define set_FCTRL2 IAPN |= SET_BIT2 +#define set_FCTRL1 IAPN |= SET_BIT1 +#define set_FCTRL0 IAPN |= SET_BIT0 + +#define clr_FOEN IAPN &= ~SET_BIT5 +#define clr_FCEN IAPN &= ~SET_BIT4 +#define clr_FCTRL3 IAPN &= ~SET_BIT3 +#define clr_FCTRL2 IAPN &= ~SET_BIT2 +#define clr_FCTRL1 IAPN &= ~SET_BIT1 +#define clr_FCTRL0 IAPN &= ~SET_BIT0 + +//**** P3 B0H **** +#define set_P30 P30 = 1 +#define clr_P30 P30 = 0 + +//**** P0M1 B1H PAGE0 **** +#define set_P0M1_7 P0M1 |= SET_BIT7 +#define set_P0M1_6 P0M1 |= SET_BIT6 +#define set_P0M1_5 P0M1 |= SET_BIT5 +#define set_P0M1_4 P0M1 |= SET_BIT4 +#define set_P0M1_3 P0M1 |= SET_BIT3 +#define set_P0M1_2 P0M1 |= SET_BIT2 +#define set_P0M1_1 P0M1 |= SET_BIT1 +#define set_P0M1_0 P0M1 |= SET_BIT0 + +#define clr_P0M1_7 P0M1 &= ~SET_BIT7 +#define clr_P0M1_6 P0M1 &= ~SET_BIT6 +#define clr_P0M1_5 P0M1 &= ~SET_BIT5 +#define clr_P0M1_4 P0M1 &= ~SET_BIT4 +#define clr_P0M1_3 P0M1 &= ~SET_BIT3 +#define clr_P0M1_2 P0M1 &= ~SET_BIT2 +#define clr_P0M1_1 P0M1 &= ~SET_BIT1 +#define clr_P0M1_0 P0M1 &= ~SET_BIT0 + +//**** P0S B2H PAGE1 **** SFRS must set as 1 to modify this register +#define set_P0S_7 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S|=SET_BIT7;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0S_6 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S|=SET_BIT6;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0S_5 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S|=SET_BIT5;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0S_4 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S|=SET_BIT4;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0S_3 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S|=SET_BIT3;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0S_2 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S|=SET_BIT2;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0S_1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S|=SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0S_0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S|=SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +#define clr_P0S_7 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S&=~SET_BIT7;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0S_6 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S&=~SET_BIT6;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0S_5 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S&=~SET_BIT5;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0S_4 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S&=~SET_BIT4;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0S_3 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S&=~SET_BIT3;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0S_2 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S&=~SET_BIT2;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0S_1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S&=~SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0S_0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0S&=~SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +//**** P0M2 B2H PAGE0 **** +#define set_P0M2_7 P0M2 |= SET_BIT7 +#define set_P0M2_6 P0M2 |= SET_BIT6 +#define set_P0M2_5 P0M2 |= SET_BIT5 +#define set_P0M2_4 P0M2 |= SET_BIT4 +#define set_P0M2_3 P0M2 |= SET_BIT3 +#define set_P0M2_2 P0M2 |= SET_BIT2 +#define set_P0M2_1 P0M2 |= SET_BIT1 +#define set_P0M2_0 P0M2 |= SET_BIT0 + +#define clr_P0M2_7 P0M2 &= ~SET_BIT7 +#define clr_P0M2_6 P0M2 &= ~SET_BIT6 +#define clr_P0M2_5 P0M2 &= ~SET_BIT5 +#define clr_P0M2_4 P0M2 &= ~SET_BIT4 +#define clr_P0M2_3 P0M2 &= ~SET_BIT3 +#define clr_P0M2_2 P0M2 &= ~SET_BIT2 +#define clr_P0M2_1 P0M2 &= ~SET_BIT1 +#define clr_P0M2_0 P0M2 &= ~SET_BIT0 + + +//**** P0SR B0H PAGE1 **** SFRS must set as 1 to modify this register +#define set_P0SR_7 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR|=SET_BIT7;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0SR_6 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR|=SET_BIT6;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0SR_5 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR|=SET_BIT5;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0SR_4 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR|=SET_BIT4;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0SR_3 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR|=SET_BIT3;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0SR_2 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR|=SET_BIT2;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0SR_1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR|=SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P0SR_0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR|=SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +#define clr_P0SR_7 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR&=~SET_BIT7;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0SR_6 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR&=~SET_BIT6;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0SR_5 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR&=~SET_BIT5;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0SR_4 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR&=~SET_BIT4;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0SR_3 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR&=~SET_BIT3;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0SR_2 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR&=~SET_BIT2;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0SR_1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR&=~SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P0SR_0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P0SR&=~SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + + +//**** P1M1 B3H PAGE0 **** +#define set_P1M1_7 P1M1 |= SET_BIT7 +#define set_P1M1_6 P1M1 |= SET_BIT6 +#define set_P1M1_5 P1M1 |= SET_BIT5 +#define set_P1M1_4 P1M1 |= SET_BIT4 +#define set_P1M1_3 P1M1 |= SET_BIT3 +#define set_P1M1_2 P1M1 |= SET_BIT2 +#define set_P1M1_1 P1M1 |= SET_BIT1 +#define set_P1M1_0 P1M1 |= SET_BIT0 + +#define clr_P1M1_7 P1M1 &= ~SET_BIT7 +#define clr_P1M1_6 P1M1 &= ~SET_BIT6 +#define clr_P1M1_5 P1M1 &= ~SET_BIT5 +#define clr_P1M1_4 P1M1 &= ~SET_BIT4 +#define clr_P1M1_3 P1M1 &= ~SET_BIT3 +#define clr_P1M1_2 P1M1 &= ~SET_BIT2 +#define clr_P1M1_1 P1M1 &= ~SET_BIT1 +#define clr_P1M1_0 P1M1 &= ~SET_BIT0 + +//**** P1S B3H PAGE1 **** SFRS must set as 1 to modify this register +#define set_P1S_7 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S|=SET_BIT7;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1S_6 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S|=SET_BIT6;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1S_5 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S|=SET_BIT5;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1S_4 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S|=SET_BIT4;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1S_3 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S|=SET_BIT3;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1S_2 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S|=SET_BIT2;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1S_1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S|=SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1S_0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S|=SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +#define clr_P1S_7 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S&=~SET_BIT7;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1S_6 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S&=~SET_BIT6;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1S_5 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S&=~SET_BIT5;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1S_4 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S&=~SET_BIT4;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1S_3 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S&=~SET_BIT3;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1S_2 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S&=~SET_BIT2;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1S_1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S&=~SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1S_0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1S&=~SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +//**** P1M2 B4H PAGE0 **** +#define set_P12UP P1M2 |= SET_BIT2 +#define set_P1M2_1 P1M2 |= SET_BIT1 +#define set_P1M2_0 P1M2 |= SET_BIT0 + +#define clr_P12UP P1M2 &= ~SET_BIT2 +#define clr_P1M2_1 P1M2 &= ~SET_BIT1 +#define clr_P1M2_0 P1M2 &= ~SET_BIT0 + +//**** P1SR B4H PAGE1 **** SFRS must set as 1 to modify this register +#define set_P1SR_7 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR|=SET_BIT7;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1SR_6 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR|=SET_BIT6;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1SR_5 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR|=SET_BIT5;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1SR_4 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR|=SET_BIT4;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1SR_3 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR|=SET_BIT3;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1SR_2 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR|=SET_BIT2;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1SR_1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR|=SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_P1SR_0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR|=SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +#define clr_P1SR_7 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR&=~SET_BIT7;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1SR_6 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR&=~SET_BIT6;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1SR_5 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR&=~SET_BIT5;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1SR_4 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR&=~SET_BIT4;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1SR_3 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR&=~SET_BIT3;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1SR_2 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR&=~SET_BIT2;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1SR_1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR&=~SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_P1SR_0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;P1SR&=~SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + + +//**** P2S B5H **** +#define set_P2S_0 P2S |= SET_BIT0 +#define clr_P2S_0 P2S &= ~SET_BIT0 +#define set_T0OE P2S |= SET_BIT2 +#define clr_T0OE P2S &= ~SET_BIT2 + +//**** IPH B7H PAGE0 **** +#define set_PADCH IPH |= SET_BIT6 +#define set_PBODH IPH |= SET_BIT5 +#define set_PSH IPH |= SET_BIT4 +#define set_PT1H IPH |= SET_BIT3 +#define set_PX11 IPH |= SET_BIT2 +#define set_PT0H IPH |= SET_BIT1 +#define set_PX0H IPH |= SET_BIT0 + +#define clr_PADCH IPH &= ~SET_BIT6 +#define clr_PBODH IPH &= ~SET_BIT5 +#define clr_PSH IPH &= ~SET_BIT4 +#define clr_PT1H IPH &= ~SET_BIT3 +#define clr_PX11 IPH &= ~SET_BIT2 +#define clr_PT0H IPH &= ~SET_BIT1 +#define clr_PX0H IPH &= ~SET_BIT0 + +//**** PWMINTC B7H PAGE1 **** SFRS must set as 1 to modify this register +#define set_INTTYP1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC|=SET_BIT5;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_INTTYP0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC|=SET_BIT4;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_INTSEL2 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC|=SET_BIT2;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_INTSEL1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC|=SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_INTSEL0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC|=SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +#define clr_INTTYP1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=~SET_BIT5;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_INTTYP0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=~SET_BIT4;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_INTSEL2 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=~SET_BIT2;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_INTSEL1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=~SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_INTSEL0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=~SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +//**** IP B8H **** +#define set_PADC PADC = 1 +#define set_PBOD PBOD = 1 +#define set_PS PS = 1 +#define set_PT1 PT1 = 1 +#define set_PX1 PX1 = 1 +#define set_PT0 PT0 = 1 +#define set_PX0 PX0 = 1 + +#define clr_PADC PADC = 0 +#define clr_PBOD PBOD = 0 +#define clr_PS PS = 0 +#define clr_PT1 PT1 = 0 +#define clr_PX1 PX1 = 0 +#define clr_PT0 PT0 = 0 +#define clr_PX0 PX0 = 0 + +//**** SADEN B9H **** +//**** SADEN_1 8AH **** +//**** SADDR_1 BBH **** +//**** I2DAT BCH **** +//**** I2STAT BDH **** +//**** I2CLK BEH **** + +//**** I2TOC BFH **** +#define set_I2TOCEN I2TOC |= SET_BIT2 +#define set_DIV I2TOC |= SET_BIT1 +#define set_I2TOF I2TOC |= SET_BIT0 + +#define clr_I2TOCEN I2TOC &= ~SET_BIT2 +#define clr_DIV I2TOC &= ~SET_BIT1 +#define clr_I2TOF I2TOC &= ~SET_BIT0 + +//**** I2CON C0H **** +#define set_I2CEN I2CEN = 1 +#define set_STA STA = 1 +#define set_STO STO = 1 +#define set_SI SI = 1 +#define set_AA AA = 1 +#define set_I2CPX I2CPX = 1 + +#define clr_I2CEN I2CEN = 0 +#define clr_STA STA = 0 +#define clr_STO STO = 0 +#define clr_SI SI = 0 +#define clr_AA AA = 0 +#define clr_I2CPX I2CPX = 0 + +//**** I2ADDR C1H **** +#define set_GC I2ADDR |= SET_BIT0 +#define clr_GC I2ADDR &= ~SET_BIT0 + +//**** ADCRL C2H **** +//**** ADCRH C3H **** + +//**** T3CON C4H PAGE0 **** +#define set_SMOD_1 T3CON |= SET_BIT7 +#define set_SMOD0_1 T3CON |= SET_BIT6 +#define set_BRCK T3CON |= SET_BIT5 +#define set_TF3 T3CON |= SET_BIT4 +#define set_TR3 T3CON |= SET_BIT3 +#define set_T3PS2 T3CON |= SET_BIT2 +#define set_T3PS1 T3CON |= SET_BIT1 +#define set_T3PS0 T3CON |= SET_BIT0 + +#define clr_SMOD_1 T3CON &= ~SET_BIT7 +#define clr_SMOD0_1 T3CON &= ~SET_BIT6 +#define clr_BRCK T3CON &= ~SET_BIT5 +#define clr_TF3 T3CON &= ~SET_BIT4 +#define clr_TR3 T3CON &= ~SET_BIT3 +#define clr_T3PS2 T3CON &= ~SET_BIT2 +#define clr_T3PS1 T3CON &= ~SET_BIT1 +#define clr_T3PS0 T3CON &= ~SET_BIT0 + +//**** PWM4H C4H PAGE1 **** SFRS must set as 1 to modify this register +//**** RL3 C5H PAGE0 **** +//**** PWM5H C5H PAGE1 **** SFRS must set as 1 to modify this register +//**** RH3 C6H PAGE0 **** + +//**** PIOCON1 C6H PAGE1 **** SFRS must set as 1 to modify this register +#define set_PIO15 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PIOCON1|=SET_BIT5;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_PIO13 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PIOCON1|=SET_BIT3;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_PIO12 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PIOCON1|=SET_BIT2;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_PIO11 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PIOCON1|=SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +#define clr_PIO15 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PIOCON1&=~SET_BIT5;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_PIO13 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PIOCON1&=~SET_BIT3;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_PIO12 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PIOCON1&=~SET_BIT2;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_PIO11 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PIOCON1&=~SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +//**** T2CON C8H **** +#define set_TF2 TF2 = 1 +#define set_TR2 TR2 = 1 +#define set_CMRL2 CMRL2 = 1 + +#define clr_TF2 TF2 = 0 +#define clr_TR2 TR2 = 0 +#define clr_CMRL2 CMRL2 = 0 + +//**** T2MOD C9H **** +#define set_LDEN T2MOD |= SET_BIT7 +#define set_T2DIV2 T2MOD |= SET_BIT6 +#define set_T2DIV1 T2MOD |= SET_BIT5 +#define set_T2DIV0 T2MOD |= SET_BIT4 +#define set_CAPCR T2MOD |= SET_BIT3 +#define set_CMPCR T2MOD |= SET_BIT2 +#define set_LDTS1 T2MOD |= SET_BIT1 +#define set_LDTS0 T2MOD |= SET_BIT0 + +#define clr_LDEN T2MOD &= ~SET_BIT7 +#define clr_T2DIV2 T2MOD &= ~SET_BIT6 +#define clr_T2DIV1 T2MOD &= ~SET_BIT5 +#define clr_T2DIV0 T2MOD &= ~SET_BIT4 +#define clr_CAPCR T2MOD &= ~SET_BIT3 +#define clr_CMPCR T2MOD &= ~SET_BIT2 +#define clr_LDTS1 T2MOD &= ~SET_BIT1 +#define clr_LDTS0 T2MOD &= ~SET_BIT0 + +//**** RCMP2H CAH **** +//**** RCMP2L CBH **** +//**** TL2 CCH PAGE0 **** +//**** PWM4L CCH PAGE1 **** SFRS must set as 1 to modify this register +//**** TH2 CDH PAGE0 **** +//**** PWM5L CDH PAGE1 **** SFRS must set as 1 to modify this register +//**** ADCMPL CEH **** +//**** ADCMPH CFH **** + +/**** PSW D0H ****/ +#define set_CY CY = 1 +#define set_AC AC = 1 +#define set_F0 F0 = 1 +#define set_RS1 RS1 = 1 +#define set_RS0 RS0 = 1 +#define set_OV OV = 1 +#define set_P P = 1 + +#define clr_CY CY = 0 +#define clr_AC AC = 0 +#define clr_F0 F0 = 0 +#define clr_RS1 RS1 = 0 +#define clr_RS0 RS0 = 0 +#define clr_OV OV = 0 +#define clr_P P = 0 + +//**** PWMPH D1H **** +//**** PWM0H D2H **** +//**** PWM1H D3H **** +//**** PWM2H D4H **** +//**** PWM3H D5H **** + +//**** PNP D6H **** +#define set_PNP5 PNP |= SET_BIT5 +#define set_PNP4 PNP |= SET_BIT4 +#define set_PNP3 PNP |= SET_BIT3 +#define set_PNP2 PNP |= SET_BIT2 +#define set_PNP1 PNP |= SET_BIT1 +#define set_PNP0 PNP |= SET_BIT0 + +#define clr_PNP5 PNP &= ~SET_BIT5 +#define clr_PNP4 PNP &= ~SET_BIT4 +#define clr_PNP3 PNP &= ~SET_BIT3 +#define clr_PNP2 PNP &= ~SET_BIT2 +#define clr_PNP1 PNP &= ~SET_BIT1 +#define clr_PNP0 PNP &= ~SET_BIT0 + +//**** FBD D7H **** +#define set_FBF FBD |= SET_BIT7 +#define set_FBINLS FBD |= SET_BIT6 +#define set_FBD5 FBD |= SET_BIT5 +#define set_FBD4 FBD |= SET_BIT4 +#define set_FBD3 FBD |= SET_BIT3 +#define set_FBD2 FBD |= SET_BIT2 +#define set_FBD1 FBD |= SET_BIT1 +#define set_FBD0 FBD |= SET_BIT0 + +#define clr_FBF FBD &= ~SET_BIT7 +#define clr_FBINLS FBD &= ~SET_BIT6 +#define clr_FBD5 FBD &= ~SET_BIT5 +#define clr_FBD4 FBD &= ~SET_BIT4 +#define clr_FBD3 FBD &= ~SET_BIT3 +#define clr_FBD2 FBD &= ~SET_BIT2 +#define clr_FBD1 FBD &= ~SET_BIT1 +#define clr_FBD0 FBD &= ~SET_BIT0 + +/**** PWMCON0 D8H ****/ +#define set_PWMRUN PWMRUN = 1 +#define set_LOAD LOAD = 1 +#define set_PWMF PWMF = 1 +#define set_CLRPWM CLRPWM = 1 + +#define clr_PWMRUN PWMRUN = 0 +#define clr_LOAD LOAD = 0 +#define clr_PWMF PWMF = 0 +#define clr_CLRPWM CLRPWM = 0 + +//**** PWMPL D9H **** +//**** PWM0L DAH **** +//**** PWM1L DBH **** +//**** PWM2L DCH **** +//**** PWM3L DDH **** + +//**** PIOCON0 DEH **** +#define set_PIO05 PIOCON0 |= SET_BIT5 +#define set_PIO04 PIOCON0 |= SET_BIT4 +#define set_PIO03 PIOCON0 |= SET_BIT3 +#define set_PIO02 PIOCON0 |= SET_BIT2 +#define set_PIO01 PIOCON0 |= SET_BIT1 +#define set_PIO00 PIOCON0 |= SET_BIT0 + +#define clr_PIO05 PIOCON0 &= ~SET_BIT5 +#define clr_PIO04 PIOCON0 &= ~SET_BIT4 +#define clr_PIO03 PIOCON0 &= ~SET_BIT3 +#define clr_PIO02 PIOCON0 &= ~SET_BIT2 +#define clr_PIO01 PIOCON0 &= ~SET_BIT1 +#define clr_PIO00 PIOCON0 &= ~SET_BIT0 + +//**** PWMCON1 DFH **** +#define set_PWMMOD1 PWMCON1 |= SET_BIT7 +#define set_PWMMOD0 PWMCON1 |= SET_BIT6 +#define set_GP PWMCON1 |= SET_BIT5 +#define set_PWMTYP PWMCON1 |= SET_BIT4 +#define set_FBINEN PWMCON1 |= SET_BIT3 +#define set_PWMDIV2 PWMCON1 |= SET_BIT2 +#define set_PWMDIV1 PWMCON1 |= SET_BIT1 +#define set_PWMDIV0 PWMCON1 |= SET_BIT0 + +#define clr_PWMMOD1 PWMCON1 &= ~SET_BIT7 +#define clr_PWMMOD0 PWMCON1 &= ~SET_BIT6 +#define clr_GP PWMCON1 &= ~SET_BIT5 +#define clr_PWMTYP PWMCON1 &= ~SET_BIT4 +#define clr_FBINEN PWMCON1 &= ~SET_BIT3 +#define clr_PWMDIV2 PWMCON1 &= ~SET_BIT2 +#define clr_PWMDIV1 PWMCON1 &= ~SET_BIT1 +#define clr_PWMDIV0 PWMCON1 &= ~SET_BIT0 + +//**** ACC E0H **** + +//**** ADCCON1 E1H **** +#define set_STADCPX ADCCON1 |= SET_BIT6 +#define set_ETGTYP1 ADCCON1 |= SET_BIT3 +#define set_ETGTYP0 ADCCON1 |= SET_BIT2 +#define set_ADCEX ADCCON1 |= SET_BIT1 +#define set_ADCEN ADCCON1 |= SET_BIT0 + +#define clr_STADCPX ADCCON1 &= ~SET_BIT6 +#define clr_ETGTYP1 ADCCON1 &= ~SET_BIT3 +#define clr_ETGTYP0 ADCCON1 &= ~SET_BIT2 +#define clr_ADCEX ADCCON1 &= ~SET_BIT1 +#define clr_ADCEN ADCCON1 &= ~SET_BIT0 + +//**** ADCON2 E2H **** +#define set_ADFBEN ADCCON2 |= SET_BIT7 +#define set_ADCMPOP ADCCON2 |= SET_BIT6 +#define set_ADCMPEN ADCCON2 |= SET_BIT5 +#define set_ADCMPO ADCCON2 |= SET_BIT4 + +#define clr_ADFBEN ADCCON2 &= ~SET_BIT7 +#define clr_ADCMPOP ADCCON2 &= ~SET_BIT6 +#define clr_ADCMPEN ADCCON2 &= ~SET_BIT5 +#define clr_ADCMPO ADCCON2 &= ~SET_BIT4 + +//**** ADCDLY E3H **** +//**** C0L E4H **** +//**** C0H E5H **** +//**** C1L E6H **** +//**** C1H E7H **** + +//**** ADCCON0 EAH **** +#define set_ADCF ADCF = 1 +#define set_ADCS ADCS = 1 +#define set_ETGSEL1 ETGSEL1 = 1 +#define set_ETGSEL0 ETGSEL0 = 1 +#define set_ADCHS3 ADCHS3 = 1 +#define set_ADCHS2 ADCHS2 = 1 +#define set_ADCHS1 ADCHS1 = 1 +#define set_ADCHS0 ADCHS0 = 1 + +#define clr_ADCF ADCF = 0 +#define clr_ADCS ADCS = 0 +#define clr_ETGSEL1 ETGSEL1 = 0 +#define clr_ETGSEL0 ETGSEL0 = 0 +#define clr_ADCHS3 ADCHS3 = 0 +#define clr_ADCHS2 ADCHS2 = 0 +#define clr_ADCHS1 ADCHS1 = 0 +#define clr_ADCHS0 ADCHS0 = 0 + +//**** PICON E9H **** +#define set_PIT67 PICON |= SET_BIT7 +#define set_PIT45 PICON |= SET_BIT6 +#define set_PIT3 PICON |= SET_BIT5 +#define set_PIT2 PICON |= SET_BIT4 +#define set_PIT1 PICON |= SET_BIT3 +#define set_PIT0 PICON |= SET_BIT2 +#define set_PIPS1 PICON |= SET_BIT1 +#define set_PIPS0 PICON |= SET_BIT0 + +#define clr_PIT67 PICON &= ~SET_BIT7 +#define clr_PIT45 PICON &= ~SET_BIT6 +#define clr_PIT3 PICON &= ~SET_BIT5 +#define clr_PIT2 PICON &= ~SET_BIT4 +#define clr_PIT1 PICON &= ~SET_BIT3 +#define clr_PIT0 PICON &= ~SET_BIT2 +#define clr_PIPS1 PICON &= ~SET_BIT1 +#define clr_PIPS0 PICON &= ~SET_BIT0 + +//**** PINEN EAH **** +#define set_PINEN7 PINEN |= SET_BIT7 +#define set_PINEN6 PINEN |= SET_BIT6 +#define set_PINEN5 PINEN |= SET_BIT5 +#define set_PINEN4 PINEN |= SET_BIT4 +#define set_PINEN3 PINEN |= SET_BIT3 +#define set_PINEN2 PINEN |= SET_BIT2 +#define set_PINEN1 PINEN |= SET_BIT1 +#define set_PINEN0 PINEN |= SET_BIT0 + +#define clr_PINEN7 PINEN &= ~SET_BIT7 +#define clr_PINEN6 PINEN &= ~SET_BIT6 +#define clr_PINEN5 PINEN &= ~SET_BIT5 +#define clr_PINEN4 PINEN &= ~SET_BIT4 +#define clr_PINEN3 PINEN &= ~SET_BIT3 +#define clr_PINEN2 PINEN &= ~SET_BIT2 +#define clr_PINEN1 PINEN &= ~SET_BIT1 +#define clr_PINEN0 PINEN &= ~SET_BIT0 + +//**** PIPEN EBH **** +#define set_PIPEN7 PIPEN |= SET_BIT7 +#define set_PIPEN6 PIPEN |= SET_BIT6 +#define set_PIPEN5 PIPEN |= SET_BIT5 +#define set_PIPEN4 PIPEN |= SET_BIT4 +#define set_PIPEN3 PIPEN |= SET_BIT3 +#define set_PIPEN2 PIPEN |= SET_BIT2 +#define set_PIPEN1 PIPEN |= SET_BIT1 +#define set_PIPEN0 PIPEN |= SET_BIT0 + +#define clr_PIPEN7 PIPEN &= ~SET_BIT7 +#define clr_PIPEN6 PIPEN &= ~SET_BIT6 +#define clr_PIPEN5 PIPEN &= ~SET_BIT5 +#define clr_PIPEN4 PIPEN &= ~SET_BIT4 +#define clr_PIPEN3 PIPEN &= ~SET_BIT3 +#define clr_PIPEN2 PIPEN &= ~SET_BIT2 +#define clr_PIPEN1 PIPEN &= ~SET_BIT1 +#define clr_PIPEN0 PIPEN &= ~SET_BIT0 + +//**** PIF ECH **** +#define set_PIF7 PIF |= SET_BIT7 +#define set_PIF6 PIF |= SET_BIT6 +#define set_PIF5 PIF |= SET_BIT5 +#define set_PIF4 PIF |= SET_BIT4 +#define set_PIF3 PIF |= SET_BIT3 +#define set_PIF2 PIF |= SET_BIT2 +#define set_PIF1 PIF |= SET_BIT1 +#define set_PIF0 PIF |= SET_BIT0 + +#define clr_PIF7 PIF &= ~SET_BIT7 +#define clr_PIF6 PIF &= ~SET_BIT6 +#define clr_PIF5 PIF &= ~SET_BIT5 +#define clr_PIF4 PIF &= ~SET_BIT4 +#define clr_PIF3 PIF &= ~SET_BIT3 +#define clr_PIF2 PIF &= ~SET_BIT2 +#define clr_PIF1 PIF &= ~SET_BIT1 +#define clr_PIF0 PIF &= ~SET_BIT0 + +//**** C2L EDH **** +//**** C2H EEH **** + +//**** EIP EFH **** +#define set_PT2 EIP |= SET_BIT7 +#define set_PSPI EIP |= SET_BIT6 +#define set_PFB EIP |= SET_BIT5 +#define set_PWDT EIP |= SET_BIT4 +#define set_PPWM EIP |= SET_BIT3 +#define set_PCAP EIP |= SET_BIT2 +#define set_PPI EIP |= SET_BIT1 +#define set_PI2C EIP |= SET_BIT0 + +#define clr_PT2 EIP &= ~SET_BIT7 +#define clr_PSPI EIP &= ~SET_BIT6 +#define clr_PFB EIP &= ~SET_BIT5 +#define clr_PWDT EIP &= ~SET_BIT4 +#define clr_PPWM EIP &= ~SET_BIT3 +#define clr_PCAP EIP &= ~SET_BIT2 +#define clr_PPI EIP &= ~SET_BIT1 +#define clr_PI2C EIP &= ~SET_BIT0 + +//**** B F0H **** + +//**** CAPCON3 F1H **** +#define set_CAP13 CAPCON3 |= SET_BIT7 +#define set_CAP12 CAPCON3 |= SET_BIT6 +#define set_CAP11 CAPCON3 |= SET_BIT5 +#define set_CAP10 CAPCON3 |= SET_BIT4 +#define set_CAP03 CAPCON3 |= SET_BIT3 +#define set_CAP02 CAPCON3 |= SET_BIT2 +#define set_CAP01 CAPCON3 |= SET_BIT1 +#define set_CAP00 CAPCON3 |= SET_BIT0 + +#define clr_CAP13 CAPCON3 &= ~SET_BIT7 +#define clr_CAP12 CAPCON3 &= ~SET_BIT6 +#define clr_CAP11 CAPCON3 &= ~SET_BIT5 +#define clr_CAP10 CAPCON3 &= ~SET_BIT4 +#define clr_CAP03 CAPCON3 &= ~SET_BIT3 +#define clr_CAP02 CAPCON3 &= ~SET_BIT2 +#define clr_CAP01 CAPCON3 &= ~SET_BIT1 +#define clr_CAP00 CAPCON3 &= ~SET_BIT0 + +//**** CAPCON4 F2H **** +#define set_CAP23 CAPCON4 |= SET_BIT3 +#define set_CAP22 CAPCON4 |= SET_BIT2 +#define set_CAP21 CAPCON4 |= SET_BIT1 +#define set_CAP20 CAPCON4 |= SET_BIT0 + +#define clr_CAP23 CAPCON4 &= ~SET_BIT3 +#define clr_CAP22 CAPCON4 &= ~SET_BIT2 +#define clr_CAP21 CAPCON4 &= ~SET_BIT1 +#define clr_CAP20 CAPCON4 &= ~SET_BIT0 + +//**** SPCR F3H PAGE0 **** +#define set_SSOE SPCR |= SET_BIT7 +#define set_SPIEN SPCR |= SET_BIT6 +#define set_LSBFE SPCR |= SET_BIT5 +#define set_MSTR SPCR |= SET_BIT4 +#define set_CPOL SPCR |= SET_BIT3 +#define set_CPHA SPCR |= SET_BIT2 +#define set_SPR1 SPCR |= SET_BIT1 +#define set_SPR0 SPCR |= SET_BIT0 + +#define clr_SSOE SPCR &= ~SET_BIT7 +#define clr_SPIEN SPCR &= ~SET_BIT6 +#define clr_LSBFE SPCR &= ~SET_BIT5 +#define clr_MSTR SPCR &= ~SET_BIT4 +#define clr_CPOL SPCR &= ~SET_BIT3 +#define clr_CPHA SPCR &= ~SET_BIT2 +#define clr_SPR1 SPCR &= ~SET_BIT1 +#define clr_SPR0 SPCR &= ~SET_BIT0 + +//**** SPCR2 F3H PAGE1 **** SFRS must set as 1 to modify this register +#define set_SPIS1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;SPCR2|=SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define set_SPIS0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x00;SPCR2|=SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +#define clr_SPIS1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x00;SPCR2&=~SET_BIT1;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP +#define clr_SPIS0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x00;SPCR2&=~SET_BIT0;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP + +//**** SPSR F4H **** +#define set_SPIF SPSR |= SET_BIT7 +#define set_WCOL SPSR |= SET_BIT6 +#define set_SPIOVF SPSR |= SET_BIT5 +#define set_MODF SPSR |= SET_BIT4 +#define set_DISMODF SPSR |= SET_BIT3 + +#define clr_SPIF SPSR &= ~SET_BIT7 +#define clr_WCOL SPSR &= ~SET_BIT6 +#define clr_SPIOVF SPSR &= ~SET_BIT5 +#define clr_MODF SPSR &= ~SET_BIT4 +#define clr_DISMODF SPSR &= ~SET_BIT3 + +//**** SPDR F5H **** + +//**** AINDIDS F6H **** +#define set_P11DIDS AINDIDS |= SET_BIT7 +#define set_P03DIDS AINDIDS |= SET_BIT6 +#define set_P04DIDS AINDIDS |= SET_BIT5 +#define set_P05DIDS AINDIDS |= SET_BIT4 +#define set_P06DIDS AINDIDS |= SET_BIT3 +#define set_P07DIDS AINDIDS |= SET_BIT2 +#define set_P30DIDS AINDIDS |= SET_BIT1 +#define set_P17DIDS AINDIDS |= SET_BIT0 + +#define clr_P11DIDS AINDIDS &= ~SET_BIT7 +#define clr_P03DIDS AINDIDS &= ~SET_BIT6 +#define clr_P04DIDS AINDIDS &= ~SET_BIT5 +#define clr_P05DIDS AINDIDS &= ~SET_BIT4 +#define clr_P06DIDS AINDIDS &= ~SET_BIT3 +#define clr_P07DIDS AINDIDS &= ~SET_BIT2 +#define clr_P30DIDS AINDIDS &= ~SET_BIT1 +#define clr_P17DIDS AINDIDS &= ~SET_BIT0 + +//**** EIPH F7H **** +#define set_PT2H EIPH |= SET_BIT7 +#define set_PSPIH EIPH |= SET_BIT6 +#define set_PFBH EIPH |= SET_BIT5 +#define set_PWDTH EIPH |= SET_BIT4 +#define set_PPWMH EIPH |= SET_BIT3 +#define set_PCAPH EIPH |= SET_BIT2 +#define set_PPIH EIPH |= SET_BIT1 +#define set_PI2CH EIPH |= SET_BIT0 + +#define clr_PT2H EIPH &= ~SET_BIT7 +#define clr_PSPIH EIPH &= ~SET_BIT6 +#define clr_PFBH EIPH &= ~SET_BIT5 +#define clr_PWDTH EIPH &= ~SET_BIT4 +#define clr_PPWMH EIPH &= ~SET_BIT3 +#define clr_PCAPH EIPH &= ~SET_BIT2 +#define clr_PPIH EIPH &= ~SET_BIT1 +#define clr_PI2CH EIPH &= ~SET_BIT0 + +/**** SCON_1 F8H ****/ +#define set_FE_1 FE_1 = 1 +#define set_SM1_1 SM1_1 = 1 +#define set_SM2_1 SM2_1 = 1 +#define set_REN_1 REN_1 = 1 +#define set_TB8_1 TB8_1 = 1 +#define set_RB8_1 RB8_1 = 1 +#define set_TI_1 TI_1 = 1 +#define set_RI_1 RI_1 = 1 + +#define clr_FE_1 FE_1 = 0 +#define clr_SM1_1 SM1_1 = 0 +#define clr_SM2_1 SM2_1 = 0 +#define clr_REN_1 REN_1 = 0 +#define clr_TB8_1 TB8_1 = 0 +#define clr_RB8_1 RB8_1 = 0 +#define clr_TI_1 TI_1 = 0 +#define clr_RI_1 RI_1 = 0 + +//**** PDTEN F9H **** +#define set_PDT45EN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN|= SET_BIT2 ;EA=BIT_TMP; +#define set_PDT23EN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN|= SET_BIT1 ;EA=BIT_TMP; +#define set_PDT01EN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN|= SET_BIT0 ;EA=BIT_TMP; + +#define clr_PDT45EN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN &= ~SET_BIT2 ;EA=BIT_TMP; +#define clr_PDT23EN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN &= ~SET_BIT1 ;EA=BIT_TMP; +#define clr_PDT01EN BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN &= ~SET_BIT0 ;EA=BIT_TMP; + +//**** PDTCNT FAH **** + +//**** PMEN FBH **** +#define set_PMEN5 PMEN |= SET_BIT5 +#define set_PMEN4 PMEN |= SET_BIT4 +#define set_PMEN3 PMEN |= SET_BIT3 +#define set_PMEN2 PMEN |= SET_BIT2 +#define set_PMEN1 PMEN |= SET_BIT1 +#define set_PMEN0 PMEN |= SET_BIT0 + +#define clr_PMEN5 PMEN &= ~SET_BIT5 +#define clr_PMEN4 PMEN &= ~SET_BIT4 +#define clr_PMEN3 PMEN &= ~SET_BIT3 +#define clr_PMEN2 PMEN &= ~SET_BIT2 +#define clr_PMEN1 PMEN &= ~SET_BIT1 +#define clr_PMEN0 PMEN &= ~SET_BIT0 + +//**** PMD FCH **** +#define set_PMD7 PMD |= SET_BIT7 +#define set_PMD6 PMD |= SET_BIT6 +#define set_PMD5 PMD |= SET_BIT5 +#define set_PMD4 PMD |= SET_BIT4 +#define set_PMD3 PMD |= SET_BIT3 +#define set_PMD2 PMD |= SET_BIT2 +#define set_PMD1 PMD |= SET_BIT1 +#define set_PMD0 PMD |= SET_BIT0 + +#define clr_PMD7 PMD &= ~SET_BIT7 +#define clr_PMD6 PMD &= ~SET_BIT6 +#define clr_PMD5 PMD &= ~SET_BIT5 +#define clr_PMD4 PMD &= ~SET_BIT4 +#define clr_PMD3 PMD &= ~SET_BIT3 +#define clr_PMD2 PMD &= ~SET_BIT2 +#define clr_PMD1 PMD &= ~SET_BIT1 +#define clr_PMD0 PMD &= ~SET_BIT0 + +//**** EIP1 FEH **** +#define set_PWKT EIP1 |= SET_BIT2 +#define set_PT3 EIP1 |= SET_BIT1 +#define set_PS_1 EIP1 |= SET_BIT0 + +#define clr_PWKT EIP1 &= ~SET_BIT2 +#define clr_PT3 EIP1 &= ~SET_BIT1 +#define clr_PS_1 EIP1 &= ~SET_BIT0 + +//**** EIPH1 FFH **** +#define set_PWKTH EIPH1 |= SET_BIT2 +#define set_PT3H EIPH1 |= SET_BIT1 +#define set_PSH_1 EIPH1 |= SET_BIT0 + +#define clr_PWKTH EIPH1 &= ~SET_BIT2 +#define clr_PT3H EIPH1 &= ~SET_BIT1 +#define clr_PSH_1 EIPH1 &= ~SET_BIT0 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fw/n76e003/common/inc/font.h b/fw/n76e003/common/inc/font.h new file mode 100644 index 0000000..90294ae --- /dev/null +++ b/fw/n76e003/common/inc/font.h @@ -0,0 +1,2832 @@ +#ifndef FONT_H +#define FONT_H + +#define _FONT_W 5 +#define _FONT_H 8 + +static const uint8_t _font[] = { +#ifndef FONTSET_MINI + // [?] 0x00 ***************** + 0x00, 0x00, 0x00, 0x00, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x01 ***************** + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01011011 â–“â–“â–“â–“â–“ + // 01001111 â–“â–‘â–“â–‘â–“ + // 01011011 â–“â–“â–“â–“â–“ + // 00111110 â–“â–“â–‘â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x02 ***************** + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01101011 â–“â–“â–“â–“â–“ + // 01001111 â–“â–‘â–“â–‘â–“ + // 01101011 â–“â–“â–“â–“â–“ + // 00111110 â–“â–‘â–‘â–‘â–“ + // â–“â–“â–‘â–“â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x03 ***************** + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, + // 00011100 â–‘â–‘â–‘â–‘â–‘ + // 00111110 â–‘â–“â–‘â–“â–‘ + // 01111100 â–“â–“â–“â–“â–“ + // 00111110 â–“â–“â–“â–“â–“ + // 00011100 â–“â–“â–“â–“â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x04 ***************** + 0x18, 0x3C, 0x7E, 0x3C, 0x18, + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 00111100 â–‘â–‘â–“â–‘â–‘ + // 01111110 â–‘â–“â–“â–“â–‘ + // 00111100 â–“â–“â–“â–“â–“ + // 00011000 â–“â–“â–“â–“â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x05 ***************** + 0x1C, 0x57, 0x7D, 0x57, 0x1C, + // 00011100 â–‘â–“â–“â–“â–‘ + // 01010111 â–‘â–“â–‘â–“â–‘ + // 01111101 â–“â–“â–“â–“â–“ + // 01010111 â–“â–‘â–“â–‘â–“ + // 00011100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x06 ***************** + 0xDC, 0x22, 0xC9, 0x22, 0xDC, + // 11011100 â–‘â–‘â–“â–‘â–‘ + // 00100010 â–‘â–“â–‘â–“â–‘ + // 11001001 â–“â–‘â–‘â–‘â–“ + // 00100010 â–“â–‘â–“â–‘â–“ + // 11011100 â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–“â–‘â–“â–‘â–“ + // â–“â–‘â–“â–‘â–“ +/* OLD + // [?] 0x06 ***************** + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, + // 00011100 â–‘â–‘â–“â–‘â–‘ + // 01011110 â–‘â–“â–“â–“â–‘ + // 01111111 â–“â–“â–“â–“â–“ + // 01011110 â–“â–“â–“â–“â–“ + // 00011100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** +*/ + // [?] 0x07 ***************** + 0x00, 0x18, 0x3C, 0x18, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 00111100 â–‘â–‘â–“â–‘â–‘ + // 00011000 â–‘â–“â–“â–“â–‘ + // 00000000 â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x08 ***************** + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, + // 11111111 â–“â–“â–“â–“â–“ + // 11100111 â–“â–“â–“â–“â–“ + // 11000011 â–“â–“â–‘â–“â–“ + // 11100111 â–“â–‘â–‘â–‘â–“ + // 11111111 â–“â–‘â–‘â–‘â–“ + // â–“â–“â–‘â–“â–“ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // ************************** + // [?] 0x09 ***************** + 0x00, 0x18, 0x24, 0x18, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 00100100 â–‘â–‘â–“â–‘â–‘ + // 00011000 â–‘â–“â–‘â–“â–‘ + // 00000000 â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x0a ***************** + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, + // 11111111 â–“â–“â–“â–“â–“ + // 11100111 â–“â–“â–“â–“â–“ + // 11011011 â–“â–“â–‘â–“â–“ + // 11100111 â–“â–‘â–“â–‘â–“ + // 11111111 â–“â–‘â–“â–‘â–“ + // â–“â–“â–‘â–“â–“ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // ************************** + // [?] 0x0b ***************** + 0x30, 0x48, 0x3A, 0x06, 0x0E, + // 00110000 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–‘â–‘â–“â–“â–“ + // 00111010 â–‘â–‘â–‘â–“â–“ + // 00000110 â–‘â–“â–“â–‘â–“ + // 00001110 â–“â–‘â–“â–‘â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x0c ***************** + 0x26, 0x29, 0x79, 0x29, 0x26, + // 00100110 â–‘â–“â–“â–“â–‘ + // 00101001 â–“â–‘â–‘â–‘â–“ + // 01111001 â–“â–‘â–‘â–‘â–“ + // 00101001 â–‘â–“â–“â–“â–‘ + // 00100110 â–‘â–‘â–“â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x0d ***************** + 0x40, 0x7F, 0x05, 0x05, 0x07, + // 01000000 â–‘â–“â–“â–“â–“ + // 01111111 â–‘â–“â–‘â–‘â–“ + // 00000101 â–‘â–“â–“â–“â–“ + // 00000101 â–‘â–“â–‘â–‘â–‘ + // 00000111 â–‘â–“â–‘â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–“â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x0e ***************** + 0x40, 0x7F, 0x05, 0x25, 0x3F, + // 01000000 â–‘â–“â–“â–“â–“ + // 01111111 â–‘â–“â–‘â–‘â–“ + // 00000101 â–‘â–“â–“â–“â–“ + // 00100101 â–‘â–“â–‘â–‘â–“ + // 00111111 â–‘â–“â–‘â–‘â–“ + // â–‘â–“â–‘â–“â–“ + // â–“â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x0f ***************** + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, + // 01011010 â–‘â–‘â–“â–‘â–‘ + // 00111100 â–“â–‘â–“â–‘â–“ + // 11100111 â–‘â–“â–“â–“â–‘ + // 00111100 â–“â–“â–‘â–“â–“ + // 01011010 â–“â–“â–‘â–“â–“ + // â–‘â–“â–“â–“â–‘ + // â–“â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–‘ + // ************************** + // [?] 0x10 ***************** + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, + // 01111111 â–“â–‘â–‘â–‘â–‘ + // 00111110 â–“â–“â–‘â–‘â–‘ + // 00011100 â–“â–“â–“â–“â–‘ + // 00011100 â–“â–“â–“â–“â–“ + // 00001000 â–“â–“â–“â–“â–‘ + // â–“â–“â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x11 ***************** + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, + // 00001000 â–‘â–‘â–‘â–‘â–“ + // 00011100 â–‘â–‘â–‘â–“â–“ + // 00011100 â–‘â–“â–“â–“â–“ + // 00111110 â–“â–“â–“â–“â–“ + // 01111111 â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x12 ***************** + 0x14, 0x22, 0x7F, 0x22, 0x14, + // 00010100 â–‘â–‘â–“â–‘â–‘ + // 00100010 â–‘â–“â–“â–“â–‘ + // 01111111 â–“â–‘â–“â–‘â–“ + // 00100010 â–‘â–‘â–“â–‘â–‘ + // 00010100 â–“â–‘â–“â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x13 ***************** + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, + // 01011111 â–“â–“â–‘â–“â–“ + // 01011111 â–“â–“â–‘â–“â–“ + // 00000000 â–“â–“â–‘â–“â–“ + // 01011111 â–“â–“â–‘â–“â–“ + // 01011111 â–“â–“â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x14 ***************** + 0x06, 0x09, 0x7F, 0x01, 0x7F, + // 00000110 â–‘â–“â–“â–“â–“ + // 00001001 â–“â–‘â–“â–‘â–“ + // 01111111 â–“â–‘â–“â–‘â–“ + // 00000001 â–‘â–“â–“â–‘â–“ + // 01111111 â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x15 ***************** + 0x00, 0x66, 0x89, 0x95, 0x6A, + // 00000000 â–‘â–‘â–“â–“â–‘ + // 01100110 â–‘â–“â–‘â–‘â–“ + // 10001001 â–‘â–“â–‘â–“â–‘ + // 10010101 â–‘â–‘â–“â–‘â–“ + // 01101010 â–‘â–‘â–‘â–“â–‘ + // â–‘â–“â–‘â–‘â–“ + // â–‘â–“â–‘â–‘â–“ + // â–‘â–‘â–“â–“â–‘ + // ************************** + // [?] 0x16 ***************** + 0x60, 0x60, 0x60, 0x60, 0x60, + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x17 ***************** + 0x94, 0xA2, 0xFF, 0xA2, 0x94, + // 10010100 â–‘â–‘â–“â–‘â–‘ + // 10100010 â–‘â–“â–“â–“â–‘ + // 11111111 â–“â–‘â–“â–‘â–“ + // 10100010 â–‘â–‘â–“â–‘â–‘ + // 10010100 â–“â–‘â–“â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–“â–“â–“â–“â–“ + // ************************** + // [?] 0x18 ***************** + 0x08, 0x04, 0x7E, 0x04, 0x08, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 01111110 â–‘â–“â–“â–“â–‘ + // 00000100 â–“â–‘â–“â–‘â–“ + // 00001000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x19 ***************** + 0x10, 0x20, 0x7E, 0x20, 0x10, + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00100000 â–‘â–‘â–“â–‘â–‘ + // 01111110 â–‘â–‘â–“â–‘â–‘ + // 00100000 â–‘â–‘â–“â–‘â–‘ + // 00010000 â–“â–‘â–“â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x1a ***************** + 0x08, 0x08, 0x2A, 0x1C, 0x08, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–“â–‘â–‘ + // 00101010 â–‘â–‘â–‘â–“â–‘ + // 00011100 â–“â–“â–“â–“â–“ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x1b ***************** + 0x08, 0x1C, 0x2A, 0x08, 0x08, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00011100 â–‘â–‘â–“â–‘â–‘ + // 00101010 â–‘â–“â–‘â–‘â–‘ + // 00001000 â–“â–“â–“â–“â–“ + // 00001000 â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x1c ***************** + 0x1E, 0x10, 0x10, 0x10, 0x10, + // 00011110 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–‘ + // 00010000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x1d ***************** + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, + // 00001100 â–‘â–‘â–‘â–‘â–‘ + // 00011110 â–‘â–“â–‘â–“â–‘ + // 00001100 â–“â–“â–“â–“â–“ + // 00011110 â–“â–“â–“â–“â–“ + // 00001100 â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x1e ***************** + 0x30, 0x38, 0x3E, 0x38, 0x30, + // 00110000 â–‘â–‘â–‘â–‘â–‘ + // 00111000 â–‘â–‘â–“â–‘â–‘ + // 00111110 â–‘â–‘â–“â–‘â–‘ + // 00111000 â–‘â–“â–“â–“â–‘ + // 00110000 â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x1f ***************** + 0x06, 0x0E, 0x3E, 0x0E, 0x06, + // 00000110 â–‘â–‘â–‘â–‘â–‘ + // 00001110 â–“â–“â–“â–“â–“ + // 00111110 â–“â–“â–“â–“â–“ + // 00001110 â–‘â–“â–“â–“â–‘ + // 00000110 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** +#endif + // [ ] 0x20 ***************** + 0x00, 0x00, 0x00, 0x00, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [!] 0x21 ***************** + 0x00, 0x00, 0x5F, 0x00, 0x00, + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 01011111 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // ["] 0x22 ***************** + 0x00, 0x07, 0x00, 0x07, 0x00, + // 00000000 â–‘â–“â–‘â–“â–‘ + // 00000111 â–‘â–“â–‘â–“â–‘ + // 00000000 â–‘â–“â–‘â–“â–‘ + // 00000111 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [#] 0x23 ***************** + 0x14, 0x7F, 0x14, 0x7F, 0x14, + // 00010100 â–‘â–“â–‘â–“â–‘ + // 01111111 â–‘â–“â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // 01111111 â–‘â–“â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [$] 0x24 ***************** + 0x24, 0x2A, 0x7F, 0x2A, 0x12, + // 00100100 â–‘â–‘â–“â–‘â–‘ + // 00101010 â–‘â–“â–“â–“â–“ + // 01111111 â–“â–‘â–“â–‘â–‘ + // 00101010 â–‘â–“â–“â–“â–‘ + // 00010010 â–‘â–‘â–“â–‘â–“ + // â–“â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [%] 0x25 ***************** + 0x23, 0x13, 0x08, 0x64, 0x62, + // 00100011 â–“â–“â–‘â–‘â–‘ + // 00010011 â–“â–“â–‘â–‘â–“ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // 01100100 â–‘â–‘â–“â–‘â–‘ + // 01100010 â–‘â–“â–‘â–‘â–‘ + // â–“â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [&] 0x26 ***************** + 0x36, 0x49, 0x56, 0x20, 0x50, + // 00110110 â–‘â–“â–‘â–‘â–‘ + // 01001001 â–“â–‘â–“â–‘â–‘ + // 01010110 â–“â–‘â–“â–‘â–‘ + // 00100000 â–‘â–“â–‘â–‘â–‘ + // 01010000 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // ['] 0x27 ***************** + 0x00, 0x08, 0x07, 0x03, 0x00, + // 00000000 â–‘â–‘â–“â–“â–‘ + // 00001000 â–‘â–‘â–“â–“â–‘ + // 00000111 â–‘â–‘â–“â–‘â–‘ + // 00000011 â–‘â–“â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [(] 0x28 ***************** + 0x00, 0x1C, 0x22, 0x41, 0x00, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00011100 â–‘â–‘â–“â–‘â–‘ + // 00100010 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–“â–‘â–‘â–‘ + // 00000000 â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [)] 0x29 ***************** + 0x00, 0x41, 0x22, 0x1C, 0x00, + // 00000000 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 00100010 â–‘â–‘â–‘â–“â–‘ + // 00011100 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [*] 0x2a ***************** + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, + // 00101010 â–‘â–‘â–“â–‘â–‘ + // 00011100 â–“â–‘â–“â–‘â–“ + // 01111111 â–‘â–“â–“â–“â–‘ + // 00011100 â–“â–“â–“â–“â–“ + // 00101010 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [+] 0x2b ***************** + 0x08, 0x08, 0x3E, 0x08, 0x08, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–“â–‘â–‘ + // 00111110 â–‘â–‘â–“â–‘â–‘ + // 00001000 â–“â–“â–“â–“â–“ + // 00001000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [,] 0x2c ***************** + 0x00, 0x80, 0x70, 0x30, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 10000000 â–‘â–‘â–‘â–‘â–‘ + // 01110000 â–‘â–‘â–‘â–‘â–‘ + // 00110000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // ************************** + // [-] 0x2d ***************** + 0x08, 0x08, 0x08, 0x08, 0x08, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–“â–“â–“â–“â–“ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [.] 0x2e ***************** + 0x00, 0x00, 0x60, 0x60, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [/] 0x2f ***************** + 0x20, 0x10, 0x08, 0x04, 0x02, + // 00100000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–“ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 00000010 â–‘â–“â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [0] 0x30 ***************** + 0x3E, 0x51, 0x49, 0x45, 0x3E, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01010001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–“â–‘â–‘â–“â–“ + // 01000101 â–“â–‘â–“â–‘â–“ + // 00111110 â–“â–“â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [1] 0x31 ***************** + 0x00, 0x42, 0x7F, 0x40, 0x00, + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 01000010 â–‘â–“â–“â–‘â–‘ + // 01111111 â–‘â–‘â–“â–‘â–‘ + // 01000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [2] 0x32 ***************** + 0x72, 0x49, 0x49, 0x49, 0x46, + // 01110010 â–‘â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–‘â–‘â–‘â–‘â–“ + // 01001001 â–‘â–“â–“â–“â–‘ + // 01000110 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [3] 0x33 ***************** + 0x21, 0x41, 0x49, 0x4D, 0x33, + // 00100001 â–“â–“â–“â–“â–“ + // 01000001 â–‘â–‘â–‘â–‘â–“ + // 01001001 â–‘â–‘â–‘â–“â–‘ + // 01001101 â–‘â–‘â–“â–“â–‘ + // 00110011 â–‘â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [4] 0x34 ***************** + 0x18, 0x14, 0x12, 0x7F, 0x10, + // 00011000 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–“â–“â–‘ + // 00010010 â–‘â–“â–‘â–“â–‘ + // 01111111 â–“â–‘â–‘â–“â–‘ + // 00010000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [5] 0x35 ***************** + 0x27, 0x45, 0x45, 0x45, 0x39, + // 00100111 â–“â–“â–“â–“â–“ + // 01000101 â–“â–‘â–‘â–‘â–‘ + // 01000101 â–“â–“â–“â–“â–‘ + // 01000101 â–‘â–‘â–‘â–‘â–“ + // 00111001 â–‘â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [6] 0x36 ***************** + 0x3C, 0x4A, 0x49, 0x49, 0x31, + // 00111100 â–‘â–‘â–“â–“â–“ + // 01001010 â–‘â–“â–‘â–‘â–‘ + // 01001001 â–“â–‘â–‘â–‘â–‘ + // 01001001 â–“â–“â–“â–“â–‘ + // 00110001 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [7] 0x37 ***************** + 0x41, 0x21, 0x11, 0x09, 0x07, + // 01000001 â–“â–“â–“â–“â–“ + // 00100001 â–‘â–‘â–‘â–‘â–“ + // 00010001 â–‘â–‘â–‘â–‘â–“ + // 00001001 â–‘â–‘â–‘â–“â–‘ + // 00000111 â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [8] 0x38 ***************** + 0x36, 0x49, 0x49, 0x49, 0x36, + // 00110110 â–‘â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–‘â–“â–“â–“â–‘ + // 00110110 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [9] 0x39 ***************** + 0x46, 0x49, 0x49, 0x29, 0x1E, + // 01000110 â–‘â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 00101001 â–‘â–“â–“â–“â–“ + // 00011110 â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–“â–“â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [:] 0x3a ***************** + 0x00, 0x00, 0x14, 0x00, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [;] 0x3b ***************** + 0x00, 0x40, 0x34, 0x00, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 00110100 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [<] 0x3c ***************** + 0x00, 0x08, 0x14, 0x22, 0x41, + // 00000000 â–‘â–‘â–‘â–‘â–“ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–“â–‘â–‘ + // 00100010 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [=] 0x3d ***************** + 0x14, 0x14, 0x14, 0x14, 0x14, + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [>] 0x3e ***************** + 0x00, 0x41, 0x22, 0x14, 0x08, + // 00000000 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 00100010 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–“ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x3f ***************** + 0x02, 0x01, 0x59, 0x09, 0x06, + // 00000010 â–‘â–“â–“â–“â–‘ + // 00000001 â–“â–‘â–‘â–‘â–“ + // 01011001 â–‘â–‘â–‘â–‘â–“ + // 00001001 â–‘â–‘â–“â–“â–‘ + // 00000110 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [@] 0x40 ***************** + 0x3E, 0x41, 0x5D, 0x59, 0x4E, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01011101 â–“â–‘â–“â–‘â–“ + // 01011001 â–“â–‘â–“â–“â–“ + // 01001110 â–“â–‘â–“â–“â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [A] 0x41 ***************** + 0x7C, 0x12, 0x11, 0x12, 0x7C, + // 01111100 â–‘â–‘â–“â–‘â–‘ + // 00010010 â–‘â–“â–‘â–“â–‘ + // 00010001 â–“â–‘â–‘â–‘â–“ + // 00010010 â–“â–‘â–‘â–‘â–“ + // 01111100 â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [B] 0x42 ***************** + 0x7F, 0x49, 0x49, 0x49, 0x36, + // 01111111 â–“â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–“â–“â–“â–“â–‘ + // 00110110 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [C] 0x43 ***************** + 0x3E, 0x41, 0x41, 0x41, 0x22, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–“â–‘â–‘â–‘â–‘ + // 01000001 â–“â–‘â–‘â–‘â–‘ + // 00100010 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [D] 0x44 ***************** + 0x7F, 0x41, 0x41, 0x41, 0x3E, + // 01111111 â–“â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 00111110 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [E] 0x45 ***************** + 0x7F, 0x49, 0x49, 0x49, 0x41, + // 01111111 â–“â–“â–“â–“â–“ + // 01001001 â–“â–‘â–‘â–‘â–‘ + // 01001001 â–“â–‘â–‘â–‘â–‘ + // 01001001 â–“â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [F] 0x46 ***************** + 0x7F, 0x09, 0x09, 0x09, 0x01, + // 01111111 â–“â–“â–“â–“â–“ + // 00001001 â–“â–‘â–‘â–‘â–‘ + // 00001001 â–“â–‘â–‘â–‘â–‘ + // 00001001 â–“â–“â–“â–“â–‘ + // 00000001 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [G] 0x47 ***************** + 0x3E, 0x41, 0x41, 0x51, 0x73, + // 00111110 â–‘â–“â–“â–“â–“ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–“â–‘â–‘â–‘â–‘ + // 01010001 â–“â–‘â–‘â–‘â–‘ + // 01110011 â–“â–‘â–‘â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [H] 0x48 ***************** + 0x7F, 0x08, 0x08, 0x08, 0x7F, + // 01111111 â–“â–‘â–‘â–‘â–“ + // 00001000 â–“â–‘â–‘â–‘â–“ + // 00001000 â–“â–‘â–‘â–‘â–“ + // 00001000 â–“â–“â–“â–“â–“ + // 01111111 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [I] 0x49 ***************** + 0x00, 0x41, 0x7F, 0x41, 0x00, + // 00000000 â–‘â–“â–“â–“â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 01111111 â–‘â–‘â–“â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [J] 0x4a ***************** + 0x20, 0x40, 0x41, 0x3F, 0x01, + // 00100000 â–‘â–‘â–“â–“â–“ + // 01000000 â–‘â–‘â–‘â–“â–‘ + // 01000001 â–‘â–‘â–‘â–“â–‘ + // 00111111 â–‘â–‘â–‘â–“â–‘ + // 00000001 â–‘â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [K] 0x4b ***************** + 0x7F, 0x08, 0x14, 0x22, 0x41, + // 01111111 â–“â–‘â–‘â–‘â–“ + // 00001000 â–“â–‘â–‘â–“â–‘ + // 00010100 â–“â–‘â–“â–‘â–‘ + // 00100010 â–“â–“â–‘â–‘â–‘ + // 01000001 â–“â–‘â–“â–‘â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [L] 0x4c ***************** + 0x7F, 0x40, 0x40, 0x40, 0x40, + // 01111111 â–“â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [M] 0x4d ***************** + 0x7F, 0x02, 0x1C, 0x02, 0x7F, + // 01111111 â–“â–‘â–‘â–‘â–“ + // 00000010 â–“â–“â–‘â–“â–“ + // 00011100 â–“â–‘â–“â–‘â–“ + // 00000010 â–“â–‘â–“â–‘â–“ + // 01111111 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [N] 0x4e ***************** + 0x7F, 0x04, 0x08, 0x10, 0x7F, + // 01111111 â–“â–‘â–‘â–‘â–“ + // 00000100 â–“â–‘â–‘â–‘â–“ + // 00001000 â–“â–“â–‘â–‘â–“ + // 00010000 â–“â–‘â–“â–‘â–“ + // 01111111 â–“â–‘â–‘â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [O] 0x4f ***************** + 0x3E, 0x41, 0x41, 0x41, 0x3E, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 00111110 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [P] 0x50 ***************** + 0x7F, 0x09, 0x09, 0x09, 0x06, + // 01111111 â–“â–“â–“â–“â–‘ + // 00001001 â–“â–‘â–‘â–‘â–“ + // 00001001 â–“â–‘â–‘â–‘â–“ + // 00001001 â–“â–“â–“â–“â–‘ + // 00000110 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [Q] 0x51 ***************** + 0x3E, 0x41, 0x51, 0x21, 0x5E, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01010001 â–“â–‘â–‘â–‘â–“ + // 00100001 â–“â–‘â–‘â–‘â–“ + // 01011110 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [R] 0x52 ***************** + 0x7F, 0x09, 0x19, 0x29, 0x46, + // 01111111 â–“â–“â–“â–“â–‘ + // 00001001 â–“â–‘â–‘â–‘â–“ + // 00011001 â–“â–‘â–‘â–‘â–“ + // 00101001 â–“â–“â–“â–“â–‘ + // 01000110 â–“â–‘â–“â–‘â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [S] 0x53 ***************** + 0x26, 0x49, 0x49, 0x49, 0x32, + // 00100110 â–‘â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–“â–‘â–‘â–‘â–‘ + // 01001001 â–‘â–“â–“â–“â–‘ + // 00110010 â–‘â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [T] 0x54 ***************** + 0x03, 0x01, 0x7F, 0x01, 0x03, + // 00000011 â–“â–“â–“â–“â–“ + // 00000001 â–“â–‘â–“â–‘â–“ + // 01111111 â–‘â–‘â–“â–‘â–‘ + // 00000001 â–‘â–‘â–“â–‘â–‘ + // 00000011 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [U] 0x55 ***************** + 0x3F, 0x40, 0x40, 0x40, 0x3F, + // 00111111 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00111111 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [V] 0x56 ***************** + 0x1F, 0x20, 0x40, 0x20, 0x1F, + // 00011111 â–“â–‘â–‘â–‘â–“ + // 00100000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00100000 â–“â–‘â–‘â–‘â–“ + // 00011111 â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [W] 0x57 ***************** + 0x3F, 0x40, 0x38, 0x40, 0x3F, + // 00111111 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00111000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–“â–‘â–“ + // 00111111 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–“â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [X] 0x58 ***************** + 0x63, 0x14, 0x08, 0x14, 0x63, + // 01100011 â–“â–‘â–‘â–‘â–“ + // 00010100 â–“â–‘â–‘â–‘â–“ + // 00001000 â–‘â–“â–‘â–“â–‘ + // 00010100 â–‘â–‘â–“â–‘â–‘ + // 01100011 â–‘â–“â–‘â–“â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [Y] 0x59 ***************** + 0x03, 0x04, 0x78, 0x04, 0x03, + // 00000011 â–“â–‘â–‘â–‘â–“ + // 00000100 â–“â–‘â–‘â–‘â–“ + // 01111000 â–‘â–“â–‘â–“â–‘ + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 00000011 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [Z] 0x5a ***************** + 0x61, 0x59, 0x49, 0x4D, 0x43, + // 01100001 â–“â–“â–“â–“â–“ + // 01011001 â–‘â–‘â–‘â–‘â–“ + // 01001001 â–‘â–‘â–‘â–“â–‘ + // 01001101 â–‘â–“â–“â–“â–‘ + // 01000011 â–‘â–“â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [[] 0x5b ***************** + 0x00, 0x7F, 0x41, 0x41, 0x41, + // 00000000 â–‘â–“â–“â–“â–“ + // 01111111 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–“â–‘â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [\] 0x5c ***************** + 0x02, 0x04, 0x08, 0x10, 0x20, + // 00000010 â–‘â–‘â–‘â–‘â–‘ + // 00000100 â–“â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–“â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–“â–‘â–‘ + // 00100000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // []] 0x5d ***************** + 0x00, 0x41, 0x41, 0x41, 0x7F, + // 00000000 â–‘â–“â–“â–“â–“ + // 01000001 â–‘â–‘â–‘â–‘â–“ + // 01000001 â–‘â–‘â–‘â–‘â–“ + // 01000001 â–‘â–‘â–‘â–‘â–“ + // 01111111 â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [^] 0x5e ***************** + 0x04, 0x02, 0x01, 0x02, 0x04, + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 00000010 â–‘â–“â–‘â–“â–‘ + // 00000001 â–“â–‘â–‘â–‘â–“ + // 00000010 â–‘â–‘â–‘â–‘â–‘ + // 00000100 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [_] 0x5f ***************** + 0x40, 0x40, 0x40, 0x40, 0x40, + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [`] 0x60 ***************** + 0x00, 0x03, 0x07, 0x08, 0x00, + // 00000000 â–‘â–“â–“â–‘â–‘ + // 00000011 â–‘â–“â–“â–‘â–‘ + // 00000111 â–‘â–‘â–“â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** +#ifndef FONTSET_MINI + // [a] 0x61 ***************** + 0x20, 0x54, 0x54, 0x78, 0x40, + // 00100000 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–‘â–‘ + // 01111000 â–‘â–‘â–‘â–“â–‘ + // 01000000 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [b] 0x62 ***************** + 0x7F, 0x28, 0x44, 0x44, 0x38, + // 01111111 â–“â–‘â–‘â–‘â–‘ + // 00101000 â–“â–‘â–‘â–‘â–‘ + // 01000100 â–“â–‘â–“â–“â–‘ + // 01000100 â–“â–“â–‘â–‘â–“ + // 00111000 â–“â–‘â–‘â–‘â–“ + // â–“â–“â–‘â–‘â–“ + // â–“â–‘â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [c] 0x63 ***************** + 0x38, 0x44, 0x44, 0x44, 0x28, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–“â–“â–“â–‘ + // 01000100 â–“â–‘â–‘â–‘â–“ + // 00101000 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [d] 0x64 ***************** + 0x38, 0x44, 0x44, 0x28, 0x7F, + // 00111000 â–‘â–‘â–‘â–‘â–“ + // 01000100 â–‘â–‘â–‘â–‘â–“ + // 01000100 â–‘â–“â–“â–‘â–“ + // 00101000 â–“â–‘â–‘â–“â–“ + // 01111111 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [e] 0x65 ***************** + 0x38, 0x54, 0x54, 0x54, 0x18, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–“â–‘ + // 01010100 â–“â–‘â–‘â–‘â–“ + // 00011000 â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [f] 0x66 ***************** + 0x00, 0x08, 0x7E, 0x09, 0x02, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00001000 â–‘â–‘â–“â–‘â–“ + // 01111110 â–‘â–‘â–“â–‘â–‘ + // 00001001 â–‘â–“â–“â–“â–‘ + // 00000010 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [g] 0x67 ***************** + 0x18, 0xA4, 0xA4, 0x9C, 0x78, + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 10100100 â–‘â–‘â–‘â–‘â–‘ + // 10100100 â–‘â–“â–“â–“â–‘ + // 10011100 â–“â–‘â–‘â–“â–“ + // 01111000 â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // ************************** + // [h] 0x68 ***************** + 0x7F, 0x08, 0x04, 0x04, 0x78, + // 01111111 â–“â–‘â–‘â–‘â–‘ + // 00001000 â–“â–‘â–‘â–‘â–‘ + // 00000100 â–“â–‘â–“â–“â–‘ + // 00000100 â–“â–“â–‘â–‘â–“ + // 01111000 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [i] 0x69 ***************** + 0x00, 0x44, 0x7D, 0x40, 0x00, + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01111101 â–‘â–“â–“â–‘â–‘ + // 01000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [j] 0x6a ***************** + 0x20, 0x40, 0x40, 0x3D, 0x00, + // 00100000 â–‘â–‘â–‘â–“â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–“â–‘ + // 00111101 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [k] 0x6b ***************** + 0x7F, 0x10, 0x28, 0x44, 0x00, + // 01111111 â–“â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–‘ + // 00101000 â–“â–‘â–‘â–“â–‘ + // 01000100 â–“â–‘â–“â–‘â–‘ + // 00000000 â–“â–“â–‘â–‘â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [l] 0x6c ***************** + 0x00, 0x41, 0x7F, 0x40, 0x00, + // 00000000 â–‘â–“â–“â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 01111111 â–‘â–‘â–“â–‘â–‘ + // 01000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [m] 0x6d ***************** + 0x7C, 0x04, 0x78, 0x04, 0x78, + // 01111100 â–‘â–‘â–‘â–‘â–‘ + // 00000100 â–‘â–‘â–‘â–‘â–‘ + // 01111000 â–“â–“â–‘â–“â–‘ + // 00000100 â–“â–‘â–“â–‘â–“ + // 01111000 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–“â–‘â–“ + // â–“â–‘â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [n] 0x6e ***************** + 0x7C, 0x08, 0x04, 0x04, 0x78, + // 01111100 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00000100 â–“â–‘â–“â–“â–‘ + // 00000100 â–“â–“â–‘â–‘â–“ + // 01111000 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [o] 0x6f ***************** + 0x38, 0x44, 0x44, 0x44, 0x38, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–“â–“â–“â–‘ + // 01000100 â–“â–‘â–‘â–‘â–“ + // 00111000 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [p] 0x70 ***************** + 0xFC, 0x18, 0x24, 0x24, 0x18, + // 11111100 â–‘â–‘â–‘â–‘â–‘ + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 00100100 â–“â–‘â–“â–“â–‘ + // 00100100 â–“â–“â–‘â–‘â–“ + // 00011000 â–“â–“â–‘â–‘â–“ + // â–“â–‘â–“â–“â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // ************************** + // [q] 0x71 ***************** + 0x18, 0x24, 0x24, 0x18, 0xFC, + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 00100100 â–‘â–‘â–‘â–‘â–‘ + // 00100100 â–‘â–“â–“â–‘â–“ + // 00011000 â–“â–‘â–‘â–“â–“ + // 11111100 â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–“ + // ************************** + // [r] 0x72 ***************** + 0x7C, 0x08, 0x04, 0x04, 0x08, + // 01111100 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00000100 â–“â–‘â–“â–“â–‘ + // 00000100 â–“â–“â–‘â–‘â–“ + // 00001000 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [s] 0x73 ***************** + 0x48, 0x54, 0x54, 0x54, 0x24, + // 01001000 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–“â–“ + // 01010100 â–“â–‘â–‘â–‘â–‘ + // 00100100 â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [t] 0x74 ***************** + 0x04, 0x04, 0x3F, 0x44, 0x24, + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 00111111 â–“â–“â–“â–“â–“ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // 00100100 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [u] 0x75 ***************** + 0x3C, 0x40, 0x40, 0x20, 0x7C, + // 00111100 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00100000 â–“â–‘â–‘â–‘â–“ + // 01111100 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [v] 0x76 ***************** + 0x1C, 0x20, 0x40, 0x20, 0x1C, + // 00011100 â–‘â–‘â–‘â–‘â–‘ + // 00100000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00100000 â–“â–‘â–‘â–‘â–“ + // 00011100 â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [w] 0x77 ***************** + 0x3C, 0x40, 0x30, 0x40, 0x3C, + // 00111100 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 00110000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00111100 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–“â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [x] 0x78 ***************** + 0x44, 0x28, 0x10, 0x28, 0x44, + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 00101000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–“ + // 00101000 â–‘â–“â–‘â–“â–‘ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–“â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [y] 0x79 ***************** + 0x4C, 0x90, 0x90, 0x90, 0x7C, + // 01001100 â–‘â–‘â–‘â–‘â–‘ + // 10010000 â–‘â–‘â–‘â–‘â–‘ + // 10010000 â–“â–‘â–‘â–‘â–“ + // 10010000 â–“â–‘â–‘â–‘â–“ + // 01111100 â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // ************************** + // [z] 0x7a ***************** + 0x44, 0x64, 0x54, 0x4C, 0x44, + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01100100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–“â–“â–“â–“â–“ + // 01001100 â–‘â–‘â–‘â–“â–‘ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [{] 0x7b ***************** + 0x00, 0x08, 0x36, 0x41, 0x00, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00001000 â–‘â–‘â–“â–‘â–‘ + // 00110110 â–‘â–‘â–“â–‘â–‘ + // 01000001 â–‘â–“â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [|] 0x7c ***************** + 0x00, 0x00, 0x77, 0x00, 0x00, + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 01110111 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [}] 0x7d ***************** + 0x00, 0x41, 0x36, 0x08, 0x00, + // 00000000 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 00110110 â–‘â–‘â–“â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x7e ***************** + 0x02, 0x01, 0x02, 0x04, 0x02, + // 00000010 â–‘â–“â–‘â–‘â–‘ + // 00000001 â–“â–‘â–“â–‘â–“ + // 00000010 â–‘â–‘â–‘â–“â–‘ + // 00000100 â–‘â–‘â–‘â–‘â–‘ + // 00000010 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x7f ***************** + 0x3C, 0x26, 0x23, 0x26, 0x3C, + // 00111100 â–‘â–‘â–“â–‘â–‘ + // 00100110 â–‘â–“â–“â–“â–‘ + // 00100011 â–“â–“â–‘â–“â–“ + // 00100110 â–“â–‘â–‘â–‘â–“ + // 00111100 â–“â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x80 ***************** + 0x1E, 0xA1, 0xA1, 0x61, 0x12, + // 00011110 â–‘â–“â–“â–“â–‘ + // 10100001 â–“â–‘â–‘â–‘â–“ + // 10100001 â–“â–‘â–‘â–‘â–‘ + // 01100001 â–“â–‘â–‘â–‘â–‘ + // 00010010 â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–‘ + // ************************** + // [?] 0x81 ***************** + 0x3A, 0x40, 0x40, 0x20, 0x7A, + // 00111010 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 00100000 â–“â–‘â–‘â–‘â–“ + // 01111010 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x82 ***************** + 0x38, 0x54, 0x54, 0x55, 0x59, + // 00111000 â–‘â–‘â–‘â–“â–“ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–“â–‘ + // 01010101 â–“â–‘â–‘â–‘â–“ + // 01011001 â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x83 ***************** + 0x21, 0x55, 0x55, 0x79, 0x41, + // 00100001 â–“â–“â–“â–“â–“ + // 01010101 â–‘â–‘â–‘â–‘â–‘ + // 01010101 â–‘â–“â–“â–‘â–‘ + // 01111001 â–‘â–‘â–‘â–“â–‘ + // 01000001 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x84 ***************** + 0x21, 0x54, 0x54, 0x78, 0x41, + // 00100001 â–“â–‘â–‘â–‘â–“ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–‘â–‘ + // 01111000 â–‘â–‘â–‘â–“â–‘ + // 01000001 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x85 ***************** + 0x21, 0x55, 0x54, 0x78, 0x40, + // 00100001 â–“â–“â–‘â–‘â–‘ + // 01010101 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–‘â–‘ + // 01111000 â–‘â–‘â–‘â–“â–‘ + // 01000000 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x86 ***************** + 0x20, 0x54, 0x55, 0x79, 0x40, + // 00100000 â–‘â–‘â–“â–“â–‘ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010101 â–‘â–“â–“â–‘â–‘ + // 01111001 â–‘â–‘â–‘â–“â–‘ + // 01000000 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x87 ***************** + 0x0C, 0x1E, 0x52, 0x72, 0x12, + // 00001100 â–‘â–‘â–‘â–‘â–‘ + // 00011110 â–‘â–“â–“â–“â–“ + // 01010010 â–“â–“â–‘â–‘â–‘ + // 01110010 â–“â–“â–‘â–‘â–‘ + // 00010010 â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x88 ***************** + 0x39, 0x55, 0x55, 0x55, 0x59, + // 00111001 â–“â–“â–“â–“â–“ + // 01010101 â–‘â–‘â–‘â–‘â–‘ + // 01010101 â–‘â–“â–“â–“â–‘ + // 01010101 â–“â–‘â–‘â–‘â–“ + // 01011001 â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x89 ***************** + 0x39, 0x54, 0x54, 0x54, 0x59, + // 00111001 â–“â–‘â–‘â–‘â–“ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–“â–‘ + // 01010100 â–“â–‘â–‘â–‘â–“ + // 01011001 â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x8a ***************** + 0x39, 0x55, 0x54, 0x54, 0x58, + // 00111001 â–“â–“â–‘â–‘â–‘ + // 01010101 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–“â–‘ + // 01010100 â–“â–‘â–‘â–‘â–“ + // 01011000 â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x8b ***************** + 0x00, 0x00, 0x45, 0x7C, 0x41, + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 01000101 â–‘â–‘â–“â–“â–‘ + // 01111100 â–‘â–‘â–‘â–“â–‘ + // 01000001 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x8c ***************** + 0x00, 0x02, 0x45, 0x7D, 0x42, + // 00000000 â–‘â–‘â–“â–“â–‘ + // 00000010 â–‘â–“â–‘â–‘â–“ + // 01000101 â–‘â–‘â–“â–“â–‘ + // 01111101 â–‘â–‘â–‘â–“â–‘ + // 01000010 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x8d ***************** + 0x00, 0x01, 0x45, 0x7C, 0x40, + // 00000000 â–‘â–“â–“â–‘â–‘ + // 00000001 â–‘â–‘â–‘â–‘â–‘ + // 01000101 â–‘â–‘â–“â–“â–‘ + // 01111100 â–‘â–‘â–‘â–“â–‘ + // 01000000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x8e ***************** + 0xF0, 0x29, 0x24, 0x29, 0xF0, + // 11110000 â–‘â–“â–‘â–“â–‘ + // 00101001 â–‘â–‘â–‘â–‘â–‘ + // 00100100 â–‘â–‘â–“â–‘â–‘ + // 00101001 â–‘â–“â–‘â–“â–‘ + // 11110000 â–“â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // ************************** + // [?] 0x8f ***************** + 0xF0, 0x28, 0x25, 0x28, 0xF0, + // 11110000 â–‘â–‘â–“â–‘â–‘ + // 00101000 â–‘â–‘â–‘â–‘â–‘ + // 00100101 â–‘â–‘â–“â–‘â–‘ + // 00101000 â–‘â–“â–‘â–“â–‘ + // 11110000 â–“â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // ************************** + // [?] 0x90 ***************** + 0x7C, 0x54, 0x55, 0x45, 0x00, + // 01111100 â–‘â–‘â–“â–“â–‘ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010101 â–“â–“â–“â–“â–‘ + // 01000101 â–“â–‘â–‘â–‘â–‘ + // 00000000 â–“â–“â–“â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x91 ***************** + 0x20, 0x54, 0x54, 0x7C, 0x54, + // 00100000 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–“â–“ + // 01111100 â–‘â–‘â–‘â–“â–‘ + // 01010100 â–‘â–“â–“â–“â–“ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x92 ***************** + 0x7C, 0x0A, 0x09, 0x7F, 0x49, + // 01111100 â–‘â–‘â–“â–“â–“ + // 00001010 â–‘â–“â–‘â–“â–‘ + // 00001001 â–“â–‘â–‘â–“â–‘ + // 01111111 â–“â–“â–“â–“â–“ + // 01001001 â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x93 ***************** + 0x32, 0x49, 0x49, 0x49, 0x32, + // 00110010 â–‘â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–‘â–‘â–‘â–‘â–‘ + // 01001001 â–‘â–“â–“â–“â–‘ + // 00110010 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x94 ***************** + 0x32, 0x48, 0x48, 0x48, 0x32, + // 00110010 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–“â–‘â–‘â–‘â–“ + // 01001000 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–‘â–“â–“â–“â–‘ + // 00110010 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x95 ***************** + 0x32, 0x4A, 0x48, 0x48, 0x30, + // 00110010 â–‘â–‘â–‘â–‘â–‘ + // 01001010 â–“â–“â–‘â–‘â–‘ + // 01001000 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–‘â–“â–“â–“â–‘ + // 00110000 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x96 ***************** + 0x3A, 0x41, 0x41, 0x21, 0x7A, + // 00111010 â–‘â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–‘â–‘â–‘â–‘â–‘ + // 00100001 â–“â–‘â–‘â–‘â–“ + // 01111010 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x97 ***************** + 0x3A, 0x42, 0x40, 0x20, 0x78, + // 00111010 â–‘â–‘â–‘â–‘â–‘ + // 01000010 â–“â–“â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 00100000 â–“â–‘â–‘â–‘â–“ + // 01111000 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x98 ***************** + 0x00, 0x9D, 0xA0, 0xA0, 0x7D, + // 00000000 â–‘â–“â–‘â–‘â–“ + // 10011101 â–‘â–‘â–‘â–‘â–‘ + // 10100000 â–‘â–“â–‘â–‘â–“ + // 10100000 â–‘â–“â–‘â–‘â–“ + // 01111101 â–‘â–“â–‘â–‘â–“ + // â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // ************************** + // [?] 0x99 ***************** + 0x39, 0x44, 0x44, 0x44, 0x39, + // 00111001 â–“â–‘â–‘â–‘â–“ + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–“â–“â–“â–‘ + // 01000100 â–“â–‘â–‘â–‘â–“ + // 00111001 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x9a ***************** + 0x3D, 0x40, 0x40, 0x40, 0x3D, + // 00111101 â–“â–‘â–‘â–‘â–“ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00111101 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x9b ***************** + 0x3C, 0x24, 0xFF, 0x24, 0x24, + // 00111100 â–‘â–‘â–“â–‘â–‘ + // 00100100 â–‘â–‘â–“â–‘â–‘ + // 11111111 â–“â–“â–“â–“â–“ + // 00100100 â–“â–‘â–“â–‘â–‘ + // 00100100 â–“â–‘â–“â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // ************************** + // [?] 0x9c ***************** + 0x48, 0x7E, 0x49, 0x43, 0x66, + // 01001000 â–‘â–‘â–“â–“â–‘ + // 01111110 â–‘â–“â–‘â–“â–“ + // 01001001 â–‘â–“â–‘â–‘â–“ + // 01000011 â–“â–“â–“â–‘â–‘ + // 01100110 â–‘â–“â–‘â–‘â–‘ + // â–‘â–“â–‘â–‘â–“ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x9d ***************** + 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, + // 00101011 â–“â–“â–‘â–“â–“ + // 00101111 â–“â–“â–‘â–“â–“ + // 11111100 â–‘â–“â–“â–“â–‘ + // 00101111 â–“â–“â–“â–“â–“ + // 00101011 â–‘â–‘â–“â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // ************************** + // [?] 0x9e ***************** + 0xFF, 0x09, 0x29, 0xF6, 0x20, + // 11111111 â–“â–“â–“â–‘â–‘ + // 00001001 â–“â–‘â–‘â–“â–‘ + // 00101001 â–“â–‘â–‘â–“â–‘ + // 11110110 â–“â–“â–“â–‘â–‘ + // 00100000 â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–“â–“â–“ + // â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // ************************** + // [?] 0x9f ***************** + 0xC0, 0x88, 0x7E, 0x09, 0x03, + // 11000000 â–‘â–‘â–‘â–“â–“ + // 10001000 â–‘â–‘â–“â–‘â–“ + // 01111110 â–‘â–‘â–“â–‘â–‘ + // 00001001 â–‘â–“â–“â–“â–‘ + // 00000011 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–“â–“â–‘â–‘â–‘ + // ************************** + // [?] 0xa0 ***************** + 0x20, 0x54, 0x54, 0x79, 0x41, + // 00100000 â–‘â–‘â–‘â–“â–“ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–‘â–‘ + // 01111001 â–‘â–‘â–‘â–“â–‘ + // 01000001 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa1 ***************** + 0x00, 0x00, 0x44, 0x7D, 0x41, + // 00000000 â–‘â–‘â–‘â–“â–“ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–‘â–“â–“â–‘ + // 01111101 â–‘â–‘â–‘â–“â–‘ + // 01000001 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa2 ***************** + 0x30, 0x48, 0x48, 0x4A, 0x32, + // 00110000 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–‘â–‘â–‘â–“â–“ + // 01001000 â–‘â–‘â–‘â–‘â–‘ + // 01001010 â–‘â–“â–“â–“â–‘ + // 00110010 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa3 ***************** + 0x38, 0x40, 0x40, 0x22, 0x7A, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–“â–“ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 00100010 â–“â–‘â–‘â–‘â–“ + // 01111010 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa4 ***************** + 0x00, 0x7A, 0x0A, 0x0A, 0x72, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 01111010 â–‘â–“â–“â–“â–“ + // 00001010 â–‘â–‘â–‘â–‘â–‘ + // 00001010 â–‘â–“â–“â–“â–‘ + // 01110010 â–‘â–“â–‘â–‘â–“ + // â–‘â–“â–‘â–‘â–“ + // â–‘â–“â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa5 ***************** + 0x7D, 0x0D, 0x19, 0x31, 0x7D, + // 01111101 â–“â–“â–“â–“â–“ + // 00001101 â–‘â–‘â–‘â–‘â–‘ + // 00011001 â–“â–“â–‘â–‘â–“ + // 00110001 â–“â–“â–“â–‘â–“ + // 01111101 â–“â–‘â–“â–“â–“ + // â–“â–‘â–‘â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa6 ***************** + 0x26, 0x29, 0x29, 0x2F, 0x28, + // 00100110 â–‘â–“â–“â–“â–‘ + // 00101001 â–“â–‘â–‘â–“â–‘ + // 00101001 â–“â–‘â–‘â–“â–‘ + // 00101111 â–‘â–“â–“â–“â–“ + // 00101000 â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa7 ***************** + 0x26, 0x29, 0x29, 0x29, 0x26, + // 00100110 â–‘â–“â–“â–“â–‘ + // 00101001 â–“â–‘â–‘â–‘â–“ + // 00101001 â–“â–‘â–‘â–‘â–“ + // 00101001 â–‘â–“â–“â–“â–‘ + // 00100110 â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa8 ***************** + 0x30, 0x48, 0x4D, 0x40, 0x20, + // 00110000 â–‘â–‘â–“â–‘â–‘ + // 01001000 â–‘â–‘â–‘â–‘â–‘ + // 01001101 â–‘â–‘â–“â–‘â–‘ + // 01000000 â–‘â–“â–“â–‘â–‘ + // 00100000 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa9 ***************** + 0x38, 0x08, 0x08, 0x08, 0x08, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–“â–“â–“â–“â–“ + // 00001000 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xaa ***************** + 0x08, 0x08, 0x08, 0x08, 0x38, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–“â–“â–“â–“â–“ + // 00111000 â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xab ***************** + 0x2F, 0x10, 0xC8, 0xAC, 0xBA, + // 00101111 â–“â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–“ + // 11001000 â–“â–‘â–‘â–“â–‘ + // 10101100 â–“â–‘â–“â–“â–“ + // 10111010 â–‘â–“â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–“â–“ + // ************************** + // [?] 0xac ***************** + 0x2F, 0x10, 0x28, 0x34, 0xFA, + // 00101111 â–“â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–“ + // 00101000 â–“â–‘â–‘â–“â–‘ + // 00110100 â–“â–‘â–“â–‘â–“ + // 11111010 â–‘â–“â–‘â–“â–“ + // â–“â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–“ + // ************************** + // [?] 0xad ***************** + 0x00, 0x00, 0x7B, 0x00, 0x00, + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 01111011 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xae ***************** + 0x08, 0x14, 0x2A, 0x14, 0x22, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00101010 â–‘â–“â–‘â–“â–‘ + // 00010100 â–“â–‘â–“â–‘â–‘ + // 00100010 â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xaf ***************** + 0x22, 0x14, 0x2A, 0x14, 0x08, + // 00100010 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–‘â–“â–‘â–‘ + // 00101010 â–‘â–“â–‘â–“â–‘ + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00001000 â–‘â–“â–‘â–“â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xb0 ***************** + 0xAA, 0x00, 0x55, 0x00, 0xAA, + // 10101010 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–“â–‘â–‘â–‘â–“ + // 01010101 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–“â–‘â–‘â–‘â–“ + // 10101010 â–‘â–‘â–“â–‘â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–“â–‘â–‘â–‘â–“ + // ************************** + // [?] 0xb1 ***************** + 0xAA, 0x55, 0xAA, 0x55, 0xAA, + // 10101010 â–‘â–“â–‘â–“â–‘ + // 01010101 â–“â–‘â–“â–‘â–“ + // 10101010 â–‘â–“â–‘â–“â–‘ + // 01010101 â–“â–‘â–“â–‘â–“ + // 10101010 â–‘â–“â–‘â–“â–‘ + // â–“â–‘â–“â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–“â–‘â–“â–‘â–“ + // ************************** + // [?] 0xb2 ***************** + 0x00, 0x00, 0x00, 0xFF, 0x00, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xb3 ***************** + 0x10, 0x10, 0x10, 0xFF, 0x00, + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xb4 ***************** + 0x14, 0x14, 0x14, 0xFF, 0x00, + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–‘ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xb5 ***************** + 0x10, 0x10, 0xFF, 0x00, 0xFF, + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–“â–“â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xb6 ***************** + 0x10, 0x10, 0xF0, 0x10, 0xF0, + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xb7 ***************** + 0x14, 0x14, 0x14, 0xFC, 0x00, + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–‘ + // 11111100 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xb8 ***************** + 0x14, 0x14, 0xF7, 0x00, 0xFF, + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00010100 â–‘â–‘â–“â–‘â–“ + // 11110111 â–“â–“â–“â–‘â–“ + // 00000000 â–‘â–‘â–‘â–‘â–“ + // 11111111 â–“â–“â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xb9 ***************** + 0x00, 0x00, 0xFF, 0x00, 0xFF, + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xba ***************** + 0x14, 0x14, 0xF4, 0x04, 0xFC, + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 11110100 â–“â–“â–“â–“â–“ + // 00000100 â–‘â–‘â–‘â–‘â–“ + // 11111100 â–“â–“â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xbb ***************** + 0x14, 0x14, 0x17, 0x10, 0x1F, + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00010111 â–“â–“â–“â–‘â–“ + // 00010000 â–‘â–‘â–‘â–‘â–“ + // 00011111 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xbc ***************** + 0x10, 0x10, 0x1F, 0x10, 0x1F, + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xbd ***************** + 0x14, 0x14, 0x14, 0x1F, 0x00, + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–‘ + // 00011111 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xbe ***************** + 0x10, 0x10, 0x10, 0xF0, 0x00, + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xbf ***************** + 0x00, 0x00, 0x00, 0x1F, 0x10, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00011111 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xc0 ***************** + 0x10, 0x10, 0x10, 0x1F, 0x10, + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00011111 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xc1 ***************** + 0x10, 0x10, 0x10, 0xF0, 0x10, + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xc2 ***************** + 0x00, 0x00, 0x00, 0xFF, 0x10, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xc3 ***************** + 0x10, 0x10, 0x10, 0x10, 0x10, + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xc4 ***************** + 0x10, 0x10, 0x10, 0xFF, 0x10, + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xc5 ***************** + 0x00, 0x00, 0x00, 0xFF, 0x14, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–“ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xc6 ***************** + 0x00, 0x00, 0xFF, 0x00, 0xFF, + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xc7 ***************** + 0x00, 0x00, 0x1F, 0x10, 0x17, + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–‘ + // 00010111 â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xc8 ***************** + 0x00, 0x00, 0xFC, 0x04, 0xF4, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 11111100 â–‘â–‘â–“â–“â–“ + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 11110100 â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xc9 ***************** + 0x14, 0x14, 0x17, 0x10, 0x17, + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00010111 â–“â–“â–“â–‘â–“ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010111 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xca ***************** + 0x14, 0x14, 0xF4, 0x04, 0xF4, + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 11110100 â–“â–“â–“â–“â–“ + // 00000100 â–‘â–‘â–‘â–‘â–‘ + // 11110100 â–“â–“â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xcb ***************** + 0x00, 0x00, 0xFF, 0x00, 0xF7, + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 11110111 â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xcc ***************** + 0x14, 0x14, 0x14, 0x14, 0x14, + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xcd ***************** + 0x14, 0x14, 0xF7, 0x00, 0xF7, + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00010100 â–‘â–‘â–“â–‘â–“ + // 11110111 â–“â–“â–“â–‘â–“ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 11110111 â–“â–“â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xce ***************** + 0x14, 0x14, 0x14, 0x17, 0x14, + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // 00010111 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xcf ***************** + 0x10, 0x10, 0x1F, 0x10, 0x1F, + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xd0 ***************** + 0x14, 0x14, 0x14, 0xF4, 0x14, + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // 11110100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xd1 ***************** + 0x10, 0x10, 0xF0, 0x10, 0xF0, + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xd2 ***************** + 0x00, 0x00, 0x1F, 0x10, 0x1F, + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xd3 ***************** + 0x00, 0x00, 0x00, 0x1F, 0x14, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–“ + // 00011111 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xd4 ***************** + 0x00, 0x00, 0x00, 0xFC, 0x14, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–“â–“ + // 11111100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xd5 ***************** + 0x00, 0x00, 0xF0, 0x10, 0xF0, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xd6 ***************** + 0x10, 0x10, 0xFF, 0x10, 0xFF, + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xd7 ***************** + 0x14, 0x14, 0x14, 0xFF, 0x14, + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xd8 ***************** + 0x10, 0x10, 0x10, 0x1F, 0x00, + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00011111 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xd9 ***************** + 0x00, 0x00, 0x00, 0xF0, 0x10, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xda ***************** + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + // 11111111 â–“â–“â–“â–“â–“ + // 11111111 â–“â–“â–“â–“â–“ + // 11111111 â–“â–“â–“â–“â–“ + // 11111111 â–“â–“â–“â–“â–“ + // 11111111 â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // ************************** + // [?] 0xdb ***************** + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // ************************** + // [?] 0xdc ***************** + 0xFF, 0xFF, 0xFF, 0x00, 0x00, + // 11111111 â–“â–“â–“â–‘â–‘ + // 11111111 â–“â–“â–“â–‘â–‘ + // 11111111 â–“â–“â–“â–‘â–‘ + // 00000000 â–“â–“â–“â–‘â–‘ + // 00000000 â–“â–“â–“â–‘â–‘ + // â–“â–“â–“â–‘â–‘ + // â–“â–“â–“â–‘â–‘ + // â–“â–“â–“â–‘â–‘ + // ************************** + // [?] 0xdd ***************** + 0x00, 0x00, 0x00, 0xFF, 0xFF, + // 00000000 â–‘â–‘â–‘â–“â–“ + // 00000000 â–‘â–‘â–‘â–“â–“ + // 00000000 â–‘â–‘â–‘â–“â–“ + // 11111111 â–‘â–‘â–‘â–“â–“ + // 11111111 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–“ + // ************************** + // [?] 0xde ***************** + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + // 00001111 â–“â–“â–“â–“â–“ + // 00001111 â–“â–“â–“â–“â–“ + // 00001111 â–“â–“â–“â–“â–“ + // 00001111 â–“â–“â–“â–“â–“ + // 00001111 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xdf ***************** + 0x38, 0x44, 0x44, 0x38, 0x44, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–“â–“â–‘â–“ + // 00111000 â–“â–‘â–‘â–“â–‘ + // 01000100 â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe0 ***************** + 0x7C, 0x2A, 0x2A, 0x3E, 0x14, + // 01111100 â–‘â–‘â–‘â–‘â–‘ + // 00101010 â–‘â–“â–“â–“â–‘ + // 00101010 â–“â–‘â–‘â–“â–“ + // 00111110 â–“â–“â–“â–“â–‘ + // 00010100 â–“â–‘â–‘â–“â–“ + // â–“â–“â–“â–“â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe1 ***************** + 0x7E, 0x02, 0x02, 0x06, 0x06, + // 01111110 â–‘â–‘â–‘â–‘â–‘ + // 00000010 â–“â–“â–“â–“â–“ + // 00000010 â–“â–‘â–‘â–“â–“ + // 00000110 â–“â–‘â–‘â–‘â–‘ + // 00000110 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe2 ***************** + 0x02, 0x7E, 0x02, 0x7E, 0x02, + // 00000010 â–‘â–‘â–‘â–‘â–‘ + // 01111110 â–“â–“â–“â–“â–“ + // 00000010 â–‘â–“â–‘â–“â–‘ + // 01111110 â–‘â–“â–‘â–“â–‘ + // 00000010 â–‘â–“â–‘â–“â–‘ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe3 ***************** + 0x63, 0x55, 0x49, 0x41, 0x63, + // 01100011 â–“â–“â–“â–“â–“ + // 01010101 â–“â–‘â–‘â–‘â–“ + // 01001001 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 01100011 â–‘â–“â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe4 ***************** + 0x38, 0x44, 0x44, 0x3C, 0x04, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–“â–“â–“â–“ + // 00111100 â–“â–‘â–‘â–“â–‘ + // 00000100 â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe5 ***************** + 0x40, 0x7E, 0x20, 0x1E, 0x20, + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01111110 â–‘â–“â–‘â–“â–‘ + // 00100000 â–‘â–“â–‘â–“â–‘ + // 00011110 â–‘â–“â–‘â–“â–‘ + // 00100000 â–‘â–“â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–“ + // â–“â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe6 ***************** + 0x06, 0x02, 0x7E, 0x02, 0x02, + // 00000110 â–‘â–‘â–‘â–‘â–‘ + // 00000010 â–“â–“â–“â–“â–“ + // 01111110 â–“â–‘â–“â–‘â–‘ + // 00000010 â–‘â–‘â–“â–‘â–‘ + // 00000010 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe7 ***************** + 0x99, 0xA5, 0xE7, 0xA5, 0x99, + // 10011001 â–“â–“â–“â–“â–“ + // 10100101 â–‘â–‘â–“â–‘â–‘ + // 11100111 â–‘â–“â–“â–“â–‘ + // 10100101 â–“â–‘â–‘â–‘â–“ + // 10011001 â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–“â–“â–“â–“â–“ + // ************************** + // [?] 0xe8 ***************** + 0x1C, 0x2A, 0x49, 0x2A, 0x1C, + // 00011100 â–‘â–‘â–“â–‘â–‘ + // 00101010 â–‘â–“â–‘â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 00101010 â–“â–“â–“â–“â–“ + // 00011100 â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe9 ***************** + 0x4C, 0x72, 0x01, 0x72, 0x4C, + // 01001100 â–‘â–‘â–“â–‘â–‘ + // 01110010 â–‘â–“â–‘â–“â–‘ + // 00000001 â–“â–‘â–‘â–‘â–“ + // 01110010 â–“â–‘â–‘â–‘â–“ + // 01001100 â–‘â–“â–‘â–“â–‘ + // â–‘â–“â–‘â–“â–‘ + // â–“â–“â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xea ***************** + 0x30, 0x4A, 0x4D, 0x4D, 0x30, + // 00110000 â–‘â–‘â–“â–“â–‘ + // 01001010 â–‘â–“â–‘â–‘â–‘ + // 01001101 â–‘â–‘â–“â–“â–‘ + // 01001101 â–‘â–“â–“â–“â–‘ + // 00110000 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xeb ***************** + 0x30, 0x48, 0x78, 0x48, 0x30, + // 00110000 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–‘â–‘â–‘â–‘â–‘ + // 01111000 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–‘â–“â–“â–“â–‘ + // 00110000 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–“â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xec ***************** + 0xBC, 0x62, 0x5A, 0x46, 0x3D, + // 10111100 â–‘â–‘â–‘â–‘â–“ + // 01100010 â–‘â–“â–“â–“â–‘ + // 01011010 â–“â–‘â–‘â–“â–“ + // 01000110 â–“â–‘â–“â–‘â–“ + // 00111101 â–“â–‘â–“â–‘â–“ + // â–“â–“â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xed ***************** + 0x3E, 0x49, 0x49, 0x49, 0x00, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–‘ + // 01001001 â–“â–‘â–‘â–‘â–‘ + // 01001001 â–“â–“â–“â–“â–‘ + // 00000000 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xee ***************** + 0x7E, 0x01, 0x01, 0x01, 0x7E, + // 01111110 â–‘â–“â–“â–“â–‘ + // 00000001 â–“â–‘â–‘â–‘â–“ + // 00000001 â–“â–‘â–‘â–‘â–“ + // 00000001 â–“â–‘â–‘â–‘â–“ + // 01111110 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xef ***************** + 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, + // 00101010 â–‘â–‘â–‘â–‘â–‘ + // 00101010 â–“â–“â–“â–“â–“ + // 00101010 â–‘â–‘â–‘â–‘â–‘ + // 00101010 â–“â–“â–“â–“â–“ + // 00101010 â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf0 ***************** + 0x44, 0x44, 0x5F, 0x44, 0x44, + // 01000100 â–‘â–‘â–“â–‘â–‘ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // 01011111 â–“â–“â–“â–“â–“ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf1 ***************** + 0x40, 0x51, 0x4A, 0x44, 0x40, + // 01000000 â–‘â–“â–‘â–‘â–‘ + // 01010001 â–‘â–‘â–“â–‘â–‘ + // 01001010 â–‘â–‘â–‘â–“â–‘ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // 01000000 â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf2 ***************** + 0x40, 0x44, 0x4A, 0x51, 0x40, + // 01000000 â–‘â–‘â–‘â–“â–‘ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // 01001010 â–‘â–“â–‘â–‘â–‘ + // 01010001 â–‘â–‘â–“â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf3 ***************** + 0x00, 0x00, 0xFF, 0x01, 0x03, + // 00000000 â–‘â–‘â–“â–“â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–‘ + // 00000001 â–‘â–‘â–“â–‘â–‘ + // 00000011 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // ************************** + // [?] 0xf4 ***************** + 0xE0, 0x80, 0xFF, 0x00, 0x00, + // 11100000 â–‘â–‘â–“â–‘â–‘ + // 10000000 â–‘â–‘â–“â–‘â–‘ + // 11111111 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–“â–“â–“â–‘â–‘ + // ************************** + // [?] 0xf5 ***************** + 0x08, 0x08, 0x6B, 0x6B, 0x08, + // 00001000 â–‘â–‘â–“â–“â–‘ + // 00001000 â–‘â–‘â–“â–“â–‘ + // 01101011 â–‘â–‘â–‘â–‘â–‘ + // 01101011 â–“â–“â–“â–“â–“ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf6 ***************** + 0x36, 0x12, 0x36, 0x24, 0x36, + // 00110110 â–‘â–‘â–‘â–‘â–‘ + // 00010010 â–“â–“â–“â–‘â–“ + // 00110110 â–“â–‘â–“â–“â–“ + // 00100100 â–‘â–‘â–‘â–‘â–‘ + // 00110110 â–“â–“â–“â–‘â–“ + // â–“â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf7 ***************** + 0x06, 0x0F, 0x09, 0x0F, 0x06, + // 00000110 â–‘â–“â–“â–“â–‘ + // 00001111 â–“â–“â–‘â–“â–“ + // 00001001 â–“â–“â–‘â–“â–“ + // 00001111 â–‘â–“â–“â–“â–‘ + // 00000110 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf8 ***************** + 0x00, 0x00, 0x18, 0x18, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 00011000 â–‘â–‘â–“â–“â–‘ + // 00000000 â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf9 ***************** + 0x00, 0x00, 0x10, 0x10, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xfa ***************** + 0x30, 0x40, 0xFF, 0x01, 0x01, + // 00110000 â–‘â–‘â–“â–“â–“ + // 01000000 â–‘â–‘â–“â–‘â–‘ + // 11111111 â–‘â–‘â–“â–‘â–‘ + // 00000001 â–‘â–‘â–“â–‘â–‘ + // 00000001 â–“â–‘â–“â–‘â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // ************************** + // [?] 0xfb ***************** + 0x00, 0x1F, 0x01, 0x01, 0x1E, + // 00000000 â–‘â–“â–“â–“â–‘ + // 00011111 â–‘â–“â–‘â–‘â–“ + // 00000001 â–‘â–“â–‘â–‘â–“ + // 00000001 â–‘â–“â–‘â–‘â–“ + // 00011110 â–‘â–“â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xfc ***************** + 0x00, 0x19, 0x1D, 0x17, 0x12, + // 00000000 â–‘â–“â–“â–“â–‘ + // 00011001 â–‘â–‘â–‘â–“â–“ + // 00011101 â–‘â–‘â–“â–“â–‘ + // 00010111 â–‘â–“â–“â–‘â–‘ + // 00010010 â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xfd ***************** + 0x00, 0x3C, 0x3C, 0x3C, 0x3C, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00111100 â–‘â–‘â–‘â–‘â–‘ + // 00111100 â–‘â–“â–“â–“â–“ + // 00111100 â–‘â–“â–“â–“â–“ + // 00111100 â–‘â–“â–“â–“â–“ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xfe ***************** + 0x00, 0x00, 0x00, 0x00, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** +#endif + +}; + +#endif /* FONT_H */ \ No newline at end of file diff --git a/fw/n76e003/common/inc/lcd.h b/fw/n76e003/common/inc/lcd.h new file mode 100644 index 0000000..827d9e1 --- /dev/null +++ b/fw/n76e003/common/inc/lcd.h @@ -0,0 +1,62 @@ +#ifndef LCD_H +#define LCD_H + +#include +#include + +#include "N76E003.h" +#include "Common.h" +#include "Delay.h" +#include "SFR_Macro.h" +#include "Function_define.h" +#include "spi.h" +#include "font.h" + +/* + * Initialize LCD. + * + * Pinout: + * CS -> P1.1 + * DC -> P0.3 + * RES -> P1.7 + * SCK -> P1.0;SPCLK [spi] + * MOSI -> P0.0;MOSI [spi] + */ + +#define LCD_TRANSACTION_START clr_P11; +#define LCD_TRANSACTION_END set_P11; + +#define LCD_MODE_COMMAND clr_P03; +#define LCD_MODE_DATA set_P03; + +#define LCD_NORMALDISPLAY 0xA7 +#define LCD_INVERTDISPLAY 0xA6 +#define LCD_CLEARON 0xA5 +#define LCD_CLEAROFF 0xA4 +#define LCD_RESET 0xE2 + +#define LCD_LCDWIDTH 128 +#define LCD_LCDHEIGHT 64 +#define LCD_PIX_START 0 + +typedef struct LCD_SEGMENT +{ + uint8_t clearChar; + uint8_t **buffer; + uint16_t bufferDepth; + uint8_t fontWidth; + uint8_t fontHeight; + uint8_t fontSpacing; + uint8_t page0; + uint8_t rows; +}; + +bool lcd_init(bool reset); +bool lcd_clear_segment(struct LCD_SEGMENT *segment); +bool lcd_display_segment(struct LCD_SEGMENT *segment); + +void lcd_command1(uint8_t c); +void lcd_command_list(const uint8_t *c, uint8_t n); +void lcd_clear(uint8_t d); + +#endif /* LCD_H */ \ No newline at end of file diff --git a/fw/n76e003/common/inc/max6675.h b/fw/n76e003/common/inc/max6675.h new file mode 100644 index 0000000..f6025e6 --- /dev/null +++ b/fw/n76e003/common/inc/max6675.h @@ -0,0 +1,32 @@ +#ifndef MAX6675_H +#define MAX6675_H + +#include "N76E003.h" +#include "Common.h" +#include "Delay.h" +#include "SFR_Macro.h" +#include "Function_define.h" +#include "spi.h" + +/** + * Initialize MAX6675. + * + * Pinout: + * CS -> P3.0 + * SCK -> P1.0 [spi] + * MISO -> P0.1 [spi] + * + */ + +#define MAX6675_TRANSACTION_START \ + set_P10; \ + clr_P30; +#define MAX6675_TRANSACTION_END \ + set_P10; \ + set_P30; + +void max6675_init(); + +uint16_t max6675_read(); + +#endif /* MAX6675_H */ diff --git a/fw/n76e003/common/inc/spi.h b/fw/n76e003/common/inc/spi.h new file mode 100644 index 0000000..1872e9c --- /dev/null +++ b/fw/n76e003/common/inc/spi.h @@ -0,0 +1,25 @@ +#ifndef SPI_H +#define SPI_H + +#include "N76E003.h" +#include "Common.h" +#include "Delay.h" +#include "SFR_Macro.h" +#include "Function_define.h" + +/* + * Initialize SPI + * + * Pinout: + * SCK -> P1.0 + * MOSI -> P0.0 + * MISO -> P0.1 + * CS -> user defined + */ +void spi_init(); + +uint8_t spi_write(uint8_t data); + +uint8_t spi_read(); + +#endif /* SPI_H */ \ No newline at end of file diff --git a/fw/n76e003/common/src/Common.c b/fw/n76e003/common/src/Common.c new file mode 100755 index 0000000..1480e3d --- /dev/null +++ b/fw/n76e003/common/src/Common.c @@ -0,0 +1,147 @@ +/*---------------------------------------------------------------------------------------------------------*/ +/* */ +/* Copyright(c) 2016 Nuvoton Technology Corp. All rights reserved. */ +/* */ +/*---------------------------------------------------------------------------------------------------------*/ + +//*********************************************************************************************************** +// Nuvoton Technoledge Corp. +// Website: http://www.nuvoton.com +// E-Mail : MicroC-8bit@nuvoton.com +// Date : Apr/21/2016 +//*********************************************************************************************************** + +#include "N76E003.h" +#include "Common.h" +#include "Delay.h" +#include "SFR_Macro.h" +#include "Function_define.h" + +//---------------------------------------------------------------------------------- +// UART0 baud rate initial setting +//---------------------------------------------------------------------------------- +void InitialUART0_Timer1(UINT32 u32Baudrate) //T1M = 1, SMOD = 1 +{ + P06_Quasi_Mode; //Setting UART pin as Quasi mode for transmit + P07_Quasi_Mode; //Setting UART pin as Quasi mode for transmit + + SCON = 0x50; //UART0 Mode1,REN=1,TI=1 + TMOD |= 0x20; //Timer1 Mode1 + + set_SMOD; //UART0 Double Rate Enable + set_T1M; + clr_BRCK; //Serial port 0 baud rate clock source = Timer1 + +#ifdef FOSC_160000 + TH1 = 256 - (1000000/u32Baudrate+1); /*16 MHz */ +#endif +#ifdef FOSC_166000 + TH1 = 256 - (1037500/u32Baudrate); /*16.6 MHz */ +#endif + set_TR1; + set_TI; //For printf function must setting TI = 1 +} +//--------------------------------------------------------------- +void InitialUART0_Timer3(UINT32 u32Baudrate) //use timer3 as Baudrate generator +{ + P06_Quasi_Mode; //Setting UART pin as Quasi mode for transmit + P07_Quasi_Mode; //Setting UART pin as Quasi mode for transmit + + SCON = 0x50; //UART0 Mode1,REN=1,TI=1 + set_SMOD; //UART0 Double Rate Enable + T3CON &= 0xF8; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1) + set_BRCK; //UART0 baud rate clock source = Timer3 + +#ifdef FOSC_160000 + RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ + RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ +#endif +#ifdef FOSC_166000 + RH3 = HIBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ + RL3 = LOBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ +#endif + set_TR3; //Trigger Timer3 + set_TI; //For printf function must setting TI = 1 +} + +UINT8 Receive_Data_From_UART0(void) +{ + UINT8 c; + while (!RI); + c = SBUF; + RI = 0; + return (c); +} + +void Send_Data_To_UART0 (UINT8 c) +{ + TI = 0; + SBUF = c; + while(TI==0); +} + + +//---------------------------------------------------------------------------------- +// UART1 baud rate initial setting +//---------------------------------------------------------------------------------- +void InitialUART1_Timer3(UINT32 u32Baudrate) //use timer3 as Baudrate generator +{ + P02_Quasi_Mode; //Setting UART pin as Quasi mode for transmit + P16_Quasi_Mode; //Setting UART pin as Quasi mode for transmit + + SCON_1 = 0x50; //UART1 Mode1,REN_1=1,TI_1=1 + T3CON = 0x08; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1 + clr_BRCK; + +#ifdef FOSC_160000 + RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ + RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); /*16 MHz */ +#endif +#ifdef FOSC_166000 + RH3 = HIBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ + RL3 = LOBYTE(65536 - (1037500/u32Baudrate)); /*16.6 MHz */ +#endif + set_TR3; //Trigger Timer3 +} + +UINT8 Receive_Data_From_UART1(void) +{ + UINT8 c; + + while (!RI_1); + c = SBUF_1; + RI_1 = 0; + return (c); +} + +void Send_Data_To_UART1 (UINT8 c) +{ + TI_1 = 0; + SBUF_1 = c; + while(TI_1==0); +} + +/*==========================================================================*/ +#ifdef SW_Reset +void SW_Reset(void) +{ + TA = 0xAA; + TA = 0x55; + set_SWRST; +} +#endif + +unsigned char +_sdcc_external_startup (void) +{ + __asm + mov 0xC7, #0xAA + mov 0xC7, #0x55 + mov 0xFD, #0x5A + mov 0xC7, #0xAA + mov 0xC7, #0x55 + mov 0xFD, #0xA5 + __endasm; + return 0; +} + diff --git a/fw/n76e003/common/src/Delay.c b/fw/n76e003/common/src/Delay.c new file mode 100755 index 0000000..53c152c --- /dev/null +++ b/fw/n76e003/common/src/Delay.c @@ -0,0 +1,116 @@ +/*---------------------------------------------------------------------------------------------------------*/ +/* */ +/* Copyright(c) 2016 Nuvoton Technology Corp. All rights reserved. */ +/* */ +/*---------------------------------------------------------------------------------------------------------*/ + +//*********************************************************************************************************** +// Nuvoton Technoledge Corp. +// Website: http://www.nuvoton.com +// E-Mail : MicroC-8bit@nuvoton.com +// Date : Apr/21/2016 +//*********************************************************************************************************** + +#include "N76E003.h" +#include "Common.h" +#include "Delay.h" +#include "SFR_Macro.h" +#include "Function_define.h" +__bit BIT_TMP; + +//------------------------------------------------------------------------- +void Timer0_Delay100us(UINT32 u32CNT) +{ + clr_T0M; //T0M=0, Timer0 Clock = Fsys/12 + TMOD |= 0x01; //Timer0 is 16-bit mode + set_TR0; //Start Timer0 + while (u32CNT != 0) + { + TL0 = LOBYTE(TIMER_DIV12_VALUE_100us); //Find define in "Function_define.h" "TIMER VALUE" + TH0 = HIBYTE(TIMER_DIV12_VALUE_100us); + while (TF0 != 1); //Check Timer0 Time-Out Flag + clr_TF0; + u32CNT --; + } + clr_TR0; //Stop Timer0 +} +//------------------------------------------------------------------------------ +void Timer0_Delay1ms(UINT32 u32CNT) +{ + clr_T0M; //T0M=0, Timer0 Clock = Fsys/12 + TMOD |= 0x01; //Timer0 is 16-bit mode + set_TR0; //Start Timer0 + while (u32CNT != 0) + { + TL0 = LOBYTE(TIMER_DIV12_VALUE_1ms); //Find define in "Function_define.h" "TIMER VALUE" + TH0 = HIBYTE(TIMER_DIV12_VALUE_1ms); + while (TF0 != 1); //Check Timer0 Time-Out Flag + clr_TF0; + u32CNT --; + } + clr_TR0; //Stop Timer0 +} + +//------------------------------------------------------------------------------ +void Timer1_Delay10ms(UINT32 u32CNT) +{ + clr_T1M; //T1M=0, Timer1 Clock = Fsys/12 + TMOD |= 0x10; //Timer1 is 16-bit mode + set_TR1; //Start Timer1 + while (u32CNT != 0) + { + TL1 = LOBYTE(TIMER_DIV12_VALUE_10ms); //Find define in "Function_define.h" "TIMER VALUE" + TH1 = HIBYTE(TIMER_DIV12_VALUE_10ms); + while (TF1 != 1); //Check Timer1 Time-Out Flag + clr_TF1; + u32CNT --; + } + clr_TR1; //Stop Timer1 +} +//------------------------------------------------------------------------------ +void Timer2_Delay500us(UINT32 u32CNT) +{ + clr_T2DIV2; //Timer2 Clock = Fsys/4 + clr_T2DIV1; + set_T2DIV0; + set_TR2; //Start Timer2 + while (u32CNT != 0) + { + TL2 = LOBYTE(TIMER_DIV4_VALUE_500us); //Find define in "Function_define.h" "TIMER VALUE" + TH2 = HIBYTE(TIMER_DIV4_VALUE_500us); + while (TF2 != 1); //Check Timer2 Time-Out Flag + clr_TF2; + u32CNT --; + } + clr_TR2; //Stop Timer2 +} +//------------------------------------------------------------------------------ +void Timer3_Delay100ms(UINT32 u32CNT) +{ + T3CON = 0x07; //Timer3 Clock = Fsys/128 + set_TR3; //Trigger Timer3 + while (u32CNT != 0) + { + RL3 = LOBYTE(TIMER_DIV128_VALUE_100ms); //Find define in "Function_define.h" "TIMER VALUE" + RH3 = HIBYTE(TIMER_DIV128_VALUE_100ms); + while ((T3CON&SET_BIT4) != SET_BIT4); //Check Timer3 Time-Out Flag + clr_TF3; + u32CNT --; + } + clr_TR3; //Stop Timer3 +} +//------------------------------------------------------------------------------ +void Timer3_Delay10us(UINT32 u32CNT) +{ + T3CON = 0x07; //Timer3 Clock = Fsys/128 + set_TR3; //Trigger Timer3 + while (u32CNT != 0) + { + RL3 = LOBYTE(TIMER_DIV4_VALUE_10us); //Find define in "Function_define.h" "TIMER VALUE" + RH3 = HIBYTE(TIMER_DIV4_VALUE_10us); + while ((T3CON&SET_BIT4) != SET_BIT4); //Check Timer3 Time-Out Flag + clr_TF3; + u32CNT --; + } + clr_TR3; //Stop Timer3 +} diff --git a/fw/n76e003/common/src/lcd.c b/fw/n76e003/common/src/lcd.c new file mode 100644 index 0000000..70ac541 --- /dev/null +++ b/fw/n76e003/common/src/lcd.c @@ -0,0 +1,167 @@ +#include +#include "lcd.h" + +bool lcd_init(bool reset) +{ + /* Initialize CS pin HIGH */ + P11_PushPull_Mode; + set_P11; + + /* Initialize RES pin HIGH */ + P17_PushPull_Mode; + set_P17; + + /* Initialize DC pin LOW */ + P03_PushPull_Mode; + clr_P03; + + /* Initialize spi */ + spi_init(); + + if (reset) + { + //lcd_command1(LCD_RESET); // Clear Bias: bias 0 + set_P17; + Timer0_Delay1ms(1); + clr_P17; + Timer0_Delay1ms(1); + set_P17; + Timer0_Delay1ms(5); + } + + //lcd_command1(0xA1); // Reverse direction (SEG131-SEG0) + //lcd_command1(0xC8); // SHL 1,COM63-COM0 + lcd_command1(0xA2); // Clear Bias: bias 0 + + // Power_Control 4 (internal converter ON) + 2 (internal regulator ON) + 1 (internal follower ON) + lcd_command1(0x28 | 0x07); // Power Control + + // Regulator resistor select + // 1+Rb/Ra Vo=(1+Rb/Ra)Vev Vev=(1-(63-a)/162)Vref 2.1v + // 0 3.0 4 5.0(default) + // 1 3.5 5 5.5 + // 2 4 6 6 + // 3 4.5 7 6.4 + // + lcd_command1(0x20 | 0x05); // Regulator resistor + + // a(0-63) 32=default Vev=(1-(63-a)/162)Vref 2.1v + lcd_command1(0x81); // Set Contrast + lcd_command1(21); + lcd_command1(0x40); // DisplayLine=0 + lcd_clear(0x00); //was 00 + lcd_command1(0xAF); // Display ON + + return true; +} + +void lcd_command1(uint8_t c) +{ + LCD_TRANSACTION_START + LCD_MODE_COMMAND + spi_write(c); + LCD_TRANSACTION_END +} + +void lcd_command_list(const uint8_t *c, uint8_t n) +{ + LCD_TRANSACTION_START + LCD_MODE_COMMAND + for (uint8_t i = 0; i < n; i++) + spi_write(c[i]); + LCD_TRANSACTION_END +} + +void lcd_clear(uint8_t d) +{ + for (uint8_t page = 0; page < 8; page++) + { + uint8_t dlist1[] = { + 0x40 | LCD_PIX_START, + 0xB0 | page, + 0x10, + (0x0f & 0x00)}; // 0x04 is offset foir normal; 0x00 for upsidedown + lcd_command_list(dlist1, sizeof(dlist1)); + LCD_TRANSACTION_START + LCD_MODE_DATA + for (uint8_t idx = 0; idx < 128; idx++) + spi_write(d); + LCD_TRANSACTION_END + } +} + +bool lcd_clear_segment(struct LCD_SEGMENT *segment) +{ + memset(segment->buffer, segment->clearChar, segment->bufferDepth); + return true; +} + +__xdata uint8_t spiBuffer[128]; +bool lcd_display_segment(struct LCD_SEGMENT *segment) +{ + uint8_t *sBuffer = (uint8_t *)segment->buffer; + uint8_t cols = segment->bufferDepth / segment->rows; + uint8_t spiIdx, rb_now, rbit, rpix2, glyph = 0x00; + uint16_t glyphP = 0x00; + uint8_t spiDepth = cols * ((segment->fontWidth * _FONT_W) + segment->fontSpacing); + memset(spiBuffer, 0x00, spiDepth); + + // row by row + for (uint8_t row = 0; row < segment->rows; row++) + { + for (uint8_t fH_now = 0; fH_now < segment->fontHeight; fH_now++) + { + uint8_t dlist1[] = { + 0x40 | LCD_PIX_START, + 0xB0 | (segment->page0 + row + fH_now), + 0x10, + (0x0f & 0x00)}; // |0x04 is offset for normal; 0x00 for upsidedown + lcd_command_list(dlist1, sizeof(dlist1)); + + spiIdx = 0; + rb_now = _FONT_H * fH_now; + for (uint8_t col = 0; col < cols; col++) + { + glyph = sBuffer[(row * cols) + col]; +#ifdef FONTSET_MINI + if (glyph < 0x20 || glyph > 0x60) + glyph = 0x00; + else + glyph -= 0x20; +#endif + glyphP = glyph * _FONT_W; + for (uint8_t fw = 0; fw < _FONT_W; fw++) + { + uint8_t line = _font[glyphP + fw]; + if (segment->fontHeight > 1) + { + uint8_t new_line = 0x00; + for (uint8_t idx_now = 0; idx_now < 8; idx_now++) + { + rbit = rb_now + idx_now; + rpix2 = (rbit / segment->fontHeight); + if ((line & (1 << rpix2))) + new_line |= (1 << idx_now); + } + line = new_line; + } + for (uint8_t fW_now = 0; fW_now < segment->fontWidth; fW_now++) + { + spiBuffer[spiIdx++] = line; + } + } + for (uint8_t fs = 0; fs < segment->fontSpacing; fs++) + { + spiBuffer[spiIdx++] = 0x00; + } + } + LCD_TRANSACTION_START + LCD_MODE_DATA + for (uint8_t idx = 0; idx < spiDepth; idx++) + spi_write(spiBuffer[idx]); + LCD_TRANSACTION_END + } + } + + return true; +} \ No newline at end of file diff --git a/fw/n76e003/common/src/max6675.c b/fw/n76e003/common/src/max6675.c new file mode 100644 index 0000000..64ce470 --- /dev/null +++ b/fw/n76e003/common/src/max6675.c @@ -0,0 +1,26 @@ +#include "max6675.h" + +void max6675_init() +{ + /* Initialize CS pin HIGH */ + P30_PushPull_Mode; + set_P30; + + /* Initialize spi */ + spi_init(); +} + +uint16_t max6675_read() +{ + MAX6675_TRANSACTION_START + uint8_t val0 = spi_read(); + uint8_t val1 = spi_read(); + MAX6675_TRANSACTION_END + + uint16_t value = MAKEWORD(val0, val1); + if (value & 0x4) + { + return 0; + } + return (value >> 3); +} \ No newline at end of file diff --git a/fw/n76e003/common/src/spi.c b/fw/n76e003/common/src/spi.c new file mode 100644 index 0000000..fc7490f --- /dev/null +++ b/fw/n76e003/common/src/spi.c @@ -0,0 +1,34 @@ +#include "spi.h" + +void spi_init() +{ + P10_Quasi_Mode; // P10 (SPCLK) Quasi mode + P00_Quasi_Mode; // P00 (MOSI) Quasi mode + P01_Quasi_Mode; // P01 (MISO) Quasi mode + set_DISMODF; // SS General purpose I/O ( No Mode Fault ) + clr_SSOE; + clr_LSBFE; // MSB first + clr_CPOL; // The SPI clock is low in idle mode + clr_CPHA; // The data is sample on the first edge of SPI clock + set_MSTR; // SPI in Master mode + SPICLK_DIV2; // Select SPI clock + set_SPIEN; // Enable SPI function + clr_SPIF; + set_P10; +} + +uint8_t spi_write(uint8_t data) +{ + SPDR = data; + while(!(SPSR & SET_BIT7)); + clr_SPIF; + return SPDR; +} + +uint8_t spi_read() +{ + SPDR = 0xFF; + while(!(SPSR & SET_BIT7)); + clr_SPIF; + return SPDR; +} \ No newline at end of file diff --git a/fw/n76e003/ebake1/Makefile b/fw/n76e003/ebake1/Makefile new file mode 100644 index 0000000..43aaf46 --- /dev/null +++ b/fw/n76e003/ebake1/Makefile @@ -0,0 +1,51 @@ +## A directory for n76e003 include file & lib +COMMONDIR = ../common + +## Get program name from enclosing directory name +PROGRAM = $(lastword $(subst /, ,$(CURDIR))) + +SOURCES=$(wildcard *.c) +OBJECTS=$(SOURCES:.c=.rel) +HEADERS=$(wildcard *.h $(COMMONDIR)/inc/*.h) + +CC = sdcc +AS = sdas8051 +MCU_MODEL = mcs51 +MODEL = small +CODE_SIZE = --code-size 18432 +IRAM_SIZE = --iram-size 256 +XRAM_SIZE = --xram-size 768 +DFOSC = -DFOSC_160000 + +AFLAGS = -l -s +CPPFLAGS = -I$(COMMONDIR)/inc +CFLAGS = -I$(INCDIR) -m$(MCU_MODEL) --model-$(MODEL) --out-fmt-ihx --no-xinit-opt $(DFOSC) +LFLAGS = $(LIBPATH) $(LIBS) -m$(MCU_MODEL) --model-$(MODEL) $(CODE_SIZE) $(IRAM_SIZE) $(XRAM_SIZE) --out-fmt-ihx $(DEBUG) $(DFOSC) +LDLIBS = -L$(COMMONDIR) -lcommon.lib + +FLASHTOOL=nuvoprog + +.PHONY: all clean flash + +all: $(PROGRAM).ihx + @echo $(SOURCES) + exit + @ls -la $(PROGRAM).ihx + +$(PROGRAM).ihx: $(OBJECTS) $(COMMONDIR)/common.lib + $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ + +$(COMMONDIR)/common.lib: + @make -C $(COMMONDIR) all + +%.rel : %.c $(HEADERS) + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + +CCOMPILEDFILES=$(SOURCES:.c=.asm) $(SOURCES:.c=.lst) $(SOURCES:.c=.rel) \ + $(SOURCES:.c=.rst) $(SOURCES:.c=.sym) + +flash: $(PROGRAM).ihx + $(FLASHTOOL) -c $(PROGRAMMER) -p $(DEVICE) -w $(PROGRAM).ihx + +clean: + @rm -f $(PROGRAM).ihx $(PROGRAM).cdb $(PROGRAM).lk $(PROGRAM).map $(CCOMPILEDFILES) diff --git a/fw/n76e003/ebake1/defaults.h b/fw/n76e003/ebake1/defaults.h new file mode 100644 index 0000000..0a5f866 --- /dev/null +++ b/fw/n76e003/ebake1/defaults.h @@ -0,0 +1,72 @@ +#ifndef DEFAULTS_H +#define DEFAULTS_H + +#define LED0 P14 +#define SW0 P13 + +#define BUZZER_CLK (16000000 / 12) +#define BUZZER_FREQ (1200 * 2) +#define BUZZER_PERIOD (0xFFFF - ((BUZZER_CLK / BUZZER_FREQ) - 1)) + +#define PWM_CLK (16000000 / 8) +#define PWM_FREQ 240 +#define PWM_PERIOD ((PWM_CLK / PWM_FREQ) - 1) +#define PWM_SLICE (PWM_PERIOD / 100) + +#define SRV0_START 0 + +#define NUMBER_OF_OUTPUTS 2 + +#define DEFAULT_TEMP_COOL 45 +#define DEFAULT_TEMP_HOT 50 +#define DEFAULT_MAX_TEMP 280 +#define DEFAULT_MAX_DEVIATION 20 + +enum +{ + SM_GO_NULL = 0, + SM_NULL, + SM_GO_RUN, + SM_RUN, + SM_START_COOLING, + SM_COOLING, + SM_DONE, + SM_DONE_Q +}; + +enum +{ + DISPLAY_CURRENT_SECOND = 0, + DISPLAY_COUNTDOWN_TIMER, + DISPLAY_PROFILE_TIMER, +}; + +enum +{ + ELEMENT_TOP = 0, + ELEMENT_BOTTOM +}; + +enum +{ + PROFILE_FIRST = 0, + PROFILE_MIDDLE, + PROFILE_LAST, +}; + +#define PID_P 2 +#define PID_I 3 +#define PID_D 0 + +#define BIAS_MAX 100 +#define BIAS_B 100 +#define BIAS_T 75 + +const uint8_t profile[3][2] = {{150,40},{190,10},{245,12}}; +#define PROFILE_LEN 3 +#define PROFILE_TEMP 0 +#define PROFILE_TIME 1 +#define PROFILE_OVERSHOOT 10 // FIX the PID, don't do this!! +#define PROFILE_ADJUST 1 + +#endif /* DEFAULTS_H */ \ No newline at end of file diff --git a/fw/n76e003/ebake1/main.c b/fw/n76e003/ebake1/main.c new file mode 100644 index 0000000..ffe1925 --- /dev/null +++ b/fw/n76e003/ebake1/main.c @@ -0,0 +1,517 @@ +/* + * N76E003-TOASTER + * + * LED + * LED0 -> [11] P1.4 (RED; HOT) + * SSR + * SSR0 -> [20] P0.4;PWM3 > TOP + * SSR1 -> [10] P1.5;PWM5 > BOTTOM + * SERVO + * SRV0 -> [13] P1.2;PWM0 + * SW + * SW0 -> [12] P1.3 + * LCD + * CS -> [14] P1.1 + * DC -> [19] P0.3 + * RES -> [06] P1.7 + * SCK -> [15] P1.0;SPCLK [spi] + * MOSI -> [16] P0.0;MOSI [spi] + * MAX6675 + * CS -> [05] P3.0 + * SCK -> [15] P1.0;SPCLK [spi] + * MISO -> [17] P0.1;MISO [spi] + * BEEP + * BEEP -> [01] P0.5;T0 + * UART1 115200 8N1 + * TX -> [02] P0.6 + * RX -> [03] P0.7 + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include "defaults.h" +#include "strings.h" +#include "pid.h" + +/* Needed for printf */ +int putchar(int c) +{ + while (!TI) + ; + TI = 0; + SBUF = c; + return c; +} + +void TIM0_ISR(void) __interrupt(1) +{ + clr_TF0; + TL0 = LOBYTE(BUZZER_PERIOD); + TH0 = HIBYTE(BUZZER_PERIOD); +} + +volatile uint16_t tim2Value = 0; +void TIM2_ISR(void) __interrupt(5) +{ + clr_TF2; + tim2Value++; +} + +volatile uint8_t sw0Counter; +void PinInterrupt_ISR(void) __interrupt(7) +{ + if (PIF == 0x08) + { + PIF = 0; + sw0Counter++; + } +} + +void setOutput(uint8_t value0, uint8_t value1) +{ + uint16_t pwm = PWM_SLICE * value0; + if (pwm > 0) + { + PWM3H = HIBYTE(pwm); + PWM3L = LOBYTE(pwm); + } + else + { + PWM3H = 0; + PWM3L = 0; + } + + pwm = PWM_SLICE * value1; + if (pwm > 0) + { + set_SFRPAGE; + PWM5H = HIBYTE(pwm); + PWM5L = LOBYTE(pwm); + clr_SFRPAGE; + } + else + { + set_SFRPAGE; + PWM5H = 0; + PWM5L = 0; + clr_SFRPAGE; + } + while (LOAD == 1) + ; + set_LOAD; +} + +uint16_t setServo(uint8_t value0) +{ + uint16_t srv0 = (PWM_SLICE * 6) + (value0 * (PWM_SLICE/4)); + + PWM0H = HIBYTE(srv0); + PWM0L = LOBYTE(srv0); + while (LOAD == 1) + ; + set_LOAD; + return srv0; +} + +void setText(bool stdout, bool isTitle, struct LCD_SEGMENT *segment, uint8_t *format, ...) +{ + uint8_t *ptr = (uint8_t*)segment->buffer; + lcd_clear_segment(segment); + + if (isTitle) + { + *ptr++; + *ptr++; + } + + va_list args; + va_start(args, format); + vsprintf(ptr, format, args); + va_end(args); + + if (stdout) + { + if (isTitle) + *ptr++; + printf_tiny("%s: '%s'\r\n", ((isTitle) ? " TITLE" : "STATUS"), ptr); +// printf_tiny((isTitle) ? "TITLE: '" : "STATUS: '"); +// printf_tiny("%s", ptr); +// printf_tiny("'\r\n"); + } +} + +/*==========================================================================*/ +void main(void) +{ + __xdata uint16_t previousTicks = 0xffff; + __xdata uint16_t previousSecond = 0xffff; + __xdata uint8_t servo0 = SRV0_START; + __xdata uint8_t previousDutyCycle[NUMBER_OF_OUTPUTS] = {0, 0}; + __xdata uint8_t currentDutyCycle[NUMBER_OF_OUTPUTS] = {0, 0}; + + __xdata bool isHeating = false; + __xdata uint8_t stateMachine = SM_GO_NULL; + __xdata uint8_t beeps = 2; + __xdata bool beepOn = false; + + __xdata uint16_t profileTimer = 0; + __xdata bool profileTimerRunning = false; + __xdata uint8_t profileStep = 0; + __xdata uint16_t desiredTemperature = 0; + + __xdata uint8_t currentPidDutyCycle = 0; + __xdata uint8_t previousPidDutyCycle = 0xff; + + __xdata uint16_t countdownTimer = 0; + __xdata uint8_t displayTime = DISPLAY_CURRENT_SECOND; + __xdata uint8_t displayType = '+'; + + __xdata pid_struct pid = { + 0, 0, //dstate, istate + 10, 0, //imax, imin + 99, 0, //max/min output limits + PID_P, PID_I, PID_D //p, i, d gains + }; + + clr_EA; + + /* SW0 setup */ + sw0Counter = 0; + P13_Input_Mode; + clr_PIPS1; + set_PIPS0; + Enable_BIT3_FallEdge_Trig; + set_EPI; + + /* LED setup */ + P14_Quasi_Mode; + + /* TIM0 setup / BUZZER */ + P05_PushPull_Mode; + TIMER0_MODE1_ENABLE; + TL0 = LOBYTE(BUZZER_PERIOD); + TH0 = HIBYTE(BUZZER_PERIOD); + set_ET0; + set_T0OE; + clr_TR0; + + /* TIM2 setup ~200ms */ + TIMER2_DIV_128; + TIMER2_Auto_Reload_Delay_Mode; + RCMP2L = LOBYTE(TIMER_DIV128_VALUE_250ms); + RCMP2H = HIBYTE(TIMER_DIV128_VALUE_250ms); + TL2 = 0; + TH2 = 0; + set_ET2; + set_TR2; + + /* PWM setup */ + PWM_IMDEPENDENT_MODE; + PWM_CENTER_TYPE; + PWM_CLOCK_DIV_8; + PWMPH = HIBYTE(PWM_PERIOD); + PWMPL = LOBYTE(PWM_PERIOD); + set_PWMRUN; + + /* SSR setup */ + P04_PushPull_Mode; + P15_PushPull_Mode; + PWM3_P04_OUTPUT_ENABLE; + PWM5_P15_OUTPUT_ENABLE; + + /* SERVO setup */ + P12_PushPull_Mode; + PWM0_P12_OUTPUT_ENABLE; + + /* MAX6675 setup */ + max6675_init(); + + /* LCD setup */ + lcd_init(true); + + __xdata uint8_t lcdTitleBuffer[21]; + __xdata struct LCD_SEGMENT lcdTitle = { + '#', // clearChar + lcdTitleBuffer, // buffer + sizeof(lcdTitleBuffer), // bufferDepth + 1, // fontWidth + 1, // fontHeight + 1, // fontSpacing + 0, // page0 + 1, // rows + }; + lcd_clear_segment(&lcdTitle); + __xdata uint8_t lcdTimeBuffer[11]; + __xdata struct LCD_SEGMENT lcdTime = { + ' ', // clearChar + &lcdTimeBuffer, // buffer + sizeof(lcdTimeBuffer), // bufferDepth + 2, // fontWidth + 2, // fontHeight + 1, // fontSpacing + 1, // page0 + 1, // rows + }; + lcd_clear_segment(&lcdTime); + + __xdata uint8_t lcdPowerTempBuffer[11]; + __xdata struct LCD_SEGMENT lcdPowerTemp = { + ' ', // clearChar + lcdPowerTempBuffer, // buffer + sizeof(lcdPowerTempBuffer), // bufferDepth + 2, // fontWidth + 3, // fontHeight + 1, // fontSpacing + 3, // page0 + 1, // rows + }; + lcd_clear_segment(&lcdPowerTemp); + + __xdata uint8_t lcdStatusBuffer[21]; + __xdata struct LCD_SEGMENT lcdStatus = { + '#', // clearChar + lcdStatusBuffer, // buffer + sizeof(lcdStatusBuffer), // bufferDepth + 1, // fontWidth + 2, // fontHeight + 1, // fontSpacing + 6, // page0 + 1, // rows + }; + lcd_clear_segment(&lcdStatus); + + /* UART0 setup */ + InitialUART0_Timer3(115200); + TI = 1; + + set_EA; + printf_tiny("\r\n\r\n"); + + do + { + uint8_t currentSW0 = sw0Counter; + sw0Counter = 0; + uint16_t currentTicks = tim2Value; + uint16_t currentTemperatureRaw = max6675_read(); + uint16_t currentTemperature = currentTemperatureRaw / 4; + uint16_t currentTemperaturePoint = (currentTemperatureRaw - (currentTemperature * 4)) * 100; + + uint16_t currentSecond = (currentTicks / 4); + bool isOneSecondInterval = false; + + if (previousTicks != currentTicks) + { + previousTicks = currentTicks; + if (previousSecond != currentSecond) + { + previousSecond = currentSecond; + isOneSecondInterval = true; + if (profileTimerRunning) + profileTimer++; + } + if (beeps) + { + if ((currentTicks % 2) == 0) + { + set_TR0; + beepOn = true; + } + else if (beepOn) + { + clr_TR0; + beepOn = false; + beeps--; + } + } + } + + if (currentSW0 && stateMachine == SM_NULL) + { + stateMachine = SM_GO_RUN; + } + else if (currentSW0 && stateMachine == SM_DONE_Q) + { + stateMachine = SM_GO_NULL; + } + else if (currentSW0 && stateMachine > SM_NULL && stateMachine < SM_START_COOLING) + { + beeps += 2; + stateMachine = SM_START_COOLING; + } + else if (currentTemperature > DEFAULT_TEMP_HOT && stateMachine < SM_GO_RUN) + { + setText(true, false, &lcdStatus, "%s %uC", ST_START_HOT, currentTemperature); + beeps += 2; + stateMachine = SM_START_COOLING; + } + + if (currentTemperature == 0 && stateMachine > SM_GO_NULL) + { + setText(true, false, &lcdStatus, "%s", ST_THERMOCOUPLE_ERROR); + beeps += 4; + stateMachine = SM_START_COOLING; + } + else if (currentTemperature >= DEFAULT_TEMP_HOT) + { + LED0 = 0; + } + else if (currentTemperature < DEFAULT_TEMP_COOL) + { + LED0 = 1; + } + + if (currentTemperature > DEFAULT_MAX_TEMP && stateMachine < SM_START_COOLING) + { + setText(true, false, &lcdStatus, "%s", ST_OVERTEMP); + beeps += 4; + stateMachine = SM_START_COOLING; + } + + switch (stateMachine) + { + case SM_GO_NULL: + setText(true, true, &lcdTitle, " %s %s", ST_TITLE, ST_VER); + setText(true, false, &lcdStatus, "%s", ST_PRESS_BUTTON_TO_START); + isHeating = false; + profileStep = 0; + displayTime = DISPLAY_CURRENT_SECOND; + beeps = 0; + clr_TR0; + stateMachine = SM_NULL; + + case SM_NULL: + break; + + case SM_GO_RUN: + setText(true, true, &lcdTitle, " %s", ST_RUN); + lcd_clear_segment(&lcdStatus); + profileTimer = 0; + profileTimerRunning = false; + desiredTemperature = profile[profileStep][PROFILE_TEMP] + PROFILE_OVERSHOOT; + displayTime = DISPLAY_PROFILE_TIMER; + beeps += 1; + isHeating = true; + stateMachine = SM_RUN; + + case SM_RUN: + if (!isOneSecondInterval) + break; + + currentPidDutyCycle = update_pid(&pid, pid_guard(desiredTemperature, currentTemperature), currentTemperature); + + if ((profileTimerRunning == false) && (profile[profileStep][PROFILE_TEMP] - PROFILE_ADJUST <= currentTemperature)) + { + desiredTemperature = profile[profileStep][PROFILE_TEMP] + PROFILE_ADJUST; + profileTimer = 0; + profileTimerRunning = true; + } + if ((profileTimerRunning == true) && (profile[profileStep][PROFILE_TIME] <= profileTimer)) + { + beeps += 1; + if (++profileStep == PROFILE_LEN) + stateMachine = SM_START_COOLING; + else + stateMachine = SM_GO_RUN; + } + break; + + case SM_START_COOLING: + setText(true, true, &lcdTitle, " %s", ST_COOLING); + isHeating = false; + profileTimerRunning = true; + profileTimer = 0; + displayTime = DISPLAY_PROFILE_TIMER; + beeps += 2; + stateMachine = SM_COOLING; + + case SM_COOLING: + if (isOneSecondInterval) + { + if (currentTemperature < DEFAULT_TEMP_HOT && profileTimer >= 1) + { + isHeating = false; + stateMachine = SM_DONE; + } + } + break; + + case SM_DONE: + setText(true, true, &lcdTitle, " %s", ST_DONE); + setText(true, false, &lcdStatus, "%s", ST_PRESS_TO_RESTART); + isHeating = false; + beeps += 6; + stateMachine = SM_DONE_Q; + + case SM_DONE_Q: + + break; + } + + if (isHeating) + { + if (previousPidDutyCycle != currentPidDutyCycle) + { + previousPidDutyCycle = currentPidDutyCycle; + currentDutyCycle[ELEMENT_TOP] = currentPidDutyCycle * BIAS_T / BIAS_MAX; + currentDutyCycle[ELEMENT_BOTTOM] = currentPidDutyCycle * BIAS_B / BIAS_MAX; + setOutput(currentDutyCycle[ELEMENT_TOP], currentDutyCycle[ELEMENT_BOTTOM]); + } + } + else + { + if (previousPidDutyCycle != 0) + { + setOutput(0, 0); + previousDutyCycle[ELEMENT_TOP] = 0; + previousDutyCycle[ELEMENT_BOTTOM] = 0; + } + } + + + if (isOneSecondInterval) + { + lcd_clear_segment(&lcdTime); + lcd_clear_segment(&lcdPowerTemp); + + if (stateMachine == SM_DONE_Q) + { /* + format_sprintf(oledTime->buffer, ((learningFailed) ? ST_FAILED : ((learningAborted) ? ST_ABORTED : ST_SUCCESS))); + if (learningFailed) + format_sprintf(oledPowerTemp->buffer, "%s #%04u", ST_ERROR, learningFailed); + else if (!learningAborted) + format_sprintf(oledPowerTemp->buffer, "%2u %3u %3u", learnedDutyCycle, learnedInertia, learnedInsulation); + */ + } + else + { + uint16_t dT = (displayTime == DISPLAY_CURRENT_SECOND) ? currentSecond : ((displayTime == DISPLAY_COUNTDOWN_TIMER) ? countdownTimer : profileTimer); + uint16_t lm = (dT / 60); + uint16_t tm = (lm % 60); + uint8_t th = (lm / 60); + uint8_t ts = (dT % 60); + setText(false, false, &lcdTime, "%c %02u:%02u:%02u", displayType, th, tm, ts); + if (isHeating) + setText(false, false, &lcdPowerTemp, "%02u:%02u %3u C", currentDutyCycle[ELEMENT_TOP], currentDutyCycle[ELEMENT_BOTTOM], currentTemperature); + else + setText(false, false, &lcdPowerTemp, "--:-- %3u C", currentTemperature); + + } + +// setText(true, false, &lcdTime, "? %02u:%02u:%02u", th, tm, ts); + + lcd_display_segment(&lcdTitle); + lcd_display_segment(&lcdTime); + lcd_display_segment(&lcdPowerTemp); + lcd_display_segment(&lcdStatus); + } + + set_IDL; + } while (1); +} diff --git a/fw/n76e003/ebake1/pid.c b/fw/n76e003/ebake1/pid.c new file mode 100644 index 0000000..d14802d --- /dev/null +++ b/fw/n76e003/ebake1/pid.c @@ -0,0 +1,47 @@ +#include "pid.h" + +int8_t update_pid(pid_struct *pid, int8_t error, uint8_t position) +{ + int16_t pterm, iterm, dterm, res; + + //proportional calculation + pterm = pid->pgain * error; + + // update integrator state + pid->istate += error; + if (pid->istate > pid->imax) + pid->istate = pid->imax; + else if (pid->istate < pid->imin) + pid->istate = pid->imin; + + //integral calcucation + iterm = pid->igain * pid->istate; + + //differential calculation + dterm = pid->dgain * (position - pid->dstate); + + pid->dstate = position; + + res = pterm + iterm - dterm; + //cut by limits + if (res > pid->vmax) + res = pid->vmax; + else if (res < pid->vmin) + res = pid->vmin; + + return res; +} + +int8_t pid_guard(uint16_t desired, uint16_t current) +{ + + int16_t temp_error; + + temp_error = desired - current; + if (temp_error > 127) + temp_error = 127; + else if (temp_error < -127) + temp_error = -127; + + return (int8_t)temp_error; +} \ No newline at end of file diff --git a/fw/n76e003/ebake1/pid.h b/fw/n76e003/ebake1/pid.h new file mode 100644 index 0000000..0024ae0 --- /dev/null +++ b/fw/n76e003/ebake1/pid.h @@ -0,0 +1,26 @@ +#ifndef PID_H +#define PID_H + +#include +#include +#include +#include +#include +#include + +typedef signed char int8_t; +typedef int int16_t; + +typedef struct { + int8_t dstate; //last position input + int8_t istate; //integrator state + int8_t imax, imin; //integratir limits + int8_t vmax,vmin; //result limits + int8_t pgain, igain, dgain; +} pid_struct; + + +int8_t update_pid(pid_struct *pid, int8_t error, uint8_t position); +int8_t pid_guard(uint16_t desired, uint16_t current); + +#endif /* PID_H */ \ No newline at end of file diff --git a/fw/n76e003/ebake1/strings.h b/fw/n76e003/ebake1/strings.h new file mode 100644 index 0000000..a4542df --- /dev/null +++ b/fw/n76e003/ebake1/strings.h @@ -0,0 +1,27 @@ +#ifndef STRINGS_H +#define STRINGS_H + + +const uint8_t ST_TITLE[] = "EASYBAKE"; +const uint8_t ST_VER[] = "V1.4"; + +const uint8_t ST_PRESS_BUTTON_TO_START[] = "PRESS TO START"; +const uint8_t ST_PRESS_TO_RESTART[] = "PRESS TO RESTART"; +const uint8_t ST_START_HOT[] = "START HOT"; + +const uint8_t ST_RUN[] = "RUN"; +const uint8_t ST_COOLING[] = "COOLING"; +const uint8_t ST_DONE[] = "DONE"; + +const uint8_t ST_THERMOCOUPLE_ERROR[] = "THERMOCOUPLE ERROR"; +const uint8_t ST_UNABLE_TO_REACH[] = "UNABLE TO REACH"; +const uint8_t ST_OVERTEMP[] = "OVERTEMP"; +const uint8_t ST_UNDERTEMP[] = "UNDERTEMP"; +const uint8_t ST_UNABLE_TO_COOL[] = "UNABLE TO COOL"; + +const uint8_t ST_ERROR[] = "ERROR"; +const uint8_t ST_FAILED[] = "FAILED"; +const uint8_t ST_ABORTED[] = "ABORTED"; +const uint8_t ST_SUCCESS[] = "SUCCESS"; + +#endif /* STRINGS_H */ \ No newline at end of file diff --git a/fw/n76e003/test1/Makefile b/fw/n76e003/test1/Makefile new file mode 100644 index 0000000..58efa4c --- /dev/null +++ b/fw/n76e003/test1/Makefile @@ -0,0 +1,45 @@ +## A directory for n76e003 include file & lib +COMMONDIR = ../common + +## Get program name from enclosing directory name +PROGRAM = $(lastword $(subst /, ,$(CURDIR))) + +SOURCES=$(wildcard *.c) +OBJECTS=$(SOURCES:.c=.rel) +HEADERS=$(wildcard *.h $(COMMONDIR)/inc/*.h) + +CC = sdcc +AS = sdas8051 +MCU_MODEL = mcs51 +MODEL = small +CODE_SIZE = --code-size 18432 +IRAM_SIZE = --iram-size 256 +XRAM_SIZE = --xram-size 768 +DFOSC = -DFOSC_160000 + +AFLAGS = -l -s +CPPFLAGS = -I$(COMMONDIR)/inc +CFLAGS = -I$(INCDIR) -m$(MCU_MODEL) --model-$(MODEL) --out-fmt-ihx --no-xinit-opt $(DFOSC) +LFLAGS = $(LIBPATH) $(LIBS) -m$(MCU_MODEL) --model-$(MODEL) $(CODE_SIZE) $(IRAM_SIZE) $(XRAM_SIZE) --out-fmt-ihx $(DEBUG) $(DFOSC) +LDLIBS = -L$(COMMONDIR) -lcommon.lib + +.PHONY: all clean flash + +all: $(PROGRAM).ihx + @echo $(SOURCES) + exit + @ls -la $(PROGRAM).ihx + +$(PROGRAM).ihx: $(OBJECTS) $(COMMONDIR)/common.lib + $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ + +$(COMMONDIR)/common.lib: + @make -C $(COMMONDIR) all + +%.rel : %.c $(HEADERS) + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + +CCOMPILEDFILES=$(SOURCES:.c=.asm) $(SOURCES:.c=.lst) $(SOURCES:.c=.rel) \ + $(SOURCES:.c=.rst) $(SOURCES:.c=.sym) +clean: + @rm -f $(PROGRAM).ihx $(PROGRAM).cdb $(PROGRAM).lk $(PROGRAM).map $(CCOMPILEDFILES) diff --git a/fw/n76e003/test1/defaults.h b/fw/n76e003/test1/defaults.h new file mode 100644 index 0000000..aeec180 --- /dev/null +++ b/fw/n76e003/test1/defaults.h @@ -0,0 +1,18 @@ +#ifndef DEFAULTS_H +#define DEFAULTS_H + +#define LED0 P14 +#define SW0 P13 + +#define BUZZER_CLK (16000000 / 12) +#define BUZZER_FREQ (1200 * 2) +#define BUZZER_PERIOD (0xFFFF - ((BUZZER_CLK / BUZZER_FREQ) - 1)) + +#define PWM_CLK (16000000 / 8) +#define PWM_FREQ 240 +#define PWM_PERIOD ((PWM_CLK / PWM_FREQ) - 1) +#define PWM_SLICE (PWM_PERIOD / 100) + +#define SRV0_START 0 + +#endif /* DEFAULTS_H */ \ No newline at end of file diff --git a/fw/n76e003/test1/main.c b/fw/n76e003/test1/main.c new file mode 100644 index 0000000..427a954 --- /dev/null +++ b/fw/n76e003/test1/main.c @@ -0,0 +1,317 @@ +/* + * N76E003-TEST1 + * + * LED + * LED0 -> P1.4 (RED; HOT) + * SSR + * SSR0 -> P0.4;PWM3 > TOP + * SSR1 -> P1.5;PWM5 > BOTTOM + * SERVO + * SRV0 -> P1.2;PWM0 + * SW + * SW0 -> P1.3 + * LCD + * CS -> P1.1 + * DC -> P0.3 + * RES -> P1.2 + * SCK -> P1.0;SPCLK [spi] + * MOSI -> P0.0;MOSI [spi] + * MAX6675 + * CS -> P3.0 + * SCK -> P1.0;SPCLK [spi] + * MISO -> P0.1;MISO [spi] + * BEEP + * BEEP -> P0.5;T0 + * UART1 + * TX -> P0.6 + * RX -> P0.7 + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include "defaults.h" + +/* Needed for printf */ +int putchar(int c) +{ + while (!TI) + ; + TI = 0; + SBUF = c; + return c; +} + +void TIM0_ISR(void) __interrupt(1) +{ + clr_TF0; + TL0 = LOBYTE(BUZZER_PERIOD); + TH0 = HIBYTE(BUZZER_PERIOD); +} + +volatile uint16_t tim2Value = 0; +void TIM2_ISR(void) __interrupt(5) +{ + clr_TF2; + tim2Value++; +} + +volatile uint8_t sw0Counter; +void PinInterrupt_ISR(void) __interrupt(7) +{ + if (PIF == 0x08) + { + PIF = 0; + sw0Counter++; + } +} + +void setOutput(uint8_t value0, uint8_t value1) +{ + uint16_t pwm = PWM_SLICE * value0; + if (pwm > 0) + { + PWM3H = HIBYTE(pwm); + PWM3L = LOBYTE(pwm); + } + else + { + PWM3H = 0; + PWM3L = 0; + } + + pwm = PWM_SLICE * value1; + if (pwm > 0) + { + set_SFRPAGE; + PWM5H = HIBYTE(pwm); + PWM5L = LOBYTE(pwm); + clr_SFRPAGE; + } + else + { + set_SFRPAGE; + PWM5H = 0; + PWM5L = 0; + clr_SFRPAGE; + } + while (LOAD == 1) + ; + set_LOAD; +} + +uint16_t setServo(uint8_t value0) +{ + uint16_t srv0 = (PWM_SLICE * 6) + (value0 * (PWM_SLICE/4)); + + PWM0H = HIBYTE(srv0); + PWM0L = LOBYTE(srv0); + while (LOAD == 1) + ; + set_LOAD; + return srv0; +} +/*==========================================================================*/ +void main(void) +{ + uint16_t previousTicks = 0xffff; + uint16_t previousSecond = 0xffff; + uint8_t servo0 = SRV0_START; + uint8_t beeps = 2; + bool beepOn = false; + + clr_EA; + + /* SW0 setup */ + sw0Counter = 0; + P13_Input_Mode; + clr_PIPS1; + set_PIPS0; + Enable_BIT3_FallEdge_Trig; + set_EPI; + + /* LED setup */ + P14_Quasi_Mode; + + /* TIM0 setup / BUZZER */ + P05_PushPull_Mode; + TIMER0_MODE1_ENABLE; + TL0 = LOBYTE(BUZZER_PERIOD); + TH0 = HIBYTE(BUZZER_PERIOD); + set_ET0; + set_T0OE; + clr_TR0; + + /* TIM2 setup ~200ms */ + TIMER2_DIV_128; + TIMER2_Auto_Reload_Delay_Mode; + RCMP2L = LOBYTE(TIMER_DIV128_VALUE_250ms); + RCMP2H = HIBYTE(TIMER_DIV128_VALUE_250ms); + TL2 = 0; + TH2 = 0; + set_ET2; + set_TR2; + + /* PWM setup */ + PWM_IMDEPENDENT_MODE; + //PWM_CENTER_TYPE; + PWM_CLOCK_DIV_8; + PWMPH = HIBYTE(PWM_PERIOD); + PWMPL = LOBYTE(PWM_PERIOD); + set_PWMRUN; + + /* SSR setup */ + P04_PushPull_Mode; + P15_PushPull_Mode; + PWM3_P04_OUTPUT_ENABLE; + PWM5_P15_OUTPUT_ENABLE; + + /* SERVO setup */ + P12_PushPull_Mode; + PWM0_P12_OUTPUT_ENABLE; + + /* MAX6675 setup */ + max6675_init(); + + /* LCD setup */ + lcd_init(true); + + __xdata uint8_t lcdTitleBuffer[21]; + __xdata struct LCD_SEGMENT lcdTitle = { + '#', // clearChar + lcdTitleBuffer, // buffer + sizeof(lcdTitleBuffer), // bufferDepth + 1, // fontWidth + 1, // fontHeight + 1, // fontSpacing + 0, // page0 + 1, // rows + }; + lcd_clear_segment(&lcdTitle); + __xdata uint8_t lcdTimeBuffer[11]; + __xdata struct LCD_SEGMENT lcdTime = { + ' ', // clearChar + lcdTimeBuffer, // buffer + sizeof(lcdTimeBuffer), // bufferDepth + 2, // fontWidth + 2, // fontHeight + 1, // fontSpacing + 1, // page0 + 1, // rows + }; + lcd_clear_segment(&lcdTime); + + __xdata uint8_t lcdPowerTempBuffer[11]; + __xdata struct LCD_SEGMENT lcdPowerTemp = { + ' ', // clearChar + lcdPowerTempBuffer, // buffer + sizeof(lcdPowerTempBuffer), // bufferDepth + 2, // fontWidth + 3, // fontHeight + 1, // fontSpacing + 3, // page0 + 1, // rows + }; + lcd_clear_segment(&lcdPowerTemp); + + __xdata uint8_t lcdStatusBuffer[21]; + __xdata struct LCD_SEGMENT lcdStatus = { + '#', // clearChar + lcdStatusBuffer, // buffer + sizeof(lcdStatusBuffer), // bufferDepth + 1, // fontWidth + 2, // fontHeight + 1, // fontSpacing + 6, // page0 + 1, // rows + }; + lcd_clear_segment(&lcdStatus); + + /* UART0 setup */ + InitialUART0_Timer3(115200); + TI = 1; + + set_EA; + + printf_tiny("\r\nTEST1\r\n"); + setOutput(99, 99); + + do + { + uint8_t currentSW0 = sw0Counter; + sw0Counter = 0; + uint16_t currentTicks = tim2Value; + uint16_t currentSecond = (currentTicks / 4); + bool isOneSecondInterval = false; + + if (previousTicks != currentTicks) + { + previousTicks = currentTicks; + if (previousSecond != currentSecond) + { + previousSecond = currentSecond; + isOneSecondInterval = true; + } + if (beeps) + { + if ((currentTicks % 2) == 0) + { + set_TR0; + beepOn = true; + } + else if (beepOn) + { + clr_TR0; + beepOn = false; + beeps--; + } + } + } + + if (currentSW0) + { + beeps += 2; + } + + if (isOneSecondInterval) + { + lcd_clear_segment(&lcdTime); + lcd_clear_segment(&lcdPowerTemp); + + uint16_t dT = currentSecond; + uint16_t currentTemperatureRaw = max6675_read(); + uint16_t currentTemperature = currentTemperatureRaw / 4; + uint16_t currentTemperaturePoint = (currentTemperatureRaw - (currentTemperature * 4)) * 100; + uint16_t lm = (dT / 60); + uint16_t tm = (lm % 60); + uint8_t th = (lm / 60); + uint8_t ts = (dT % 60); + + servo0 += 15; + if (servo0 > 180) + { + servo0 = SRV0_START; + } + uint16_t pos0 = setServo(servo0); + + printf_tiny("%d:%d:%d > %d\r\n", th, tm, ts, pos0); + + sprintf(lcdTimeBuffer, "? %02u:%02u:%02u", th, tm, ts); + sprintf(lcdPowerTempBuffer, "--:-- %3u C", currentTemperature); + LED0 = !LED0; + + lcd_display_segment(&lcdTitle); + lcd_display_segment(&lcdTime); + lcd_display_segment(&lcdPowerTemp); + lcd_display_segment(&lcdStatus); + } + + set_IDL; + } while (1); +} diff --git a/fw/stm8s/common/Makefile b/fw/stm8s/common/Makefile new file mode 100644 index 0000000..387650f --- /dev/null +++ b/fw/stm8s/common/Makefile @@ -0,0 +1,40 @@ +DEVICE = stm8s103f3 +F_CPU ?= 16000000 +OLED ?= SSD1306_128_64 +FONTSET_MINI ?= FONTSET_MINI + +SRCDIR = ./src +INCDIR = ./inc + +## Get program name from enclosing directory name +PROGRAM = $(lastword $(subst /, ,$(CURDIR))) + +SOURCES=$(wildcard *.c $(SRCDIR)/*.c) +OBJECTS=$(SOURCES:.c=.rel) +HEADERS=$(wildcard *.h $(INCDIR)/*.h) + +CC = sdcc +PROGRAMMER = stlinkv2 + +DEFINES= +DEFINES += -DSTM8S103 + +CPPFLAGS = -I$(INCDIR) +CFLAGS = --Werror --std-sdcc99 -mstm8 --opt-code-size $(DEFINES) -DF_CPU=$(F_CPU)UL -D$(OLED) -D$(FONTSET_MINI) +AR = sdar +ARFLAGS = -rc + +.PHONY: all clean flash + +all: $(PROGRAM).lib + +$(PROGRAM).lib: $(OBJECTS) + $(AR) $(ARFLAGS) $(PROGRAM).lib $^ + +%.rel : %.c $(HEADERS) + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + +CCOMPILEDFILES=$(SOURCES:.c=.asm) $(SOURCES:.c=.lst) $(SOURCES:.c=.rel) \ + $(SOURCES:.c=.rst) $(SOURCES:.c=.sym) +clean: + @rm -f $(PROGRAM).lib $(PROGRAM).cdb $(PROGRAM).lk $(PROGRAM).map $(CCOMPILEDFILES) diff --git a/fw/stm8s/common/extra.def b/fw/stm8s/common/extra.def new file mode 100644 index 0000000..6e3ccaa --- /dev/null +++ b/fw/stm8s/common/extra.def @@ -0,0 +1,216 @@ +// Extra rules generated by rules_gen.py +// REG ^= (1 << 0) +replace restart { + ld a, %1 + xor a, #0x01 + ld %1, a +} by { + bcpl %1, #0 ; peephole replaced xor by bcpl. +} if notUsed('a') + +// REG |= (1 << 0) +replace restart { + ld a, %1 + or a, #0x01 + ld %1, a +} by { + bset %1, #0 ; peephole replaced or by bset. +} if notUsed('a') + +// REG &= ~(1 << 0) +replace restart { + ld a, %1 + and a, #0xfe + ld %1, a +} by { + bres %1, #0 ; peephole replaced and by bres. +} if notUsed('a') + +// REG ^= (1 << 1) +replace restart { + ld a, %1 + xor a, #0x02 + ld %1, a +} by { + bcpl %1, #1 ; peephole replaced xor by bcpl. +} if notUsed('a') + +// REG |= (1 << 1) +replace restart { + ld a, %1 + or a, #0x02 + ld %1, a +} by { + bset %1, #1 ; peephole replaced or by bset. +} if notUsed('a') + +// REG &= ~(1 << 1) +replace restart { + ld a, %1 + and a, #0xfd + ld %1, a +} by { + bres %1, #1 ; peephole replaced and by bres. +} if notUsed('a') + +// REG ^= (1 << 2) +replace restart { + ld a, %1 + xor a, #0x04 + ld %1, a +} by { + bcpl %1, #2 ; peephole replaced xor by bcpl. +} if notUsed('a') + +// REG |= (1 << 2) +replace restart { + ld a, %1 + or a, #0x04 + ld %1, a +} by { + bset %1, #2 ; peephole replaced or by bset. +} if notUsed('a') + +// REG &= ~(1 << 2) +replace restart { + ld a, %1 + and a, #0xfb + ld %1, a +} by { + bres %1, #2 ; peephole replaced and by bres. +} if notUsed('a') + +// REG ^= (1 << 3) +replace restart { + ld a, %1 + xor a, #0x08 + ld %1, a +} by { + bcpl %1, #3 ; peephole replaced xor by bcpl. +} if notUsed('a') + +// REG |= (1 << 3) +replace restart { + ld a, %1 + or a, #0x08 + ld %1, a +} by { + bset %1, #3 ; peephole replaced or by bset. +} if notUsed('a') + +// REG &= ~(1 << 3) +replace restart { + ld a, %1 + and a, #0xf7 + ld %1, a +} by { + bres %1, #3 ; peephole replaced and by bres. +} if notUsed('a') + +// REG ^= (1 << 4) +replace restart { + ld a, %1 + xor a, #0x10 + ld %1, a +} by { + bcpl %1, #4 ; peephole replaced xor by bcpl. +} if notUsed('a') + +// REG |= (1 << 4) +replace restart { + ld a, %1 + or a, #0x10 + ld %1, a +} by { + bset %1, #4 ; peephole replaced or by bset. +} if notUsed('a') + +// REG &= ~(1 << 4) +replace restart { + ld a, %1 + and a, #0xef + ld %1, a +} by { + bres %1, #4 ; peephole replaced and by bres. +} if notUsed('a') + +// REG ^= (1 << 5) +replace restart { + ld a, %1 + xor a, #0x20 + ld %1, a +} by { + bcpl %1, #5 ; peephole replaced xor by bcpl. +} if notUsed('a') + +// REG |= (1 << 5) +replace restart { + ld a, %1 + or a, #0x20 + ld %1, a +} by { + bset %1, #5 ; peephole replaced or by bset. +} if notUsed('a') + +// REG &= ~(1 << 5) +replace restart { + ld a, %1 + and a, #0xdf + ld %1, a +} by { + bres %1, #5 ; peephole replaced and by bres. +} if notUsed('a') + +// REG ^= (1 << 6) +replace restart { + ld a, %1 + xor a, #0x40 + ld %1, a +} by { + bcpl %1, #6 ; peephole replaced xor by bcpl. +} if notUsed('a') + +// REG |= (1 << 6) +replace restart { + ld a, %1 + or a, #0x40 + ld %1, a +} by { + bset %1, #6 ; peephole replaced or by bset. +} if notUsed('a') + +// REG &= ~(1 << 6) +replace restart { + ld a, %1 + and a, #0xbf + ld %1, a +} by { + bres %1, #6 ; peephole replaced and by bres. +} if notUsed('a') + +// REG ^= (1 << 7) +replace restart { + ld a, %1 + xor a, #0x80 + ld %1, a +} by { + bcpl %1, #7 ; peephole replaced xor by bcpl. +} if notUsed('a') + +// REG |= (1 << 7) +replace restart { + ld a, %1 + or a, #0x80 + ld %1, a +} by { + bset %1, #7 ; peephole replaced or by bset. +} if notUsed('a') + +// REG &= ~(1 << 7) +replace restart { + ld a, %1 + and a, #0x7f + ld %1, a +} by { + bres %1, #7 ; peephole replaced and by bres. +} if notUsed('a') \ No newline at end of file diff --git a/fw/stm8s/common/inc/beep.h b/fw/stm8s/common/inc/beep.h new file mode 100644 index 0000000..1011e95 --- /dev/null +++ b/fw/stm8s/common/inc/beep.h @@ -0,0 +1,16 @@ +#ifndef BEEP_H +#define BEEP_H + +/* +* BEEP -> PD4 +*/ + +#include +#include "stm8s.h" + +void beep_init(void); +void beep_on(void); +void beep_off(void); +void beep_freq(uint8_t freq); + +#endif /* BEEP_H */ \ No newline at end of file diff --git a/fw/stm8s/common/inc/clock.h b/fw/stm8s/common/inc/clock.h new file mode 100644 index 0000000..00d7632 --- /dev/null +++ b/fw/stm8s/common/inc/clock.h @@ -0,0 +1,21 @@ +#ifndef CLOCK_H +#define CLOCK_H + +#ifndef F_CPU +#warning "F_CPU not defined, using 2MHz by default" +#define F_CPU 16000000UL +#endif + +#include +#include "stm8s.h" + +inline void clock_init(void) +{ +#if (F_CPU == 2000000UL) + +#elif (F_CPU == 16000000UL) + CLK_CKDIVR = 0x00; // Set the frequency to 16 MHz +#endif +} + +#endif /* CLOCK_H */ \ No newline at end of file diff --git a/fw/stm8s/common/inc/delay.h b/fw/stm8s/common/inc/delay.h new file mode 100644 index 0000000..0c5b73a --- /dev/null +++ b/fw/stm8s/common/inc/delay.h @@ -0,0 +1,23 @@ +#ifndef DELAY_H +#define DELAY_H + +#ifndef F_CPU +#warning "F_CPU not defined, using 2MHz by default" +#define F_CPU 2000000UL +#endif + +#include + +inline void delay_ms(uint32_t ms) { + for (uint32_t i = 0; i < ((F_CPU / 18 / 1000UL) * ms); i++) { + __asm__("nop"); + } +} + +inline void delay_us(uint32_t us) { + for (uint32_t i = 0; i < ((F_CPU / 18 /1000UL / 1000UL) * us); i++) { + __asm__("nop"); + } +} + +#endif /* DELAY_H */ \ No newline at end of file diff --git a/fw/stm8s/common/inc/eeprom.h b/fw/stm8s/common/inc/eeprom.h new file mode 100644 index 0000000..c4ba26d --- /dev/null +++ b/fw/stm8s/common/inc/eeprom.h @@ -0,0 +1,14 @@ +#ifndef EEPROM_H +#define EEPROM_H + +#include +#include "stm8s.h" + +void eeprom_unlock(); +void eeprom_lock(); +void eeprom_wait_busy(); + +void eeprom_read(uint16_t addr, uint8_t *buf, int len); +void eeprom_write(uint16_t addr, uint8_t *buf, uint16_t len); + +#endif /* EEPROM_H */ \ No newline at end of file diff --git a/fw/stm8s/common/inc/font.h b/fw/stm8s/common/inc/font.h new file mode 100644 index 0000000..90294ae --- /dev/null +++ b/fw/stm8s/common/inc/font.h @@ -0,0 +1,2832 @@ +#ifndef FONT_H +#define FONT_H + +#define _FONT_W 5 +#define _FONT_H 8 + +static const uint8_t _font[] = { +#ifndef FONTSET_MINI + // [?] 0x00 ***************** + 0x00, 0x00, 0x00, 0x00, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x01 ***************** + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01011011 â–“â–“â–“â–“â–“ + // 01001111 â–“â–‘â–“â–‘â–“ + // 01011011 â–“â–“â–“â–“â–“ + // 00111110 â–“â–“â–‘â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x02 ***************** + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01101011 â–“â–“â–“â–“â–“ + // 01001111 â–“â–‘â–“â–‘â–“ + // 01101011 â–“â–“â–“â–“â–“ + // 00111110 â–“â–‘â–‘â–‘â–“ + // â–“â–“â–‘â–“â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x03 ***************** + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, + // 00011100 â–‘â–‘â–‘â–‘â–‘ + // 00111110 â–‘â–“â–‘â–“â–‘ + // 01111100 â–“â–“â–“â–“â–“ + // 00111110 â–“â–“â–“â–“â–“ + // 00011100 â–“â–“â–“â–“â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x04 ***************** + 0x18, 0x3C, 0x7E, 0x3C, 0x18, + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 00111100 â–‘â–‘â–“â–‘â–‘ + // 01111110 â–‘â–“â–“â–“â–‘ + // 00111100 â–“â–“â–“â–“â–“ + // 00011000 â–“â–“â–“â–“â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x05 ***************** + 0x1C, 0x57, 0x7D, 0x57, 0x1C, + // 00011100 â–‘â–“â–“â–“â–‘ + // 01010111 â–‘â–“â–‘â–“â–‘ + // 01111101 â–“â–“â–“â–“â–“ + // 01010111 â–“â–‘â–“â–‘â–“ + // 00011100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x06 ***************** + 0xDC, 0x22, 0xC9, 0x22, 0xDC, + // 11011100 â–‘â–‘â–“â–‘â–‘ + // 00100010 â–‘â–“â–‘â–“â–‘ + // 11001001 â–“â–‘â–‘â–‘â–“ + // 00100010 â–“â–‘â–“â–‘â–“ + // 11011100 â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–“â–‘â–“â–‘â–“ + // â–“â–‘â–“â–‘â–“ +/* OLD + // [?] 0x06 ***************** + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, + // 00011100 â–‘â–‘â–“â–‘â–‘ + // 01011110 â–‘â–“â–“â–“â–‘ + // 01111111 â–“â–“â–“â–“â–“ + // 01011110 â–“â–“â–“â–“â–“ + // 00011100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** +*/ + // [?] 0x07 ***************** + 0x00, 0x18, 0x3C, 0x18, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 00111100 â–‘â–‘â–“â–‘â–‘ + // 00011000 â–‘â–“â–“â–“â–‘ + // 00000000 â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x08 ***************** + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, + // 11111111 â–“â–“â–“â–“â–“ + // 11100111 â–“â–“â–“â–“â–“ + // 11000011 â–“â–“â–‘â–“â–“ + // 11100111 â–“â–‘â–‘â–‘â–“ + // 11111111 â–“â–‘â–‘â–‘â–“ + // â–“â–“â–‘â–“â–“ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // ************************** + // [?] 0x09 ***************** + 0x00, 0x18, 0x24, 0x18, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 00100100 â–‘â–‘â–“â–‘â–‘ + // 00011000 â–‘â–“â–‘â–“â–‘ + // 00000000 â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x0a ***************** + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, + // 11111111 â–“â–“â–“â–“â–“ + // 11100111 â–“â–“â–“â–“â–“ + // 11011011 â–“â–“â–‘â–“â–“ + // 11100111 â–“â–‘â–“â–‘â–“ + // 11111111 â–“â–‘â–“â–‘â–“ + // â–“â–“â–‘â–“â–“ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // ************************** + // [?] 0x0b ***************** + 0x30, 0x48, 0x3A, 0x06, 0x0E, + // 00110000 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–‘â–‘â–“â–“â–“ + // 00111010 â–‘â–‘â–‘â–“â–“ + // 00000110 â–‘â–“â–“â–‘â–“ + // 00001110 â–“â–‘â–“â–‘â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x0c ***************** + 0x26, 0x29, 0x79, 0x29, 0x26, + // 00100110 â–‘â–“â–“â–“â–‘ + // 00101001 â–“â–‘â–‘â–‘â–“ + // 01111001 â–“â–‘â–‘â–‘â–“ + // 00101001 â–‘â–“â–“â–“â–‘ + // 00100110 â–‘â–‘â–“â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x0d ***************** + 0x40, 0x7F, 0x05, 0x05, 0x07, + // 01000000 â–‘â–“â–“â–“â–“ + // 01111111 â–‘â–“â–‘â–‘â–“ + // 00000101 â–‘â–“â–“â–“â–“ + // 00000101 â–‘â–“â–‘â–‘â–‘ + // 00000111 â–‘â–“â–‘â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–“â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x0e ***************** + 0x40, 0x7F, 0x05, 0x25, 0x3F, + // 01000000 â–‘â–“â–“â–“â–“ + // 01111111 â–‘â–“â–‘â–‘â–“ + // 00000101 â–‘â–“â–“â–“â–“ + // 00100101 â–‘â–“â–‘â–‘â–“ + // 00111111 â–‘â–“â–‘â–‘â–“ + // â–‘â–“â–‘â–“â–“ + // â–“â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x0f ***************** + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, + // 01011010 â–‘â–‘â–“â–‘â–‘ + // 00111100 â–“â–‘â–“â–‘â–“ + // 11100111 â–‘â–“â–“â–“â–‘ + // 00111100 â–“â–“â–‘â–“â–“ + // 01011010 â–“â–“â–‘â–“â–“ + // â–‘â–“â–“â–“â–‘ + // â–“â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–‘ + // ************************** + // [?] 0x10 ***************** + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, + // 01111111 â–“â–‘â–‘â–‘â–‘ + // 00111110 â–“â–“â–‘â–‘â–‘ + // 00011100 â–“â–“â–“â–“â–‘ + // 00011100 â–“â–“â–“â–“â–“ + // 00001000 â–“â–“â–“â–“â–‘ + // â–“â–“â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x11 ***************** + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, + // 00001000 â–‘â–‘â–‘â–‘â–“ + // 00011100 â–‘â–‘â–‘â–“â–“ + // 00011100 â–‘â–“â–“â–“â–“ + // 00111110 â–“â–“â–“â–“â–“ + // 01111111 â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x12 ***************** + 0x14, 0x22, 0x7F, 0x22, 0x14, + // 00010100 â–‘â–‘â–“â–‘â–‘ + // 00100010 â–‘â–“â–“â–“â–‘ + // 01111111 â–“â–‘â–“â–‘â–“ + // 00100010 â–‘â–‘â–“â–‘â–‘ + // 00010100 â–“â–‘â–“â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x13 ***************** + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, + // 01011111 â–“â–“â–‘â–“â–“ + // 01011111 â–“â–“â–‘â–“â–“ + // 00000000 â–“â–“â–‘â–“â–“ + // 01011111 â–“â–“â–‘â–“â–“ + // 01011111 â–“â–“â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x14 ***************** + 0x06, 0x09, 0x7F, 0x01, 0x7F, + // 00000110 â–‘â–“â–“â–“â–“ + // 00001001 â–“â–‘â–“â–‘â–“ + // 01111111 â–“â–‘â–“â–‘â–“ + // 00000001 â–‘â–“â–“â–‘â–“ + // 01111111 â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x15 ***************** + 0x00, 0x66, 0x89, 0x95, 0x6A, + // 00000000 â–‘â–‘â–“â–“â–‘ + // 01100110 â–‘â–“â–‘â–‘â–“ + // 10001001 â–‘â–“â–‘â–“â–‘ + // 10010101 â–‘â–‘â–“â–‘â–“ + // 01101010 â–‘â–‘â–‘â–“â–‘ + // â–‘â–“â–‘â–‘â–“ + // â–‘â–“â–‘â–‘â–“ + // â–‘â–‘â–“â–“â–‘ + // ************************** + // [?] 0x16 ***************** + 0x60, 0x60, 0x60, 0x60, 0x60, + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x17 ***************** + 0x94, 0xA2, 0xFF, 0xA2, 0x94, + // 10010100 â–‘â–‘â–“â–‘â–‘ + // 10100010 â–‘â–“â–“â–“â–‘ + // 11111111 â–“â–‘â–“â–‘â–“ + // 10100010 â–‘â–‘â–“â–‘â–‘ + // 10010100 â–“â–‘â–“â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–“â–“â–“â–“â–“ + // ************************** + // [?] 0x18 ***************** + 0x08, 0x04, 0x7E, 0x04, 0x08, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 01111110 â–‘â–“â–“â–“â–‘ + // 00000100 â–“â–‘â–“â–‘â–“ + // 00001000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x19 ***************** + 0x10, 0x20, 0x7E, 0x20, 0x10, + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00100000 â–‘â–‘â–“â–‘â–‘ + // 01111110 â–‘â–‘â–“â–‘â–‘ + // 00100000 â–‘â–‘â–“â–‘â–‘ + // 00010000 â–“â–‘â–“â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x1a ***************** + 0x08, 0x08, 0x2A, 0x1C, 0x08, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–“â–‘â–‘ + // 00101010 â–‘â–‘â–‘â–“â–‘ + // 00011100 â–“â–“â–“â–“â–“ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x1b ***************** + 0x08, 0x1C, 0x2A, 0x08, 0x08, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00011100 â–‘â–‘â–“â–‘â–‘ + // 00101010 â–‘â–“â–‘â–‘â–‘ + // 00001000 â–“â–“â–“â–“â–“ + // 00001000 â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x1c ***************** + 0x1E, 0x10, 0x10, 0x10, 0x10, + // 00011110 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–‘ + // 00010000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x1d ***************** + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, + // 00001100 â–‘â–‘â–‘â–‘â–‘ + // 00011110 â–‘â–“â–‘â–“â–‘ + // 00001100 â–“â–“â–“â–“â–“ + // 00011110 â–“â–“â–“â–“â–“ + // 00001100 â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x1e ***************** + 0x30, 0x38, 0x3E, 0x38, 0x30, + // 00110000 â–‘â–‘â–‘â–‘â–‘ + // 00111000 â–‘â–‘â–“â–‘â–‘ + // 00111110 â–‘â–‘â–“â–‘â–‘ + // 00111000 â–‘â–“â–“â–“â–‘ + // 00110000 â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x1f ***************** + 0x06, 0x0E, 0x3E, 0x0E, 0x06, + // 00000110 â–‘â–‘â–‘â–‘â–‘ + // 00001110 â–“â–“â–“â–“â–“ + // 00111110 â–“â–“â–“â–“â–“ + // 00001110 â–‘â–“â–“â–“â–‘ + // 00000110 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** +#endif + // [ ] 0x20 ***************** + 0x00, 0x00, 0x00, 0x00, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [!] 0x21 ***************** + 0x00, 0x00, 0x5F, 0x00, 0x00, + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 01011111 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // ["] 0x22 ***************** + 0x00, 0x07, 0x00, 0x07, 0x00, + // 00000000 â–‘â–“â–‘â–“â–‘ + // 00000111 â–‘â–“â–‘â–“â–‘ + // 00000000 â–‘â–“â–‘â–“â–‘ + // 00000111 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [#] 0x23 ***************** + 0x14, 0x7F, 0x14, 0x7F, 0x14, + // 00010100 â–‘â–“â–‘â–“â–‘ + // 01111111 â–‘â–“â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // 01111111 â–‘â–“â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [$] 0x24 ***************** + 0x24, 0x2A, 0x7F, 0x2A, 0x12, + // 00100100 â–‘â–‘â–“â–‘â–‘ + // 00101010 â–‘â–“â–“â–“â–“ + // 01111111 â–“â–‘â–“â–‘â–‘ + // 00101010 â–‘â–“â–“â–“â–‘ + // 00010010 â–‘â–‘â–“â–‘â–“ + // â–“â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [%] 0x25 ***************** + 0x23, 0x13, 0x08, 0x64, 0x62, + // 00100011 â–“â–“â–‘â–‘â–‘ + // 00010011 â–“â–“â–‘â–‘â–“ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // 01100100 â–‘â–‘â–“â–‘â–‘ + // 01100010 â–‘â–“â–‘â–‘â–‘ + // â–“â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [&] 0x26 ***************** + 0x36, 0x49, 0x56, 0x20, 0x50, + // 00110110 â–‘â–“â–‘â–‘â–‘ + // 01001001 â–“â–‘â–“â–‘â–‘ + // 01010110 â–“â–‘â–“â–‘â–‘ + // 00100000 â–‘â–“â–‘â–‘â–‘ + // 01010000 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // ['] 0x27 ***************** + 0x00, 0x08, 0x07, 0x03, 0x00, + // 00000000 â–‘â–‘â–“â–“â–‘ + // 00001000 â–‘â–‘â–“â–“â–‘ + // 00000111 â–‘â–‘â–“â–‘â–‘ + // 00000011 â–‘â–“â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [(] 0x28 ***************** + 0x00, 0x1C, 0x22, 0x41, 0x00, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00011100 â–‘â–‘â–“â–‘â–‘ + // 00100010 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–“â–‘â–‘â–‘ + // 00000000 â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [)] 0x29 ***************** + 0x00, 0x41, 0x22, 0x1C, 0x00, + // 00000000 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 00100010 â–‘â–‘â–‘â–“â–‘ + // 00011100 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [*] 0x2a ***************** + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, + // 00101010 â–‘â–‘â–“â–‘â–‘ + // 00011100 â–“â–‘â–“â–‘â–“ + // 01111111 â–‘â–“â–“â–“â–‘ + // 00011100 â–“â–“â–“â–“â–“ + // 00101010 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [+] 0x2b ***************** + 0x08, 0x08, 0x3E, 0x08, 0x08, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–“â–‘â–‘ + // 00111110 â–‘â–‘â–“â–‘â–‘ + // 00001000 â–“â–“â–“â–“â–“ + // 00001000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [,] 0x2c ***************** + 0x00, 0x80, 0x70, 0x30, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 10000000 â–‘â–‘â–‘â–‘â–‘ + // 01110000 â–‘â–‘â–‘â–‘â–‘ + // 00110000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // ************************** + // [-] 0x2d ***************** + 0x08, 0x08, 0x08, 0x08, 0x08, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–“â–“â–“â–“â–“ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [.] 0x2e ***************** + 0x00, 0x00, 0x60, 0x60, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // 01100000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [/] 0x2f ***************** + 0x20, 0x10, 0x08, 0x04, 0x02, + // 00100000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–“ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 00000010 â–‘â–“â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [0] 0x30 ***************** + 0x3E, 0x51, 0x49, 0x45, 0x3E, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01010001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–“â–‘â–‘â–“â–“ + // 01000101 â–“â–‘â–“â–‘â–“ + // 00111110 â–“â–“â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [1] 0x31 ***************** + 0x00, 0x42, 0x7F, 0x40, 0x00, + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 01000010 â–‘â–“â–“â–‘â–‘ + // 01111111 â–‘â–‘â–“â–‘â–‘ + // 01000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [2] 0x32 ***************** + 0x72, 0x49, 0x49, 0x49, 0x46, + // 01110010 â–‘â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–‘â–‘â–‘â–‘â–“ + // 01001001 â–‘â–“â–“â–“â–‘ + // 01000110 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [3] 0x33 ***************** + 0x21, 0x41, 0x49, 0x4D, 0x33, + // 00100001 â–“â–“â–“â–“â–“ + // 01000001 â–‘â–‘â–‘â–‘â–“ + // 01001001 â–‘â–‘â–‘â–“â–‘ + // 01001101 â–‘â–‘â–“â–“â–‘ + // 00110011 â–‘â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [4] 0x34 ***************** + 0x18, 0x14, 0x12, 0x7F, 0x10, + // 00011000 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–“â–“â–‘ + // 00010010 â–‘â–“â–‘â–“â–‘ + // 01111111 â–“â–‘â–‘â–“â–‘ + // 00010000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [5] 0x35 ***************** + 0x27, 0x45, 0x45, 0x45, 0x39, + // 00100111 â–“â–“â–“â–“â–“ + // 01000101 â–“â–‘â–‘â–‘â–‘ + // 01000101 â–“â–“â–“â–“â–‘ + // 01000101 â–‘â–‘â–‘â–‘â–“ + // 00111001 â–‘â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [6] 0x36 ***************** + 0x3C, 0x4A, 0x49, 0x49, 0x31, + // 00111100 â–‘â–‘â–“â–“â–“ + // 01001010 â–‘â–“â–‘â–‘â–‘ + // 01001001 â–“â–‘â–‘â–‘â–‘ + // 01001001 â–“â–“â–“â–“â–‘ + // 00110001 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [7] 0x37 ***************** + 0x41, 0x21, 0x11, 0x09, 0x07, + // 01000001 â–“â–“â–“â–“â–“ + // 00100001 â–‘â–‘â–‘â–‘â–“ + // 00010001 â–‘â–‘â–‘â–‘â–“ + // 00001001 â–‘â–‘â–‘â–“â–‘ + // 00000111 â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [8] 0x38 ***************** + 0x36, 0x49, 0x49, 0x49, 0x36, + // 00110110 â–‘â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–‘â–“â–“â–“â–‘ + // 00110110 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [9] 0x39 ***************** + 0x46, 0x49, 0x49, 0x29, 0x1E, + // 01000110 â–‘â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 00101001 â–‘â–“â–“â–“â–“ + // 00011110 â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–“â–“â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [:] 0x3a ***************** + 0x00, 0x00, 0x14, 0x00, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [;] 0x3b ***************** + 0x00, 0x40, 0x34, 0x00, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 00110100 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [<] 0x3c ***************** + 0x00, 0x08, 0x14, 0x22, 0x41, + // 00000000 â–‘â–‘â–‘â–‘â–“ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–“â–‘â–‘ + // 00100010 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [=] 0x3d ***************** + 0x14, 0x14, 0x14, 0x14, 0x14, + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [>] 0x3e ***************** + 0x00, 0x41, 0x22, 0x14, 0x08, + // 00000000 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 00100010 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–“ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x3f ***************** + 0x02, 0x01, 0x59, 0x09, 0x06, + // 00000010 â–‘â–“â–“â–“â–‘ + // 00000001 â–“â–‘â–‘â–‘â–“ + // 01011001 â–‘â–‘â–‘â–‘â–“ + // 00001001 â–‘â–‘â–“â–“â–‘ + // 00000110 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [@] 0x40 ***************** + 0x3E, 0x41, 0x5D, 0x59, 0x4E, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01011101 â–“â–‘â–“â–‘â–“ + // 01011001 â–“â–‘â–“â–“â–“ + // 01001110 â–“â–‘â–“â–“â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [A] 0x41 ***************** + 0x7C, 0x12, 0x11, 0x12, 0x7C, + // 01111100 â–‘â–‘â–“â–‘â–‘ + // 00010010 â–‘â–“â–‘â–“â–‘ + // 00010001 â–“â–‘â–‘â–‘â–“ + // 00010010 â–“â–‘â–‘â–‘â–“ + // 01111100 â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [B] 0x42 ***************** + 0x7F, 0x49, 0x49, 0x49, 0x36, + // 01111111 â–“â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–“â–“â–“â–“â–‘ + // 00110110 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [C] 0x43 ***************** + 0x3E, 0x41, 0x41, 0x41, 0x22, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–“â–‘â–‘â–‘â–‘ + // 01000001 â–“â–‘â–‘â–‘â–‘ + // 00100010 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [D] 0x44 ***************** + 0x7F, 0x41, 0x41, 0x41, 0x3E, + // 01111111 â–“â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 00111110 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [E] 0x45 ***************** + 0x7F, 0x49, 0x49, 0x49, 0x41, + // 01111111 â–“â–“â–“â–“â–“ + // 01001001 â–“â–‘â–‘â–‘â–‘ + // 01001001 â–“â–‘â–‘â–‘â–‘ + // 01001001 â–“â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [F] 0x46 ***************** + 0x7F, 0x09, 0x09, 0x09, 0x01, + // 01111111 â–“â–“â–“â–“â–“ + // 00001001 â–“â–‘â–‘â–‘â–‘ + // 00001001 â–“â–‘â–‘â–‘â–‘ + // 00001001 â–“â–“â–“â–“â–‘ + // 00000001 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [G] 0x47 ***************** + 0x3E, 0x41, 0x41, 0x51, 0x73, + // 00111110 â–‘â–“â–“â–“â–“ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–“â–‘â–‘â–‘â–‘ + // 01010001 â–“â–‘â–‘â–‘â–‘ + // 01110011 â–“â–‘â–‘â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [H] 0x48 ***************** + 0x7F, 0x08, 0x08, 0x08, 0x7F, + // 01111111 â–“â–‘â–‘â–‘â–“ + // 00001000 â–“â–‘â–‘â–‘â–“ + // 00001000 â–“â–‘â–‘â–‘â–“ + // 00001000 â–“â–“â–“â–“â–“ + // 01111111 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [I] 0x49 ***************** + 0x00, 0x41, 0x7F, 0x41, 0x00, + // 00000000 â–‘â–“â–“â–“â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 01111111 â–‘â–‘â–“â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [J] 0x4a ***************** + 0x20, 0x40, 0x41, 0x3F, 0x01, + // 00100000 â–‘â–‘â–“â–“â–“ + // 01000000 â–‘â–‘â–‘â–“â–‘ + // 01000001 â–‘â–‘â–‘â–“â–‘ + // 00111111 â–‘â–‘â–‘â–“â–‘ + // 00000001 â–‘â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [K] 0x4b ***************** + 0x7F, 0x08, 0x14, 0x22, 0x41, + // 01111111 â–“â–‘â–‘â–‘â–“ + // 00001000 â–“â–‘â–‘â–“â–‘ + // 00010100 â–“â–‘â–“â–‘â–‘ + // 00100010 â–“â–“â–‘â–‘â–‘ + // 01000001 â–“â–‘â–“â–‘â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [L] 0x4c ***************** + 0x7F, 0x40, 0x40, 0x40, 0x40, + // 01111111 â–“â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [M] 0x4d ***************** + 0x7F, 0x02, 0x1C, 0x02, 0x7F, + // 01111111 â–“â–‘â–‘â–‘â–“ + // 00000010 â–“â–“â–‘â–“â–“ + // 00011100 â–“â–‘â–“â–‘â–“ + // 00000010 â–“â–‘â–“â–‘â–“ + // 01111111 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [N] 0x4e ***************** + 0x7F, 0x04, 0x08, 0x10, 0x7F, + // 01111111 â–“â–‘â–‘â–‘â–“ + // 00000100 â–“â–‘â–‘â–‘â–“ + // 00001000 â–“â–“â–‘â–‘â–“ + // 00010000 â–“â–‘â–“â–‘â–“ + // 01111111 â–“â–‘â–‘â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [O] 0x4f ***************** + 0x3E, 0x41, 0x41, 0x41, 0x3E, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 00111110 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [P] 0x50 ***************** + 0x7F, 0x09, 0x09, 0x09, 0x06, + // 01111111 â–“â–“â–“â–“â–‘ + // 00001001 â–“â–‘â–‘â–‘â–“ + // 00001001 â–“â–‘â–‘â–‘â–“ + // 00001001 â–“â–“â–“â–“â–‘ + // 00000110 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [Q] 0x51 ***************** + 0x3E, 0x41, 0x51, 0x21, 0x5E, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01010001 â–“â–‘â–‘â–‘â–“ + // 00100001 â–“â–‘â–‘â–‘â–“ + // 01011110 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [R] 0x52 ***************** + 0x7F, 0x09, 0x19, 0x29, 0x46, + // 01111111 â–“â–“â–“â–“â–‘ + // 00001001 â–“â–‘â–‘â–‘â–“ + // 00011001 â–“â–‘â–‘â–‘â–“ + // 00101001 â–“â–“â–“â–“â–‘ + // 01000110 â–“â–‘â–“â–‘â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [S] 0x53 ***************** + 0x26, 0x49, 0x49, 0x49, 0x32, + // 00100110 â–‘â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–“â–‘â–‘â–‘â–‘ + // 01001001 â–‘â–“â–“â–“â–‘ + // 00110010 â–‘â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [T] 0x54 ***************** + 0x03, 0x01, 0x7F, 0x01, 0x03, + // 00000011 â–“â–“â–“â–“â–“ + // 00000001 â–“â–‘â–“â–‘â–“ + // 01111111 â–‘â–‘â–“â–‘â–‘ + // 00000001 â–‘â–‘â–“â–‘â–‘ + // 00000011 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [U] 0x55 ***************** + 0x3F, 0x40, 0x40, 0x40, 0x3F, + // 00111111 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00111111 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [V] 0x56 ***************** + 0x1F, 0x20, 0x40, 0x20, 0x1F, + // 00011111 â–“â–‘â–‘â–‘â–“ + // 00100000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00100000 â–“â–‘â–‘â–‘â–“ + // 00011111 â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [W] 0x57 ***************** + 0x3F, 0x40, 0x38, 0x40, 0x3F, + // 00111111 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00111000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–“â–‘â–“ + // 00111111 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–“â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [X] 0x58 ***************** + 0x63, 0x14, 0x08, 0x14, 0x63, + // 01100011 â–“â–‘â–‘â–‘â–“ + // 00010100 â–“â–‘â–‘â–‘â–“ + // 00001000 â–‘â–“â–‘â–“â–‘ + // 00010100 â–‘â–‘â–“â–‘â–‘ + // 01100011 â–‘â–“â–‘â–“â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [Y] 0x59 ***************** + 0x03, 0x04, 0x78, 0x04, 0x03, + // 00000011 â–“â–‘â–‘â–‘â–“ + // 00000100 â–“â–‘â–‘â–‘â–“ + // 01111000 â–‘â–“â–‘â–“â–‘ + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 00000011 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [Z] 0x5a ***************** + 0x61, 0x59, 0x49, 0x4D, 0x43, + // 01100001 â–“â–“â–“â–“â–“ + // 01011001 â–‘â–‘â–‘â–‘â–“ + // 01001001 â–‘â–‘â–‘â–“â–‘ + // 01001101 â–‘â–“â–“â–“â–‘ + // 01000011 â–‘â–“â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [[] 0x5b ***************** + 0x00, 0x7F, 0x41, 0x41, 0x41, + // 00000000 â–‘â–“â–“â–“â–“ + // 01111111 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–“â–‘â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [\] 0x5c ***************** + 0x02, 0x04, 0x08, 0x10, 0x20, + // 00000010 â–‘â–‘â–‘â–‘â–‘ + // 00000100 â–“â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–“â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–“â–‘â–‘ + // 00100000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // []] 0x5d ***************** + 0x00, 0x41, 0x41, 0x41, 0x7F, + // 00000000 â–‘â–“â–“â–“â–“ + // 01000001 â–‘â–‘â–‘â–‘â–“ + // 01000001 â–‘â–‘â–‘â–‘â–“ + // 01000001 â–‘â–‘â–‘â–‘â–“ + // 01111111 â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [^] 0x5e ***************** + 0x04, 0x02, 0x01, 0x02, 0x04, + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 00000010 â–‘â–“â–‘â–“â–‘ + // 00000001 â–“â–‘â–‘â–‘â–“ + // 00000010 â–‘â–‘â–‘â–‘â–‘ + // 00000100 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [_] 0x5f ***************** + 0x40, 0x40, 0x40, 0x40, 0x40, + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [`] 0x60 ***************** + 0x00, 0x03, 0x07, 0x08, 0x00, + // 00000000 â–‘â–“â–“â–‘â–‘ + // 00000011 â–‘â–“â–“â–‘â–‘ + // 00000111 â–‘â–‘â–“â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** +#ifndef FONTSET_MINI + // [a] 0x61 ***************** + 0x20, 0x54, 0x54, 0x78, 0x40, + // 00100000 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–‘â–‘ + // 01111000 â–‘â–‘â–‘â–“â–‘ + // 01000000 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [b] 0x62 ***************** + 0x7F, 0x28, 0x44, 0x44, 0x38, + // 01111111 â–“â–‘â–‘â–‘â–‘ + // 00101000 â–“â–‘â–‘â–‘â–‘ + // 01000100 â–“â–‘â–“â–“â–‘ + // 01000100 â–“â–“â–‘â–‘â–“ + // 00111000 â–“â–‘â–‘â–‘â–“ + // â–“â–“â–‘â–‘â–“ + // â–“â–‘â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [c] 0x63 ***************** + 0x38, 0x44, 0x44, 0x44, 0x28, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–“â–“â–“â–‘ + // 01000100 â–“â–‘â–‘â–‘â–“ + // 00101000 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [d] 0x64 ***************** + 0x38, 0x44, 0x44, 0x28, 0x7F, + // 00111000 â–‘â–‘â–‘â–‘â–“ + // 01000100 â–‘â–‘â–‘â–‘â–“ + // 01000100 â–‘â–“â–“â–‘â–“ + // 00101000 â–“â–‘â–‘â–“â–“ + // 01111111 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [e] 0x65 ***************** + 0x38, 0x54, 0x54, 0x54, 0x18, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–“â–‘ + // 01010100 â–“â–‘â–‘â–‘â–“ + // 00011000 â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [f] 0x66 ***************** + 0x00, 0x08, 0x7E, 0x09, 0x02, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00001000 â–‘â–‘â–“â–‘â–“ + // 01111110 â–‘â–‘â–“â–‘â–‘ + // 00001001 â–‘â–“â–“â–“â–‘ + // 00000010 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [g] 0x67 ***************** + 0x18, 0xA4, 0xA4, 0x9C, 0x78, + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 10100100 â–‘â–‘â–‘â–‘â–‘ + // 10100100 â–‘â–“â–“â–“â–‘ + // 10011100 â–“â–‘â–‘â–“â–“ + // 01111000 â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // ************************** + // [h] 0x68 ***************** + 0x7F, 0x08, 0x04, 0x04, 0x78, + // 01111111 â–“â–‘â–‘â–‘â–‘ + // 00001000 â–“â–‘â–‘â–‘â–‘ + // 00000100 â–“â–‘â–“â–“â–‘ + // 00000100 â–“â–“â–‘â–‘â–“ + // 01111000 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [i] 0x69 ***************** + 0x00, 0x44, 0x7D, 0x40, 0x00, + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01111101 â–‘â–“â–“â–‘â–‘ + // 01000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [j] 0x6a ***************** + 0x20, 0x40, 0x40, 0x3D, 0x00, + // 00100000 â–‘â–‘â–‘â–“â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–“â–‘ + // 00111101 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [k] 0x6b ***************** + 0x7F, 0x10, 0x28, 0x44, 0x00, + // 01111111 â–“â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–‘ + // 00101000 â–“â–‘â–‘â–“â–‘ + // 01000100 â–“â–‘â–“â–‘â–‘ + // 00000000 â–“â–“â–‘â–‘â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [l] 0x6c ***************** + 0x00, 0x41, 0x7F, 0x40, 0x00, + // 00000000 â–‘â–“â–“â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 01111111 â–‘â–‘â–“â–‘â–‘ + // 01000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [m] 0x6d ***************** + 0x7C, 0x04, 0x78, 0x04, 0x78, + // 01111100 â–‘â–‘â–‘â–‘â–‘ + // 00000100 â–‘â–‘â–‘â–‘â–‘ + // 01111000 â–“â–“â–‘â–“â–‘ + // 00000100 â–“â–‘â–“â–‘â–“ + // 01111000 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–“â–‘â–“ + // â–“â–‘â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [n] 0x6e ***************** + 0x7C, 0x08, 0x04, 0x04, 0x78, + // 01111100 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00000100 â–“â–‘â–“â–“â–‘ + // 00000100 â–“â–“â–‘â–‘â–“ + // 01111000 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [o] 0x6f ***************** + 0x38, 0x44, 0x44, 0x44, 0x38, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–“â–“â–“â–‘ + // 01000100 â–“â–‘â–‘â–‘â–“ + // 00111000 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [p] 0x70 ***************** + 0xFC, 0x18, 0x24, 0x24, 0x18, + // 11111100 â–‘â–‘â–‘â–‘â–‘ + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 00100100 â–“â–‘â–“â–“â–‘ + // 00100100 â–“â–“â–‘â–‘â–“ + // 00011000 â–“â–“â–‘â–‘â–“ + // â–“â–‘â–“â–“â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // ************************** + // [q] 0x71 ***************** + 0x18, 0x24, 0x24, 0x18, 0xFC, + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 00100100 â–‘â–‘â–‘â–‘â–‘ + // 00100100 â–‘â–“â–“â–‘â–“ + // 00011000 â–“â–‘â–‘â–“â–“ + // 11111100 â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–“ + // ************************** + // [r] 0x72 ***************** + 0x7C, 0x08, 0x04, 0x04, 0x08, + // 01111100 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00000100 â–“â–‘â–“â–“â–‘ + // 00000100 â–“â–“â–‘â–‘â–“ + // 00001000 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [s] 0x73 ***************** + 0x48, 0x54, 0x54, 0x54, 0x24, + // 01001000 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–“â–“ + // 01010100 â–“â–‘â–‘â–‘â–‘ + // 00100100 â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [t] 0x74 ***************** + 0x04, 0x04, 0x3F, 0x44, 0x24, + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 00111111 â–“â–“â–“â–“â–“ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // 00100100 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [u] 0x75 ***************** + 0x3C, 0x40, 0x40, 0x20, 0x7C, + // 00111100 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00100000 â–“â–‘â–‘â–‘â–“ + // 01111100 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [v] 0x76 ***************** + 0x1C, 0x20, 0x40, 0x20, 0x1C, + // 00011100 â–‘â–‘â–‘â–‘â–‘ + // 00100000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00100000 â–“â–‘â–‘â–‘â–“ + // 00011100 â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [w] 0x77 ***************** + 0x3C, 0x40, 0x30, 0x40, 0x3C, + // 00111100 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 00110000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00111100 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–“â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [x] 0x78 ***************** + 0x44, 0x28, 0x10, 0x28, 0x44, + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 00101000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–“ + // 00101000 â–‘â–“â–‘â–“â–‘ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–“â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [y] 0x79 ***************** + 0x4C, 0x90, 0x90, 0x90, 0x7C, + // 01001100 â–‘â–‘â–‘â–‘â–‘ + // 10010000 â–‘â–‘â–‘â–‘â–‘ + // 10010000 â–“â–‘â–‘â–‘â–“ + // 10010000 â–“â–‘â–‘â–‘â–“ + // 01111100 â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // ************************** + // [z] 0x7a ***************** + 0x44, 0x64, 0x54, 0x4C, 0x44, + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01100100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–“â–“â–“â–“â–“ + // 01001100 â–‘â–‘â–‘â–“â–‘ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [{] 0x7b ***************** + 0x00, 0x08, 0x36, 0x41, 0x00, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00001000 â–‘â–‘â–“â–‘â–‘ + // 00110110 â–‘â–‘â–“â–‘â–‘ + // 01000001 â–‘â–“â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [|] 0x7c ***************** + 0x00, 0x00, 0x77, 0x00, 0x00, + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 01110111 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [}] 0x7d ***************** + 0x00, 0x41, 0x36, 0x08, 0x00, + // 00000000 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 00110110 â–‘â–‘â–“â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x7e ***************** + 0x02, 0x01, 0x02, 0x04, 0x02, + // 00000010 â–‘â–“â–‘â–‘â–‘ + // 00000001 â–“â–‘â–“â–‘â–“ + // 00000010 â–‘â–‘â–‘â–“â–‘ + // 00000100 â–‘â–‘â–‘â–‘â–‘ + // 00000010 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x7f ***************** + 0x3C, 0x26, 0x23, 0x26, 0x3C, + // 00111100 â–‘â–‘â–“â–‘â–‘ + // 00100110 â–‘â–“â–“â–“â–‘ + // 00100011 â–“â–“â–‘â–“â–“ + // 00100110 â–“â–‘â–‘â–‘â–“ + // 00111100 â–“â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x80 ***************** + 0x1E, 0xA1, 0xA1, 0x61, 0x12, + // 00011110 â–‘â–“â–“â–“â–‘ + // 10100001 â–“â–‘â–‘â–‘â–“ + // 10100001 â–“â–‘â–‘â–‘â–‘ + // 01100001 â–“â–‘â–‘â–‘â–‘ + // 00010010 â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–‘ + // ************************** + // [?] 0x81 ***************** + 0x3A, 0x40, 0x40, 0x20, 0x7A, + // 00111010 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 00100000 â–“â–‘â–‘â–‘â–“ + // 01111010 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x82 ***************** + 0x38, 0x54, 0x54, 0x55, 0x59, + // 00111000 â–‘â–‘â–‘â–“â–“ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–“â–‘ + // 01010101 â–“â–‘â–‘â–‘â–“ + // 01011001 â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x83 ***************** + 0x21, 0x55, 0x55, 0x79, 0x41, + // 00100001 â–“â–“â–“â–“â–“ + // 01010101 â–‘â–‘â–‘â–‘â–‘ + // 01010101 â–‘â–“â–“â–‘â–‘ + // 01111001 â–‘â–‘â–‘â–“â–‘ + // 01000001 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x84 ***************** + 0x21, 0x54, 0x54, 0x78, 0x41, + // 00100001 â–“â–‘â–‘â–‘â–“ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–‘â–‘ + // 01111000 â–‘â–‘â–‘â–“â–‘ + // 01000001 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x85 ***************** + 0x21, 0x55, 0x54, 0x78, 0x40, + // 00100001 â–“â–“â–‘â–‘â–‘ + // 01010101 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–‘â–‘ + // 01111000 â–‘â–‘â–‘â–“â–‘ + // 01000000 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x86 ***************** + 0x20, 0x54, 0x55, 0x79, 0x40, + // 00100000 â–‘â–‘â–“â–“â–‘ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010101 â–‘â–“â–“â–‘â–‘ + // 01111001 â–‘â–‘â–‘â–“â–‘ + // 01000000 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x87 ***************** + 0x0C, 0x1E, 0x52, 0x72, 0x12, + // 00001100 â–‘â–‘â–‘â–‘â–‘ + // 00011110 â–‘â–“â–“â–“â–“ + // 01010010 â–“â–“â–‘â–‘â–‘ + // 01110010 â–“â–“â–‘â–‘â–‘ + // 00010010 â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x88 ***************** + 0x39, 0x55, 0x55, 0x55, 0x59, + // 00111001 â–“â–“â–“â–“â–“ + // 01010101 â–‘â–‘â–‘â–‘â–‘ + // 01010101 â–‘â–“â–“â–“â–‘ + // 01010101 â–“â–‘â–‘â–‘â–“ + // 01011001 â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x89 ***************** + 0x39, 0x54, 0x54, 0x54, 0x59, + // 00111001 â–“â–‘â–‘â–‘â–“ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–“â–‘ + // 01010100 â–“â–‘â–‘â–‘â–“ + // 01011001 â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x8a ***************** + 0x39, 0x55, 0x54, 0x54, 0x58, + // 00111001 â–“â–“â–‘â–‘â–‘ + // 01010101 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–“â–‘ + // 01010100 â–“â–‘â–‘â–‘â–“ + // 01011000 â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x8b ***************** + 0x00, 0x00, 0x45, 0x7C, 0x41, + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 01000101 â–‘â–‘â–“â–“â–‘ + // 01111100 â–‘â–‘â–‘â–“â–‘ + // 01000001 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x8c ***************** + 0x00, 0x02, 0x45, 0x7D, 0x42, + // 00000000 â–‘â–‘â–“â–“â–‘ + // 00000010 â–‘â–“â–‘â–‘â–“ + // 01000101 â–‘â–‘â–“â–“â–‘ + // 01111101 â–‘â–‘â–‘â–“â–‘ + // 01000010 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x8d ***************** + 0x00, 0x01, 0x45, 0x7C, 0x40, + // 00000000 â–‘â–“â–“â–‘â–‘ + // 00000001 â–‘â–‘â–‘â–‘â–‘ + // 01000101 â–‘â–‘â–“â–“â–‘ + // 01111100 â–‘â–‘â–‘â–“â–‘ + // 01000000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x8e ***************** + 0xF0, 0x29, 0x24, 0x29, 0xF0, + // 11110000 â–‘â–“â–‘â–“â–‘ + // 00101001 â–‘â–‘â–‘â–‘â–‘ + // 00100100 â–‘â–‘â–“â–‘â–‘ + // 00101001 â–‘â–“â–‘â–“â–‘ + // 11110000 â–“â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // ************************** + // [?] 0x8f ***************** + 0xF0, 0x28, 0x25, 0x28, 0xF0, + // 11110000 â–‘â–‘â–“â–‘â–‘ + // 00101000 â–‘â–‘â–‘â–‘â–‘ + // 00100101 â–‘â–‘â–“â–‘â–‘ + // 00101000 â–‘â–“â–‘â–“â–‘ + // 11110000 â–“â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // ************************** + // [?] 0x90 ***************** + 0x7C, 0x54, 0x55, 0x45, 0x00, + // 01111100 â–‘â–‘â–“â–“â–‘ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010101 â–“â–“â–“â–“â–‘ + // 01000101 â–“â–‘â–‘â–‘â–‘ + // 00000000 â–“â–“â–“â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x91 ***************** + 0x20, 0x54, 0x54, 0x7C, 0x54, + // 00100000 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–“â–“ + // 01111100 â–‘â–‘â–‘â–“â–‘ + // 01010100 â–‘â–“â–“â–“â–“ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x92 ***************** + 0x7C, 0x0A, 0x09, 0x7F, 0x49, + // 01111100 â–‘â–‘â–“â–“â–“ + // 00001010 â–‘â–“â–‘â–“â–‘ + // 00001001 â–“â–‘â–‘â–“â–‘ + // 01111111 â–“â–“â–“â–“â–“ + // 01001001 â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x93 ***************** + 0x32, 0x49, 0x49, 0x49, 0x32, + // 00110010 â–‘â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 01001001 â–‘â–‘â–‘â–‘â–‘ + // 01001001 â–‘â–“â–“â–“â–‘ + // 00110010 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x94 ***************** + 0x32, 0x48, 0x48, 0x48, 0x32, + // 00110010 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–“â–‘â–‘â–‘â–“ + // 01001000 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–‘â–“â–“â–“â–‘ + // 00110010 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x95 ***************** + 0x32, 0x4A, 0x48, 0x48, 0x30, + // 00110010 â–‘â–‘â–‘â–‘â–‘ + // 01001010 â–“â–“â–‘â–‘â–‘ + // 01001000 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–‘â–“â–“â–“â–‘ + // 00110000 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x96 ***************** + 0x3A, 0x41, 0x41, 0x21, 0x7A, + // 00111010 â–‘â–“â–“â–“â–‘ + // 01000001 â–“â–‘â–‘â–‘â–“ + // 01000001 â–‘â–‘â–‘â–‘â–‘ + // 00100001 â–“â–‘â–‘â–‘â–“ + // 01111010 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x97 ***************** + 0x3A, 0x42, 0x40, 0x20, 0x78, + // 00111010 â–‘â–‘â–‘â–‘â–‘ + // 01000010 â–“â–“â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 00100000 â–“â–‘â–‘â–‘â–“ + // 01111000 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x98 ***************** + 0x00, 0x9D, 0xA0, 0xA0, 0x7D, + // 00000000 â–‘â–“â–‘â–‘â–“ + // 10011101 â–‘â–‘â–‘â–‘â–‘ + // 10100000 â–‘â–“â–‘â–‘â–“ + // 10100000 â–‘â–“â–‘â–‘â–“ + // 01111101 â–‘â–“â–‘â–‘â–“ + // â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // ************************** + // [?] 0x99 ***************** + 0x39, 0x44, 0x44, 0x44, 0x39, + // 00111001 â–“â–‘â–‘â–‘â–“ + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–“â–“â–“â–‘ + // 01000100 â–“â–‘â–‘â–‘â–“ + // 00111001 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x9a ***************** + 0x3D, 0x40, 0x40, 0x40, 0x3D, + // 00111101 â–“â–‘â–‘â–‘â–“ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 01000000 â–“â–‘â–‘â–‘â–“ + // 00111101 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x9b ***************** + 0x3C, 0x24, 0xFF, 0x24, 0x24, + // 00111100 â–‘â–‘â–“â–‘â–‘ + // 00100100 â–‘â–‘â–“â–‘â–‘ + // 11111111 â–“â–“â–“â–“â–“ + // 00100100 â–“â–‘â–“â–‘â–‘ + // 00100100 â–“â–‘â–“â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // ************************** + // [?] 0x9c ***************** + 0x48, 0x7E, 0x49, 0x43, 0x66, + // 01001000 â–‘â–‘â–“â–“â–‘ + // 01111110 â–‘â–“â–‘â–“â–“ + // 01001001 â–‘â–“â–‘â–‘â–“ + // 01000011 â–“â–“â–“â–‘â–‘ + // 01100110 â–‘â–“â–‘â–‘â–‘ + // â–‘â–“â–‘â–‘â–“ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0x9d ***************** + 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, + // 00101011 â–“â–“â–‘â–“â–“ + // 00101111 â–“â–“â–‘â–“â–“ + // 11111100 â–‘â–“â–“â–“â–‘ + // 00101111 â–“â–“â–“â–“â–“ + // 00101011 â–‘â–‘â–“â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // ************************** + // [?] 0x9e ***************** + 0xFF, 0x09, 0x29, 0xF6, 0x20, + // 11111111 â–“â–“â–“â–‘â–‘ + // 00001001 â–“â–‘â–‘â–“â–‘ + // 00101001 â–“â–‘â–‘â–“â–‘ + // 11110110 â–“â–“â–“â–‘â–‘ + // 00100000 â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–“â–“â–“ + // â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // ************************** + // [?] 0x9f ***************** + 0xC0, 0x88, 0x7E, 0x09, 0x03, + // 11000000 â–‘â–‘â–‘â–“â–“ + // 10001000 â–‘â–‘â–“â–‘â–“ + // 01111110 â–‘â–‘â–“â–‘â–‘ + // 00001001 â–‘â–“â–“â–“â–‘ + // 00000011 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–“â–“â–‘â–‘â–‘ + // ************************** + // [?] 0xa0 ***************** + 0x20, 0x54, 0x54, 0x79, 0x41, + // 00100000 â–‘â–‘â–‘â–“â–“ + // 01010100 â–‘â–‘â–‘â–‘â–‘ + // 01010100 â–‘â–“â–“â–‘â–‘ + // 01111001 â–‘â–‘â–‘â–“â–‘ + // 01000001 â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa1 ***************** + 0x00, 0x00, 0x44, 0x7D, 0x41, + // 00000000 â–‘â–‘â–‘â–“â–“ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–‘â–“â–“â–‘ + // 01111101 â–‘â–‘â–‘â–“â–‘ + // 01000001 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa2 ***************** + 0x30, 0x48, 0x48, 0x4A, 0x32, + // 00110000 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–‘â–‘â–‘â–“â–“ + // 01001000 â–‘â–‘â–‘â–‘â–‘ + // 01001010 â–‘â–“â–“â–“â–‘ + // 00110010 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa3 ***************** + 0x38, 0x40, 0x40, 0x22, 0x7A, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–“â–“ + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 00100010 â–“â–‘â–‘â–‘â–“ + // 01111010 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa4 ***************** + 0x00, 0x7A, 0x0A, 0x0A, 0x72, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 01111010 â–‘â–“â–“â–“â–“ + // 00001010 â–‘â–‘â–‘â–‘â–‘ + // 00001010 â–‘â–“â–“â–“â–‘ + // 01110010 â–‘â–“â–‘â–‘â–“ + // â–‘â–“â–‘â–‘â–“ + // â–‘â–“â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa5 ***************** + 0x7D, 0x0D, 0x19, 0x31, 0x7D, + // 01111101 â–“â–“â–“â–“â–“ + // 00001101 â–‘â–‘â–‘â–‘â–‘ + // 00011001 â–“â–“â–‘â–‘â–“ + // 00110001 â–“â–“â–“â–‘â–“ + // 01111101 â–“â–‘â–“â–“â–“ + // â–“â–‘â–‘â–“â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa6 ***************** + 0x26, 0x29, 0x29, 0x2F, 0x28, + // 00100110 â–‘â–“â–“â–“â–‘ + // 00101001 â–“â–‘â–‘â–“â–‘ + // 00101001 â–“â–‘â–‘â–“â–‘ + // 00101111 â–‘â–“â–“â–“â–“ + // 00101000 â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa7 ***************** + 0x26, 0x29, 0x29, 0x29, 0x26, + // 00100110 â–‘â–“â–“â–“â–‘ + // 00101001 â–“â–‘â–‘â–‘â–“ + // 00101001 â–“â–‘â–‘â–‘â–“ + // 00101001 â–‘â–“â–“â–“â–‘ + // 00100110 â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa8 ***************** + 0x30, 0x48, 0x4D, 0x40, 0x20, + // 00110000 â–‘â–‘â–“â–‘â–‘ + // 01001000 â–‘â–‘â–‘â–‘â–‘ + // 01001101 â–‘â–‘â–“â–‘â–‘ + // 01000000 â–‘â–“â–“â–‘â–‘ + // 00100000 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xa9 ***************** + 0x38, 0x08, 0x08, 0x08, 0x08, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–“â–“â–“â–“â–“ + // 00001000 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xaa ***************** + 0x08, 0x08, 0x08, 0x08, 0x38, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00001000 â–“â–“â–“â–“â–“ + // 00111000 â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xab ***************** + 0x2F, 0x10, 0xC8, 0xAC, 0xBA, + // 00101111 â–“â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–“ + // 11001000 â–“â–‘â–‘â–“â–‘ + // 10101100 â–“â–‘â–“â–“â–“ + // 10111010 â–‘â–“â–‘â–‘â–“ + // â–“â–‘â–‘â–“â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–“â–“ + // ************************** + // [?] 0xac ***************** + 0x2F, 0x10, 0x28, 0x34, 0xFA, + // 00101111 â–“â–‘â–‘â–‘â–‘ + // 00010000 â–“â–‘â–‘â–‘â–“ + // 00101000 â–“â–‘â–‘â–“â–‘ + // 00110100 â–“â–‘â–“â–‘â–“ + // 11111010 â–‘â–“â–‘â–“â–“ + // â–“â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–“ + // ************************** + // [?] 0xad ***************** + 0x00, 0x00, 0x7B, 0x00, 0x00, + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 01111011 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xae ***************** + 0x08, 0x14, 0x2A, 0x14, 0x22, + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00101010 â–‘â–“â–‘â–“â–‘ + // 00010100 â–“â–‘â–“â–‘â–‘ + // 00100010 â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xaf ***************** + 0x22, 0x14, 0x2A, 0x14, 0x08, + // 00100010 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–‘â–“â–‘â–‘ + // 00101010 â–‘â–“â–‘â–“â–‘ + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00001000 â–‘â–“â–‘â–“â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xb0 ***************** + 0xAA, 0x00, 0x55, 0x00, 0xAA, + // 10101010 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–“â–‘â–‘â–‘â–“ + // 01010101 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–“â–‘â–‘â–‘â–“ + // 10101010 â–‘â–‘â–“â–‘â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–“â–‘â–‘ + // â–“â–‘â–‘â–‘â–“ + // ************************** + // [?] 0xb1 ***************** + 0xAA, 0x55, 0xAA, 0x55, 0xAA, + // 10101010 â–‘â–“â–‘â–“â–‘ + // 01010101 â–“â–‘â–“â–‘â–“ + // 10101010 â–‘â–“â–‘â–“â–‘ + // 01010101 â–“â–‘â–“â–‘â–“ + // 10101010 â–‘â–“â–‘â–“â–‘ + // â–“â–‘â–“â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–“â–‘â–“â–‘â–“ + // ************************** + // [?] 0xb2 ***************** + 0x00, 0x00, 0x00, 0xFF, 0x00, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xb3 ***************** + 0x10, 0x10, 0x10, 0xFF, 0x00, + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xb4 ***************** + 0x14, 0x14, 0x14, 0xFF, 0x00, + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–‘ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xb5 ***************** + 0x10, 0x10, 0xFF, 0x00, 0xFF, + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–“â–“â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xb6 ***************** + 0x10, 0x10, 0xF0, 0x10, 0xF0, + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xb7 ***************** + 0x14, 0x14, 0x14, 0xFC, 0x00, + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–‘ + // 11111100 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xb8 ***************** + 0x14, 0x14, 0xF7, 0x00, 0xFF, + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00010100 â–‘â–‘â–“â–‘â–“ + // 11110111 â–“â–“â–“â–‘â–“ + // 00000000 â–‘â–‘â–‘â–‘â–“ + // 11111111 â–“â–“â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xb9 ***************** + 0x00, 0x00, 0xFF, 0x00, 0xFF, + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xba ***************** + 0x14, 0x14, 0xF4, 0x04, 0xFC, + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 11110100 â–“â–“â–“â–“â–“ + // 00000100 â–‘â–‘â–‘â–‘â–“ + // 11111100 â–“â–“â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xbb ***************** + 0x14, 0x14, 0x17, 0x10, 0x1F, + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00010111 â–“â–“â–“â–‘â–“ + // 00010000 â–‘â–‘â–‘â–‘â–“ + // 00011111 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xbc ***************** + 0x10, 0x10, 0x1F, 0x10, 0x1F, + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xbd ***************** + 0x14, 0x14, 0x14, 0x1F, 0x00, + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–‘ + // 00011111 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xbe ***************** + 0x10, 0x10, 0x10, 0xF0, 0x00, + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xbf ***************** + 0x00, 0x00, 0x00, 0x1F, 0x10, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00011111 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xc0 ***************** + 0x10, 0x10, 0x10, 0x1F, 0x10, + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00011111 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xc1 ***************** + 0x10, 0x10, 0x10, 0xF0, 0x10, + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xc2 ***************** + 0x00, 0x00, 0x00, 0xFF, 0x10, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xc3 ***************** + 0x10, 0x10, 0x10, 0x10, 0x10, + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xc4 ***************** + 0x10, 0x10, 0x10, 0xFF, 0x10, + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xc5 ***************** + 0x00, 0x00, 0x00, 0xFF, 0x14, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–“ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xc6 ***************** + 0x00, 0x00, 0xFF, 0x00, 0xFF, + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xc7 ***************** + 0x00, 0x00, 0x1F, 0x10, 0x17, + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–‘ + // 00010111 â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xc8 ***************** + 0x00, 0x00, 0xFC, 0x04, 0xF4, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 11111100 â–‘â–‘â–“â–“â–“ + // 00000100 â–‘â–‘â–“â–‘â–‘ + // 11110100 â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xc9 ***************** + 0x14, 0x14, 0x17, 0x10, 0x17, + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00010111 â–“â–“â–“â–‘â–“ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010111 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xca ***************** + 0x14, 0x14, 0xF4, 0x04, 0xF4, + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 11110100 â–“â–“â–“â–“â–“ + // 00000100 â–‘â–‘â–‘â–‘â–‘ + // 11110100 â–“â–“â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xcb ***************** + 0x00, 0x00, 0xFF, 0x00, 0xF7, + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 11110111 â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xcc ***************** + 0x14, 0x14, 0x14, 0x14, 0x14, + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xcd ***************** + 0x14, 0x14, 0xF7, 0x00, 0xF7, + // 00010100 â–‘â–‘â–“â–‘â–“ + // 00010100 â–‘â–‘â–“â–‘â–“ + // 11110111 â–“â–“â–“â–‘â–“ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 11110111 â–“â–“â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xce ***************** + 0x14, 0x14, 0x14, 0x17, 0x14, + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // 00010111 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xcf ***************** + 0x10, 0x10, 0x1F, 0x10, 0x1F, + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xd0 ***************** + 0x14, 0x14, 0x14, 0xF4, 0x14, + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // 11110100 â–‘â–‘â–‘â–‘â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xd1 ***************** + 0x10, 0x10, 0xF0, 0x10, 0xF0, + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xd2 ***************** + 0x00, 0x00, 0x1F, 0x10, 0x1F, + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00011111 â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xd3 ***************** + 0x00, 0x00, 0x00, 0x1F, 0x14, + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–‘â–‘â–‘â–“â–“ + // 00011111 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xd4 ***************** + 0x00, 0x00, 0x00, 0xFC, 0x14, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–“â–“ + // 11111100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xd5 ***************** + 0x00, 0x00, 0xF0, 0x10, 0xF0, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–“â–“â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xd6 ***************** + 0x10, 0x10, 0xFF, 0x10, 0xFF, + // 00010000 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–“ + // 00010000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–“â–“â–“â–“â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // â–‘â–‘â–“â–‘â–“ + // ************************** + // [?] 0xd7 ***************** + 0x14, 0x14, 0x14, 0xFF, 0x14, + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // 11111111 â–‘â–‘â–‘â–“â–‘ + // 00010100 â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xd8 ***************** + 0x10, 0x10, 0x10, 0x1F, 0x00, + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00010000 â–‘â–‘â–‘â–“â–‘ + // 00011111 â–‘â–‘â–‘â–“â–‘ + // 00000000 â–“â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xd9 ***************** + 0x00, 0x00, 0x00, 0xF0, 0x10, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–“â–‘ + // ************************** + // [?] 0xda ***************** + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + // 11111111 â–“â–“â–“â–“â–“ + // 11111111 â–“â–“â–“â–“â–“ + // 11111111 â–“â–“â–“â–“â–“ + // 11111111 â–“â–“â–“â–“â–“ + // 11111111 â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // ************************** + // [?] 0xdb ***************** + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–‘â–‘â–‘â–‘â–‘ + // 11110000 â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // â–“â–“â–“â–“â–“ + // ************************** + // [?] 0xdc ***************** + 0xFF, 0xFF, 0xFF, 0x00, 0x00, + // 11111111 â–“â–“â–“â–‘â–‘ + // 11111111 â–“â–“â–“â–‘â–‘ + // 11111111 â–“â–“â–“â–‘â–‘ + // 00000000 â–“â–“â–“â–‘â–‘ + // 00000000 â–“â–“â–“â–‘â–‘ + // â–“â–“â–“â–‘â–‘ + // â–“â–“â–“â–‘â–‘ + // â–“â–“â–“â–‘â–‘ + // ************************** + // [?] 0xdd ***************** + 0x00, 0x00, 0x00, 0xFF, 0xFF, + // 00000000 â–‘â–‘â–‘â–“â–“ + // 00000000 â–‘â–‘â–‘â–“â–“ + // 00000000 â–‘â–‘â–‘â–“â–“ + // 11111111 â–‘â–‘â–‘â–“â–“ + // 11111111 â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–“ + // â–‘â–‘â–‘â–“â–“ + // ************************** + // [?] 0xde ***************** + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + // 00001111 â–“â–“â–“â–“â–“ + // 00001111 â–“â–“â–“â–“â–“ + // 00001111 â–“â–“â–“â–“â–“ + // 00001111 â–“â–“â–“â–“â–“ + // 00001111 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xdf ***************** + 0x38, 0x44, 0x44, 0x38, 0x44, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–“â–“â–‘â–“ + // 00111000 â–“â–‘â–‘â–“â–‘ + // 01000100 â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe0 ***************** + 0x7C, 0x2A, 0x2A, 0x3E, 0x14, + // 01111100 â–‘â–‘â–‘â–‘â–‘ + // 00101010 â–‘â–“â–“â–“â–‘ + // 00101010 â–“â–‘â–‘â–“â–“ + // 00111110 â–“â–“â–“â–“â–‘ + // 00010100 â–“â–‘â–‘â–“â–“ + // â–“â–“â–“â–“â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe1 ***************** + 0x7E, 0x02, 0x02, 0x06, 0x06, + // 01111110 â–‘â–‘â–‘â–‘â–‘ + // 00000010 â–“â–“â–“â–“â–“ + // 00000010 â–“â–‘â–‘â–“â–“ + // 00000110 â–“â–‘â–‘â–‘â–‘ + // 00000110 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe2 ***************** + 0x02, 0x7E, 0x02, 0x7E, 0x02, + // 00000010 â–‘â–‘â–‘â–‘â–‘ + // 01111110 â–“â–“â–“â–“â–“ + // 00000010 â–‘â–“â–‘â–“â–‘ + // 01111110 â–‘â–“â–‘â–“â–‘ + // 00000010 â–‘â–“â–‘â–“â–‘ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe3 ***************** + 0x63, 0x55, 0x49, 0x41, 0x63, + // 01100011 â–“â–“â–“â–“â–“ + // 01010101 â–“â–‘â–‘â–‘â–“ + // 01001001 â–‘â–“â–‘â–‘â–‘ + // 01000001 â–‘â–‘â–“â–‘â–‘ + // 01100011 â–‘â–“â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–“ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe4 ***************** + 0x38, 0x44, 0x44, 0x3C, 0x04, + // 00111000 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–‘â–‘â–‘â–‘ + // 01000100 â–‘â–“â–“â–“â–“ + // 00111100 â–“â–‘â–‘â–“â–‘ + // 00000100 â–“â–‘â–‘â–“â–‘ + // â–“â–‘â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe5 ***************** + 0x40, 0x7E, 0x20, 0x1E, 0x20, + // 01000000 â–‘â–‘â–‘â–‘â–‘ + // 01111110 â–‘â–“â–‘â–“â–‘ + // 00100000 â–‘â–“â–‘â–“â–‘ + // 00011110 â–‘â–“â–‘â–“â–‘ + // 00100000 â–‘â–“â–‘â–“â–‘ + // â–‘â–“â–“â–‘â–“ + // â–“â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe6 ***************** + 0x06, 0x02, 0x7E, 0x02, 0x02, + // 00000110 â–‘â–‘â–‘â–‘â–‘ + // 00000010 â–“â–“â–“â–“â–“ + // 01111110 â–“â–‘â–“â–‘â–‘ + // 00000010 â–‘â–‘â–“â–‘â–‘ + // 00000010 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe7 ***************** + 0x99, 0xA5, 0xE7, 0xA5, 0x99, + // 10011001 â–“â–“â–“â–“â–“ + // 10100101 â–‘â–‘â–“â–‘â–‘ + // 11100111 â–‘â–“â–“â–“â–‘ + // 10100101 â–“â–‘â–‘â–‘â–“ + // 10011001 â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–“â–“â–“â–“â–“ + // ************************** + // [?] 0xe8 ***************** + 0x1C, 0x2A, 0x49, 0x2A, 0x1C, + // 00011100 â–‘â–‘â–“â–‘â–‘ + // 00101010 â–‘â–“â–‘â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–“ + // 00101010 â–“â–“â–“â–“â–“ + // 00011100 â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–‘â–“â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xe9 ***************** + 0x4C, 0x72, 0x01, 0x72, 0x4C, + // 01001100 â–‘â–‘â–“â–‘â–‘ + // 01110010 â–‘â–“â–‘â–“â–‘ + // 00000001 â–“â–‘â–‘â–‘â–“ + // 01110010 â–“â–‘â–‘â–‘â–“ + // 01001100 â–‘â–“â–‘â–“â–‘ + // â–‘â–“â–‘â–“â–‘ + // â–“â–“â–‘â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xea ***************** + 0x30, 0x4A, 0x4D, 0x4D, 0x30, + // 00110000 â–‘â–‘â–“â–“â–‘ + // 01001010 â–‘â–“â–‘â–‘â–‘ + // 01001101 â–‘â–‘â–“â–“â–‘ + // 01001101 â–‘â–“â–“â–“â–‘ + // 00110000 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xeb ***************** + 0x30, 0x48, 0x78, 0x48, 0x30, + // 00110000 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–‘â–‘â–‘â–‘â–‘ + // 01111000 â–‘â–‘â–‘â–‘â–‘ + // 01001000 â–‘â–“â–“â–“â–‘ + // 00110000 â–“â–‘â–“â–‘â–“ + // â–“â–‘â–“â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xec ***************** + 0xBC, 0x62, 0x5A, 0x46, 0x3D, + // 10111100 â–‘â–‘â–‘â–‘â–“ + // 01100010 â–‘â–“â–“â–“â–‘ + // 01011010 â–“â–‘â–‘â–“â–“ + // 01000110 â–“â–‘â–“â–‘â–“ + // 00111101 â–“â–‘â–“â–‘â–“ + // â–“â–“â–‘â–‘â–“ + // â–‘â–“â–“â–“â–‘ + // â–“â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xed ***************** + 0x3E, 0x49, 0x49, 0x49, 0x00, + // 00111110 â–‘â–“â–“â–“â–‘ + // 01001001 â–“â–‘â–‘â–‘â–‘ + // 01001001 â–“â–‘â–‘â–‘â–‘ + // 01001001 â–“â–“â–“â–“â–‘ + // 00000000 â–“â–‘â–‘â–‘â–‘ + // â–“â–‘â–‘â–‘â–‘ + // â–‘â–“â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xee ***************** + 0x7E, 0x01, 0x01, 0x01, 0x7E, + // 01111110 â–‘â–“â–“â–“â–‘ + // 00000001 â–“â–‘â–‘â–‘â–“ + // 00000001 â–“â–‘â–‘â–‘â–“ + // 00000001 â–“â–‘â–‘â–‘â–“ + // 01111110 â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–“â–‘â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xef ***************** + 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, + // 00101010 â–‘â–‘â–‘â–‘â–‘ + // 00101010 â–“â–“â–“â–“â–“ + // 00101010 â–‘â–‘â–‘â–‘â–‘ + // 00101010 â–“â–“â–“â–“â–“ + // 00101010 â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf0 ***************** + 0x44, 0x44, 0x5F, 0x44, 0x44, + // 01000100 â–‘â–‘â–“â–‘â–‘ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // 01011111 â–“â–“â–“â–“â–“ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf1 ***************** + 0x40, 0x51, 0x4A, 0x44, 0x40, + // 01000000 â–‘â–“â–‘â–‘â–‘ + // 01010001 â–‘â–‘â–“â–‘â–‘ + // 01001010 â–‘â–‘â–‘â–“â–‘ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // 01000000 â–‘â–“â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf2 ***************** + 0x40, 0x44, 0x4A, 0x51, 0x40, + // 01000000 â–‘â–‘â–‘â–“â–‘ + // 01000100 â–‘â–‘â–“â–‘â–‘ + // 01001010 â–‘â–“â–‘â–‘â–‘ + // 01010001 â–‘â–‘â–“â–‘â–‘ + // 01000000 â–‘â–‘â–‘â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–“â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf3 ***************** + 0x00, 0x00, 0xFF, 0x01, 0x03, + // 00000000 â–‘â–‘â–“â–“â–“ + // 00000000 â–‘â–‘â–“â–‘â–“ + // 11111111 â–‘â–‘â–“â–‘â–‘ + // 00000001 â–‘â–‘â–“â–‘â–‘ + // 00000011 â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // ************************** + // [?] 0xf4 ***************** + 0xE0, 0x80, 0xFF, 0x00, 0x00, + // 11100000 â–‘â–‘â–“â–‘â–‘ + // 10000000 â–‘â–‘â–“â–‘â–‘ + // 11111111 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // 00000000 â–‘â–‘â–“â–‘â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–“â–“â–“â–‘â–‘ + // ************************** + // [?] 0xf5 ***************** + 0x08, 0x08, 0x6B, 0x6B, 0x08, + // 00001000 â–‘â–‘â–“â–“â–‘ + // 00001000 â–‘â–‘â–“â–“â–‘ + // 01101011 â–‘â–‘â–‘â–‘â–‘ + // 01101011 â–“â–“â–“â–“â–“ + // 00001000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf6 ***************** + 0x36, 0x12, 0x36, 0x24, 0x36, + // 00110110 â–‘â–‘â–‘â–‘â–‘ + // 00010010 â–“â–“â–“â–‘â–“ + // 00110110 â–“â–‘â–“â–“â–“ + // 00100100 â–‘â–‘â–‘â–‘â–‘ + // 00110110 â–“â–“â–“â–‘â–“ + // â–“â–‘â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf7 ***************** + 0x06, 0x0F, 0x09, 0x0F, 0x06, + // 00000110 â–‘â–“â–“â–“â–‘ + // 00001111 â–“â–“â–‘â–“â–“ + // 00001001 â–“â–“â–‘â–“â–“ + // 00001111 â–‘â–“â–“â–“â–‘ + // 00000110 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf8 ***************** + 0x00, 0x00, 0x18, 0x18, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00011000 â–‘â–‘â–‘â–‘â–‘ + // 00011000 â–‘â–‘â–“â–“â–‘ + // 00000000 â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xf9 ***************** + 0x00, 0x00, 0x10, 0x10, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00010000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–“â–“â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xfa ***************** + 0x30, 0x40, 0xFF, 0x01, 0x01, + // 00110000 â–‘â–‘â–“â–“â–“ + // 01000000 â–‘â–‘â–“â–‘â–‘ + // 11111111 â–‘â–‘â–“â–‘â–‘ + // 00000001 â–‘â–‘â–“â–‘â–‘ + // 00000001 â–“â–‘â–“â–‘â–‘ + // â–“â–‘â–“â–‘â–‘ + // â–‘â–“â–“â–‘â–‘ + // â–‘â–‘â–“â–‘â–‘ + // ************************** + // [?] 0xfb ***************** + 0x00, 0x1F, 0x01, 0x01, 0x1E, + // 00000000 â–‘â–“â–“â–“â–‘ + // 00011111 â–‘â–“â–‘â–‘â–“ + // 00000001 â–‘â–“â–‘â–‘â–“ + // 00000001 â–‘â–“â–‘â–‘â–“ + // 00011110 â–‘â–“â–‘â–‘â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xfc ***************** + 0x00, 0x19, 0x1D, 0x17, 0x12, + // 00000000 â–‘â–“â–“â–“â–‘ + // 00011001 â–‘â–‘â–‘â–“â–“ + // 00011101 â–‘â–‘â–“â–“â–‘ + // 00010111 â–‘â–“â–“â–‘â–‘ + // 00010010 â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xfd ***************** + 0x00, 0x3C, 0x3C, 0x3C, 0x3C, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00111100 â–‘â–‘â–‘â–‘â–‘ + // 00111100 â–‘â–“â–“â–“â–“ + // 00111100 â–‘â–“â–“â–“â–“ + // 00111100 â–‘â–“â–“â–“â–“ + // â–‘â–“â–“â–“â–“ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** + // [?] 0xfe ***************** + 0x00, 0x00, 0x00, 0x00, 0x00, + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // 00000000 â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // â–‘â–‘â–‘â–‘â–‘ + // ************************** +#endif + +}; + +#endif /* FONT_H */ \ No newline at end of file diff --git a/fw/stm8s/common/inc/format.h b/fw/stm8s/common/inc/format.h new file mode 100644 index 0000000..58aadab --- /dev/null +++ b/fw/stm8s/common/inc/format.h @@ -0,0 +1,10 @@ +#ifndef FORMAT_H +#define FORMAT_H + +#include +#include + +void format_vsprintf(uint8_t *str, uint8_t *format, va_list args); +void format_sprintf(uint8_t *str, uint8_t *format, ...); + +#endif /* FORMAT_H */ \ No newline at end of file diff --git a/fw/stm8s/common/inc/lcd12864.h b/fw/stm8s/common/inc/lcd12864.h new file mode 100644 index 0000000..a050b4d --- /dev/null +++ b/fw/stm8s/common/inc/lcd12864.h @@ -0,0 +1,69 @@ +#ifndef LCD12864_H +#define LCD12864_H + +#include "stdint.h" +#include "stdbool.h" +#include "stm8s.h" + +/* + * Initialize LCD12864. + * + * Pinout: + * SCK -> PC5 [spi] + * MOSI -> PC6 [spi] + * MISO -> PC7 [spi] + * CS -> PC4 + * RES -> PA2 //PC3 + * DC -> PD2 + */ + +#define LCD12864_TRANSACTION_START \ + SPI_CR1 = SPI_CR1_MSTR | SPI_CR1_BR(0) | SPI_CR1_SPE; \ + PC_ODR &= ~PIN4; +#define LCD12864_TRANSACTION_END \ + while ((SPI_SR & SPI_SR_BSY)) \ + ; \ + PC_ODR |= PIN4; \ + SPI_CR1 &= ~SPI_CR1_SPE; +#define LCD12864_MODE_COMMAND PD_ODR &= ~PIN2; +#define LCD12864_MODE_DATA PD_ODR |= PIN2; + +#define LCD12864_NORMALDISPLAY 0xA7 +#define LCD12864_INVERTDISPLAY 0xA6 +#define LCD12864_CLEARON 0xA5 +#define LCD12864_CLEAROFF 0xA4 +#define LCD12864_RESET 0xE2 + +#define LCD12864_LCDWIDTH 128 +#define LCD12864_LCDHEIGHT 64 +#define LCD12864_PIX_START 0 + +struct LCD12864_SEGMENT +{ + uint8_t fontWidth; + uint8_t fontHeight; + uint8_t fontSpacing; + uint8_t rows; + uint8_t cols; + uint8_t width; + uint8_t height; + uint8_t *buffer; + uint16_t bufferDepth; + uint8_t page0; + uint8_t clearChar; +}; + +bool lcd12864_init(bool reset); +void lcd12864_invert_display(bool i); +void lcd12864_clear_display(bool i); +struct LCD12864_SEGMENT *lcd12864_new_segment(uint8_t page0, uint8_t fontWidth, uint8_t fontHeight, uint8_t fontSpacing, uint8_t rows, uint8_t clearChar); +bool lcd12864_free_segment(struct LCD12864_SEGMENT *segment); +bool lcd12864_clear_segment(struct LCD12864_SEGMENT *segment); +bool lcd12864_display_segment(struct LCD12864_SEGMENT *segment); + +void lcd12864_clear(uint8_t d); + +void lcd12864_command1(uint8_t c); +void lcd12864_command_list(const uint8_t *c, uint8_t n); + +#endif /* LCD12864_H */ \ No newline at end of file diff --git a/fw/stm8s/common/inc/max31855k.h b/fw/stm8s/common/inc/max31855k.h new file mode 100644 index 0000000..82baf1a --- /dev/null +++ b/fw/stm8s/common/inc/max31855k.h @@ -0,0 +1,26 @@ +#ifndef MAX31855K_H +#define MAX31855K_H + +#include + +/** + * Initialize MAX31855K. + * + * Pinout: + * CS -> PA1 + * SCK -> PC5 [spi] + * MISO -> PC7 [spi] + * + */ + +#define MAX31855K_TRANSACTION_START \ + PC_ODR |= PIN5; \ + PA_ODR &= ~PIN1; +#define MAX31855K_TRANSACTION_END \ + PA_ODR |= PIN1; + +void max31855k_init(); + +uint16_t max31855k_read(); + +#endif /* MAX31855K_H */ diff --git a/fw/stm8s/common/inc/max6675.h b/fw/stm8s/common/inc/max6675.h new file mode 100644 index 0000000..1dfc0ab --- /dev/null +++ b/fw/stm8s/common/inc/max6675.h @@ -0,0 +1,27 @@ +#ifndef MAX6675_H +#define MAX6675_H + +#include +//#include "spi.h" + +/** + * Initialize MAX6675. + * + * Pinout: + * CS -> PA1 + * SCK -> PC5 [spi] + * MISO -> PC7 [spi] + * + */ + +#define MAX6675_TRANSACTION_START \ + PC_ODR |= PIN5; \ + PA_ODR &= ~PIN1; +#define MAX6675_TRANSACTION_END \ + PA_ODR |= PIN1; + +void max6675_init(); + +uint16_t max6675_read(); + +#endif /* MAX6675_H */ diff --git a/fw/stm8s/common/inc/oled.h b/fw/stm8s/common/inc/oled.h new file mode 100644 index 0000000..9532c17 --- /dev/null +++ b/fw/stm8s/common/inc/oled.h @@ -0,0 +1,108 @@ +#ifndef OLED_H +#define OLED_H + +#include "stdint.h" +#include "stdbool.h" +#include "stm8s.h" + +/* + * Initialize OLED. + * + * Pinout: + * SCK -> PC5 [spi] + * MOSI -> PC6 [spi] + * MISO -> PC7 [spi] + * CS -> PC4 + * RES -> PC3 + * DC -> PD6 + */ + +struct SEGMENT +{ + uint8_t fontWidth; + uint8_t fontHeight; + uint8_t fontSpacing; + uint8_t rows; + uint8_t cols; + uint8_t width; + uint8_t height; + uint8_t *buffer; + uint16_t bufferDepth; + uint8_t page0; + uint8_t clearChar; +}; + +bool oled_init(uint8_t vcs, bool reset); +struct SEGMENT *oled_new_segment(uint8_t page0, uint8_t fontWidth, uint8_t fontHeight, uint8_t fontSpacing, uint8_t rows, uint8_t clearChar); +bool oled_free_segment(struct SEGMENT *segment); +bool oled_clear_segment(struct SEGMENT *segment); +bool oled_display_segment(struct SEGMENT *segment); +void oled_clear_display(void); +void oled_invert_display(bool i); +void oled_dim_display(bool dim); + +void oled_command_list(const uint8_t *c, uint8_t n); +void oled_command1(uint8_t c); + +#if defined SSD1306_128_64 +#define OLED_LCDWIDTH 128 +#define OLED_LCDHEIGHT 64 +#define OLED_PIX_START 0 +#endif +#if defined SSD1306_128_32 +#define OLED_LCDWIDTH 128 +#define OLED_LCDHEIGHT 32 +#define OLED_PIX_START 0 +#endif +#if defined SH1106_128_64 +#define OLED_LCDWIDTH 128 +#define OLED_LCDHEIGHT 64 +#define OLED_PIX_START 2 +#endif + +#ifndef OLED_LCDWIDTH +#define OLED_LCDWIDTH 128 +#define OLED_LCDHEIGHT 64 +#define OLED_PIX_START 0 +#endif + +#define SSD1306_BLACK 0 ///< Draw 'off' pixels +#define SSD1306_WHITE 1 ///< Draw 'on' pixels +#define SSD1306_INVERSE 2 ///< Invert pixels + +#define TRANSACTION_START \ + SPI_CR1 = SPI_CR1_MSTR | SPI_CR1_BR(0) | SPI_CR1_SPE; \ + PC_ODR &= ~PIN4; +#define TRANSACTION_END \ + while ((SPI_SR & SPI_SR_BSY)) \ + ; \ + PC_ODR |= PIN4; \ + SPI_CR1 &= ~SPI_CR1_SPE; +#define OLED_MODE_COMMAND PD_ODR &= ~PIN6; +#define OLED_MODE_DATA PD_ODR |= PIN6; + +#define SSD1306_EXTERNALVCC 0x01 ///< External display voltage source +#define SSD1306_SWITCHCAPVCC 0x02 ///< Gen. display voltage from 3.3V + +#define SSD1306_MEMORYMODE 0x20 +#define SSD1306_COLUMNADDR 0x21 +#define SSD1306_PAGEADDR 0x22 +#define SSD1306_DEACTIVATE_SCROLL 0x2E +#define SSD1306_SETSTARTLINE 0x40 +#define SSD1306_SETCONTRAST 0x81 +#define SSD1306_CHARGEPUMP 0x8D +#define SSD1306_SEGREMAP 0xA0 +#define SSD1306_DISPLAYALLON_RESUME 0xA4 +#define SSD1306_NORMALDISPLAY 0xA6 +#define SSD1306_INVERTDISPLAY 0xA7 +#define SSD1306_SETMULTIPLEX 0xA8 +#define SSD1306_DISPLAYOFF 0xAE +#define SSD1306_DISPLAYON 0xAF +#define SSD1306_COMSCANDEC 0xC8 +#define SSD1306_SETDISPLAYOFFSET 0xD3 +#define SSD1306_SETDISPLAYCLOCKDIV 0xD5 +#define SSD1306_SETPRECHARGE 0xD9 +#define SSD1306_SETCOMPINS 0xDA +#define SSD1306_SETVCOMDETECT 0xDB + +#endif /* OLED_H */ \ No newline at end of file diff --git a/fw/stm8s/common/inc/spi.h b/fw/stm8s/common/inc/spi.h new file mode 100644 index 0000000..bd1dd6c --- /dev/null +++ b/fw/stm8s/common/inc/spi.h @@ -0,0 +1,21 @@ +#ifndef SPI_H +#define SPI_H + +#include + +/* + * Initialize SPI in MODE1. + * + * Pinout: + * SCK -> PC5 + * MOSI -> PC6 + * MISO -> PC7 + * CS -> user defined + */ +void spi_init(); + +void spi_write(uint8_t data); + +uint8_t spi_read(); + +#endif /* SPI_H */ \ No newline at end of file diff --git a/fw/stm8s/common/inc/stm8s.h b/fw/stm8s/common/inc/stm8s.h new file mode 100644 index 0000000..f02d880 --- /dev/null +++ b/fw/stm8s/common/inc/stm8s.h @@ -0,0 +1,425 @@ +/* + * Register definitions for STM8S103 (and STM8S003) + * Still incomplete. + */ +#ifndef _STH8_H +#define _STH8_H + +/* Handy macros for GPIO */ +#define CONCAT(a, b) a##_##b +#define PORT(a, b) CONCAT(a, b) + +#define PIN0 (1 << 0) +#define PIN1 (1 << 1) +#define PIN2 (1 << 2) +#define PIN3 (1 << 3) +#define PIN4 (1 << 4) +#define PIN5 (1 << 5) +#define PIN6 (1 << 6) +#define PIN7 (1 << 7) + +/* Register addresses */ + +/* Clock */ +#define CLK_CKDIVR *(volatile unsigned char *)0x50C6 + +/* GPIO */ +#define PA_ODR *(volatile unsigned char *)0x5000 +#define PA_IDR *(volatile unsigned char *)0x5001 +#define PA_DDR *(volatile unsigned char *)0x5002 +#define PA_CR1 *(volatile unsigned char *)0x5003 +#define PA_CR2 *(volatile unsigned char *)0x5004 + +#define PB_ODR *(volatile unsigned char *)0x5005 +#define PB_IDR *(volatile unsigned char *)0x5006 +#define PB_DDR *(volatile unsigned char *)0x5007 +#define PB_CR1 *(volatile unsigned char *)0x5008 +#define PB_CR2 *(volatile unsigned char *)0x5009 + +#define PC_ODR *(volatile unsigned char *)0x500A +#define PC_IDR *(volatile unsigned char *)0x500B +#define PC_DDR *(volatile unsigned char *)0x500C +#define PC_CR1 *(volatile unsigned char *)0x500D +#define PC_CR2 *(volatile unsigned char *)0x500E + +#define PD_ODR *(volatile unsigned char *)0x500F +#define PD_IDR *(volatile unsigned char *)0x5010 +#define PD_DDR *(volatile unsigned char *)0x5011 +#define PD_CR1 *(volatile unsigned char *)0x5012 +#define PD_CR2 *(volatile unsigned char *)0x5013 + +#define EXTI_CR1 *(volatile unsigned char *)0x50A0 +#define EXTI_CR2 *(volatile unsigned char *)0x50A1 + +/* UART */ +#define UART1_SR *(volatile unsigned char *)0x5230 +#define UART1_DR *(volatile unsigned char *)0x5231 +#define UART1_BRR1 *(volatile unsigned char *)0x5232 +#define UART1_BRR2 *(volatile unsigned char *)0x5233 +#define UART1_CR1 *(volatile unsigned char *)0x5234 +#define UART1_CR2 *(volatile unsigned char *)0x5235 +#define UART1_CR3 *(volatile unsigned char *)0x5236 +#define UART1_CR4 *(volatile unsigned char *)0x5237 +#define UART1_CR5 *(volatile unsigned char *)0x5238 +#define UART1_GTR *(volatile unsigned char *)0x5239 +#define UART1_PSCR *(volatile unsigned char *)0x523A + +#define UART_SR_TXE (1 << 7) +#define UART_SR_TC (1 << 6) +#define UART_SR_RXNE (1 << 5) +#define UART_SR_IDLE (1 << 4) +#define UART_SR_OR (1 << 3) +#define UART_SR_NF (1 << 2) +#define UART_SR_FE (1 << 1) +#define UART_SR_PE (1 << 0) + +#define UART_CR1_R8 (1 << 7) +#define UART_CR1_T8 (1 << 6) +#define UART_CR1_UARTD (1 << 5) +#define UART_CR1_M (1 << 4) +#define UART_CR1_WAKE (1 << 3) +#define UART_CR1_PCEN (1 << 2) +#define UART_CR1_PS (1 << 1) +#define UART_CR1_PIEN (1 << 0) + +#define UART_CR2_TIEN (1 << 7) +#define UART_CR2_TCIEN (1 << 6) +#define UART_CR2_RIEN (1 << 5) +#define UART_CR2_ILIEN (1 << 4) +#define UART_CR2_TEN (1 << 3) +#define UART_CR2_REN (1 << 2) +#define UART_CR2_RWU (1 << 1) +#define UART_CR2_SBK (1 << 0) + +#define UART_CR3_LINEN (1 << 6) +#define UART_CR3_STOP2 (1 << 5) +#define UART_CR3_STOP1 (1 << 4) +#define UART_CR3_CLKEN (1 << 3) +#define UART_CR3_CPOL (1 << 2) +#define UART_CR3_CPHA (1 << 1) +#define UART_CR3_LBCL (1 << 0) + +/* Timers */ +#define TIM1_CR1 *(volatile unsigned char *)0x5250 +#define TIM1_CR2 *(volatile unsigned char *)0x5251 +#define TIM1_SMCR *(volatile unsigned char *)0x5252 +#define TIM1_ETR *(volatile unsigned char *)0x5253 +#define TIM1_IER *(volatile unsigned char *)0x5254 +#define TIM1_SR1 *(volatile unsigned char *)0x5255 +#define TIM1_SR2 *(volatile unsigned char *)0x5256 +#define TIM1_EGR *(volatile unsigned char *)0x5257 +#define TIM1_CCMR1 *(volatile unsigned char *)0x5258 +#define TIM1_CCMR2 *(volatile unsigned char *)0x5259 +#define TIM1_CCMR3 *(volatile unsigned char *)0x525A +#define TIM1_CCMR4 *(volatile unsigned char *)0x525B +#define TIM1_CCER1 *(volatile unsigned char *)0x525C +#define TIM1_CCER2 *(volatile unsigned char *)0x525D +#define TIM1_CNTRH *(volatile unsigned char *)0x525E +#define TIM1_CNTRL *(volatile unsigned char *)0x525F +#define TIM1_PSCRH *(volatile unsigned char *)0x5260 +#define TIM1_PSCRL *(volatile unsigned char *)0x5261 +#define TIM1_ARRH *(volatile unsigned char *)0x5262 +#define TIM1_ARRL *(volatile unsigned char *)0x5263 +#define TIM1_RCR *(volatile unsigned char *)0x5264 +#define TIM1_CCR1H *(volatile unsigned char *)0x5265 +#define TIM1_CCR1L *(volatile unsigned char *)0x5266 +#define TIM1_CCR2H *(volatile unsigned char *)0x5267 +#define TIM1_CCR2L *(volatile unsigned char *)0x5268 +#define TIM1_CCR3H *(volatile unsigned char *)0x5269 +#define TIM1_CCR3L *(volatile unsigned char *)0x526A +#define TIM1_CCR4H *(volatile unsigned char *)0x526B +#define TIM1_CCR4L *(volatile unsigned char *)0x526C +#define TIM1_BKR *(volatile unsigned char *)0x526D +#define TIM1_DTR *(volatile unsigned char *)0x526E +#define TIM1_OISR *(volatile unsigned char *)0x526F + +/* Note these are for STM8S103 and STM8S003 + STM8S105,104/207/208 are different */ +#define TIM2_CR1 *(volatile unsigned char *)0x5300 +#define TIM2_CR2 *(volatile unsigned char *)0x5301 +#define TIM2_SMCR *(volatile unsigned char *)0x5302 +#define TIM2_IER *(volatile unsigned char *)0x5303 +#define TIM2_SR1 *(volatile unsigned char *)0x5304 +#define TIM2_SR2 *(volatile unsigned char *)0x5305 +#define TIM2_EGR *(volatile unsigned char *)0x5306 +#define TIM2_CCMR1 *(volatile unsigned char *)0x5307 +#define TIM2_CCMR2 *(volatile unsigned char *)0x5308 +#define TIM2_CCMR3 *(volatile unsigned char *)0x5309 +#define TIM2_CCER1 *(volatile unsigned char *)0x530A +#define TIM2_CCER2 *(volatile unsigned char *)0x530B +#define TIM2_CNTRH *(volatile unsigned char *)0x530C +#define TIM2_CNTRL *(volatile unsigned char *)0x530D +#define TIM2_PSCR *(volatile unsigned char *)0x530E +#define TIM2_ARRH *(volatile unsigned char *)0x530F +#define TIM2_ARRL *(volatile unsigned char *)0x5310 +#define TIM2_CCR1H *(volatile unsigned char *)0x5311 +#define TIM2_CCR1L *(volatile unsigned char *)0x5312 +#define TIM2_CCR2H *(volatile unsigned char *)0x5313 +#define TIM2_CCR2L *(volatile unsigned char *)0x5314 +#define TIM2_CCR3H *(volatile unsigned char *)0x5315 +#define TIM2_CCR3L *(volatile unsigned char *)0x5316 + +#define TIM2_CR1_CEN (1 << 0) +#define TIM2_CCER1_CC1P (1 << 1) +#define TIM2_CCER1_CC1E (1 << 0) +#define TIM2_CCER1_CC2P (1 << 5) +#define TIM2_CCER1_CC2E (1 << 4) +#define TIM2_CCER2_CC3P (1 << 1) +#define TIM2_CCER2_CC3E (1 << 0) +#define TIM2_CCMR2_OC2M0 (1 << 4) +#define TIM2_CCMR2_OC2M1 (1 << 5) +#define TIM2_CCMR2_OC2M2 (1 << 6) + +/* Note these are for STM8S103 and STM8S003 + STM8S105,104/207/208 are different */ +#define TIM4_CR1 *(volatile unsigned char *)0x5340 +#define TIM4_CR2 *(volatile unsigned char *)0x5341 +#define TIM4_SMCR *(volatile unsigned char *)0x5342 +#define TIM4_IER *(volatile unsigned char *)0x5343 +#define TIM4_SR *(volatile unsigned char *)0x5344 +#define TIM4_EGR *(volatile unsigned char *)0x5345 +#define TIM4_CNTR *(volatile unsigned char *)0x5346 +#define TIM4_PSCR *(volatile unsigned char *)0x5347 +#define TIM4_ARR *(volatile unsigned char *)0x5348 + +#define TIM_IER_BIE (1 << 7) +#define TIM_IER_TIE (1 << 6) +#define TIM_IER_COMIE (1 << 5) +#define TIM_IER_CC4IE (1 << 4) +#define TIM_IER_CC3IE (1 << 3) +#define TIM_IER_CC2IE (1 << 2) +#define TIM_IER_CC1IE (1 << 1) +#define TIM_IER_UIE (1 << 0) + +#define TIM_CR1_APRE (1 << 7) +#define TIM_CR1_CMSH (1 << 6) +#define TIM_CR1_CMSL (1 << 5) +#define TIM_CR1_DIR (1 << 4) +#define TIM_CR1_OPM (1 << 3) +#define TIM_CR1_URS (1 << 2) +#define TIM_CR1_UDIS (1 << 1) +#define TIM_CR1_CEN (1 << 0) + +#define TIM_SR1_BIF (1 << 7) +#define TIM_SR1_TIF (1 << 6) +#define TIM_SR1_COMIF (1 << 5) +#define TIM_SR1_CC4IF (1 << 4) +#define TIM_SR1_CC3IF (1 << 3) +#define TIM_SR1_CC2IF (1 << 2) +#define TIM_SR1_CC1IF (1 << 1) +#define TIM_SR1_UIF (1 << 0) + +/* SPI */ +#define SPI_CR1 *(volatile unsigned char *)0x5200 +#define SPI_CR2 *(volatile unsigned char *)0x5201 +#define SPI_ICR *(volatile unsigned char *)0x5202 +#define SPI_SR *(volatile unsigned char *)0x5203 +#define SPI_DR *(volatile unsigned char *)0x5204 +#define SPI_CRCPR *(volatile unsigned char *)0x5205 +#define SPI_RXCRCR *(volatile unsigned char *)0x5206 +#define SPI_TXCRCR *(volatile unsigned char *)0x5207 + +#define SPI_CR1_LSBFIRST (1 << 7) +#define SPI_CR1_SPE (1 << 6) +#define SPI_CR1_BR(br) ((br) << 3) +#define SPI_CR1_MSTR (1 << 2) +#define SPI_CR1_CPOL (1 << 1) +#define SPI_CR1_CPHA (1 << 0) + +#define SPI_CR2_BDM (1 << 7) +#define SPI_CR2_BDOE (1 << 6) +#define SPI_CR2_CRCEN (1 << 5) +#define SPI_CR2_CRCNEXT (1 << 4) +#define SPI_CR2_RXONLY (1 << 2) +#define SPI_CR2_SSM (1 << 1) +#define SPI_CR2_SSI (1 << 0) + +#define SPI_ICR_TXIE (1 << 7) +#define SPI_ICR_RXIE (1 << 6) +#define SPI_ICR_ERRIE (1 << 5) +#define SPI_ICR_WKIE (1 << 4) + +#define SPI_SR_BSY (1 << 7) +#define SPI_SR_OVR (1 << 6) +#define SPI_SR_MODF (1 << 5) +#define SPI_SR_CRCERR (1 << 4) +#define SPI_SR_WKUP (1 << 3) +#define SPI_SR_TXE (1 << 1) +#define SPI_SR_RxNE (1 << 0) + +/* I2C */ +#define I2C_CR1 *(volatile unsigned char *)0x5210 +#define I2C_CR2 *(volatile unsigned char *)0x5211 +#define I2C_FREQR *(volatile unsigned char *)0x5212 +#define I2C_OARL *(volatile unsigned char *)0x5213 +#define I2C_OARH *(volatile unsigned char *)0x5214 +#define I2C_DR *(volatile unsigned char *)0x5216 +#define I2C_SR1 *(volatile unsigned char *)0x5217 +#define I2C_SR2 *(volatile unsigned char *)0x5218 +#define I2C_SR3 *(volatile unsigned char *)0x5219 +#define I2C_ITR *(volatile unsigned char *)0x521A +#define I2C_CCRL *(volatile unsigned char *)0x521B +#define I2C_CCRH *(volatile unsigned char *)0x521C +#define I2C_TRISER *(volatile unsigned char *)0x521D +#define I2C_PECR *(volatile unsigned char *)0x521E + +/* ADC */ +#define ADC_DBxR *(volatile unsigned char *)0x53E0 +#define ADC_CSR *(volatile unsigned char *)0x5400 +#define ADC_CR1 *(volatile unsigned char *)0x5401 +#define ADC_CR2 *(volatile unsigned char *)0x5402 +#define ADC_CR3 *(volatile unsigned char *)0x5403 +#define ADC_DRH *(volatile unsigned char *)0x5404 +#define ADC_DRL *(volatile unsigned char *)0x5405 +#define ADC_TDRH *(volatile unsigned char *)0x5406 +#define ADC_TDRL *(volatile unsigned char *)0x5407 +#define ADC_HTRH *(volatile unsigned char *)0x5408 +#define ADC_HTRL *(volatile unsigned char *)0x5409 +#define ADC_LTRH *(volatile unsigned char *)0x540A +#define ADC_LTRL *(volatile unsigned char *)0x540B +#define ADC_AWSRH *(volatile unsigned char *)0x540C +#define ADC_AWSRL *(volatile unsigned char *)0x540D +#define ADC_AWCRH *(volatile unsigned char *)0x540E +#define ADC_AWCRL *(volatile unsigned char *)0x540F + +#define ADC_CSR_EOC (1 << 7) +#define ADC_CSR_AWD (1 << 6) +#define ADC_CSR_EOCIE (1 << 5) +#define ADC_CSR_AWDIE (1 << 4) + +#define ADC_CR1_CONT (1 << 1) +#define ADC_CR1_ADON (1 << 0) + +#define ADC_CR2_EXTTRIG (1 << 6) +#define ADC_CR2_EXTSEL (1 << 4) +#define ADC_CR2_ALIGN (1 << 3) +#define ADC_CR2_SCAN (1 << 1) + +/* BEEP */ +#define BEEP_CSR *(volatile unsigned char *)0x50F3 + +#define BEEP_CSR_EN (1 << 5) +#define BEEP_CSR_SEL(sel) ((sel & 0b00000011) << 6) +#define BEEP_CSR_DIV(div) ((div & 0b00011111) << 0) + +#define BEEP_CSR_BEEPDIV ((uint8_t)0x1F) /*!< Beeper Divider prescalar mask */ +#define BEEP_FREQUENCY_1KHZ ((uint8_t)0x00) /*!< Beep signal output frequency equals to 1 KHz */ +#define BEEP_FREQUENCY_2KHZ ((uint8_t)0x40) /*!< Beep signal output frequency equals to 2 KHz */ +#define BEEP_FREQUENCY_4KHZ ((uint8_t)0x80) /*!< Beep signal output frequency equals to 4 KHz */ +#define BEEP_CALIBRATION_DEFAULT ((uint8_t)0x0B) /*!< Default value when calibration is not done */ +#define LSI_FREQUENCY_MIN ((uint32_t)110000) /*!< LSI minimum value in Hertz */ +#define LSI_FREQUENCY_MAX ((uint32_t)150000) /*!< LSI maximum value in Hertz */ + +/* FLASH */ +#define FLASH_IAPSR *(volatile unsigned char *)0x505F +#define FLASH_IAPSR_DUL (1 << 3) +#define FLASH_IAPSR_EOP (1 << 2) +#define FLASH_PUKR_KEY1 0x56 +#define FLASH_PUKR_KEY2 0xAE +#define FLASH_DUKR *(volatile unsigned char *)0x5064 +#define FLASH_DUKR_KEY1 FLASH_PUKR_KEY2 +#define FLASH_DUKR_KEY2 FLASH_PUKR_KEY1 + +#define EEPROM_START_ADDR 0x4000 +#define EEPROM_END_ADDR 0x407F + +/* Interrupt commands */ +#define enableInterrupts() \ + { \ + __asm__("rim\n"); \ + } /* enable interrupts */ +#define disableInterrupts() \ + { \ + __asm__("sim\n"); \ + } /* disable interrupts */ +#define rim() \ + { \ + __asm__("rim\n"); \ + } /* enable interrupts */ +#define sim() \ + { \ + __asm__("sim\n"); \ + } /* disable interrupts */ +#define nop() \ + { \ + __asm__("nop\n"); \ + } /* No Operation */ +#define trap() \ + { \ + __asm__("trap\n"); \ + } /* Trap (soft IT) */ +#define wfi() \ + { \ + __asm__("wfi\n"); \ + } /* Wait For Interrupt */ +#define halt() \ + { \ + __asm__("halt\n"); \ + } /* Halt */ + +/* Interrupt numbers */ +#define TIM1_OVR_UIF_IRQ 11 +#define TIM2_OVR_UIF_IRQ 13 +#define TIM3_OVR_UIF_IRQ 15 +#define ADC1_EOC_IRQ 22 +#define TIM4_OVR_UIF_IRQ 23 + +#define ISR(name, vector) void name(void) __interrupt(vector - 2) + +#define EXTI_PORTA_vector 0x05 +#define EXTI_PORTB_vector 0x06 +/* +Interrupts: + +0 TLI +1 AWU Auto Wake up from Halt +2 CLK Clock controller +3 EXTI0 Port A external interrupts +4 EXTI1 Port B external interrupts +5 EXTI2 Port C external interrupts +6 EXTI3 Port D external interrupts +7 EXTI4 Port E external interrupts +8 CAN CAN RX interrupt +9 CAN CAN TX/ER/SC interrupt +10 SPI End of Transfer +11 TIM1 Update /Overflow/Underflow/Trigger/Break +12 TIM1 Capture/Compare +13 TIM2 Update /Overflow +14 TIM2 Capture/Compare +15 TIM3 Update /Overflow +16 TIM3 Capture/Compare +17 UART1 Tx complete +18 UART1 Receive Register DATA FULL +19 I2C I2C interrupt +20 UART2/3 Tx complete +21 UART2/3 Receive Register DATA FULL +22 ADC End of Conversion +23 TIM4 Update/Overflow +24 FLASH EOP/WR_PG_DIS + +TLI 0 +AWU 1 +CLK 2 +EXTI_PORTA 3 +EXTI_PORTB 4 +EXTI_PORTC +EXTI_PORTD +EXTI_PORTE +CAN_RX +CAN_TX +SPI +TIM1_UPD_OVF_TRG_BRK +TIM1_CAP_COM +TIM2_UPD_OVF_BRK +TIM2_CAP_COM +TIM3_UPD_OVF_BRK +TIM3_CAP_COM +UART1_TX +UART1_RX +I2C 19 +ADC1 22 +TIM4_UPD_OVF 23 +EEPROM_EEC 24 +*/ + +#endif diff --git a/fw/stm8s/common/inc/uart.h b/fw/stm8s/common/inc/uart.h new file mode 100644 index 0000000..103a7c4 --- /dev/null +++ b/fw/stm8s/common/inc/uart.h @@ -0,0 +1,28 @@ +#ifndef UART_H +#define UART_H + +#include + +#ifndef BAUDRATE +#define BAUDRATE 115200 +#endif + +#ifndef F_CPU +#warning "F_CPU not defined, using 2MHz by default" +#define F_CPU 2000000UL +#endif + +/** + * Initialize UART1. + * Mode: 8-N-1, flow-control: none. + * + * PD5 -> TX + * PD6 -> RX + */ +void uart_init(); + +void uart_write(uint8_t data); + +uint8_t uart_read(); + +#endif /* UART_H */ \ No newline at end of file diff --git a/fw/stm8s/common/inc/uart_stdin.h b/fw/stm8s/common/inc/uart_stdin.h new file mode 100644 index 0000000..010146d --- /dev/null +++ b/fw/stm8s/common/inc/uart_stdin.h @@ -0,0 +1,6 @@ +#ifndef UART_STDIN_H +#define UART_STDIN_H + +int getchar(void); + +#endif /* UART_STDIN_H */ \ No newline at end of file diff --git a/fw/stm8s/common/inc/uart_stdout.h b/fw/stm8s/common/inc/uart_stdout.h new file mode 100644 index 0000000..69d556a --- /dev/null +++ b/fw/stm8s/common/inc/uart_stdout.h @@ -0,0 +1,8 @@ +#ifndef UART_STDOUT_H +#define UART_STDOUT_H + +int putchar(int c); +void putstring(uint8_t *str); +void putsf(uint8_t *format, ...); + +#endif /* UART_STDOUT_H */ \ No newline at end of file diff --git a/fw/stm8s/common/src/beep_freq.c b/fw/stm8s/common/src/beep_freq.c new file mode 100644 index 0000000..3b06abd --- /dev/null +++ b/fw/stm8s/common/src/beep_freq.c @@ -0,0 +1,6 @@ +#include "beep.h" + +void beep_freq(uint8_t freq) +{ + BEEP_CSR_DIV(freq); +} \ No newline at end of file diff --git a/fw/stm8s/common/src/beep_init.c b/fw/stm8s/common/src/beep_init.c new file mode 100644 index 0000000..e32a29c --- /dev/null +++ b/fw/stm8s/common/src/beep_init.c @@ -0,0 +1,7 @@ +#include "beep.h" + +void beep_init(void) +{ + BEEP_CSR &= ~BEEP_CSR_BEEPDIV; /* Clear bits */ + BEEP_CSR |= BEEP_CALIBRATION_DEFAULT; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/beep_off.c b/fw/stm8s/common/src/beep_off.c new file mode 100644 index 0000000..304ca5e --- /dev/null +++ b/fw/stm8s/common/src/beep_off.c @@ -0,0 +1,6 @@ +#include "beep.h" + +void beep_off(void) +{ + BEEP_CSR &= ~BEEP_CSR_EN; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/beep_on.c b/fw/stm8s/common/src/beep_on.c new file mode 100644 index 0000000..e08803a --- /dev/null +++ b/fw/stm8s/common/src/beep_on.c @@ -0,0 +1,6 @@ +#include "beep.h" + +void beep_on(void) +{ + BEEP_CSR |= BEEP_CSR_EN; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/clock_init.c b/fw/stm8s/common/src/clock_init.c new file mode 100644 index 0000000..ce70a58 --- /dev/null +++ b/fw/stm8s/common/src/clock_init.c @@ -0,0 +1,3 @@ +#include "clock.h" + +extern inline void clock_init(void); \ No newline at end of file diff --git a/fw/stm8s/common/src/delay_ms.c b/fw/stm8s/common/src/delay_ms.c new file mode 100644 index 0000000..dc71cc0 --- /dev/null +++ b/fw/stm8s/common/src/delay_ms.c @@ -0,0 +1,3 @@ +#include "delay.h" + +extern inline void delay_ms(uint32_t ms); \ No newline at end of file diff --git a/fw/stm8s/common/src/delay_us.c b/fw/stm8s/common/src/delay_us.c new file mode 100644 index 0000000..dbeef8d --- /dev/null +++ b/fw/stm8s/common/src/delay_us.c @@ -0,0 +1,3 @@ +#include "delay.h" + +extern inline void delay_us(uint32_t us); \ No newline at end of file diff --git a/fw/stm8s/common/src/eeprom_lock.c b/fw/stm8s/common/src/eeprom_lock.c new file mode 100644 index 0000000..23e01f0 --- /dev/null +++ b/fw/stm8s/common/src/eeprom_lock.c @@ -0,0 +1,5 @@ +#include "eeprom.h" + +void eeprom_lock() { + FLASH_IAPSR &= ~FLASH_IAPSR_DUL; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/eeprom_read.c b/fw/stm8s/common/src/eeprom_read.c new file mode 100644 index 0000000..667c6df --- /dev/null +++ b/fw/stm8s/common/src/eeprom_read.c @@ -0,0 +1,6 @@ +#include "eeprom.h" + +void eeprom_read(uint16_t addr, uint8_t *buf, int len) { + for (int i = 0; i < len; i++, addr++) + buf[i] = (*(volatile uint8_t *)(addr)); +} \ No newline at end of file diff --git a/fw/stm8s/common/src/eeprom_unlock.c b/fw/stm8s/common/src/eeprom_unlock.c new file mode 100644 index 0000000..f9eef4f --- /dev/null +++ b/fw/stm8s/common/src/eeprom_unlock.c @@ -0,0 +1,7 @@ +#include "eeprom.h" + +void eeprom_unlock() { + FLASH_DUKR = FLASH_DUKR_KEY1; + FLASH_DUKR = FLASH_DUKR_KEY2; + while (!(FLASH_IAPSR & FLASH_IAPSR_DUL)); +} \ No newline at end of file diff --git a/fw/stm8s/common/src/eeprom_wait_busy.c b/fw/stm8s/common/src/eeprom_wait_busy.c new file mode 100644 index 0000000..4c3b057 --- /dev/null +++ b/fw/stm8s/common/src/eeprom_wait_busy.c @@ -0,0 +1,5 @@ +#include "eeprom.h" + +void eeprom_wait_busy() { + while (!(FLASH_IAPSR & FLASH_IAPSR_EOP)); +} \ No newline at end of file diff --git a/fw/stm8s/common/src/eeprom_write.c b/fw/stm8s/common/src/eeprom_write.c new file mode 100644 index 0000000..0d27547 --- /dev/null +++ b/fw/stm8s/common/src/eeprom_write.c @@ -0,0 +1,10 @@ +#include "eeprom.h" + +void eeprom_write(uint16_t addr, uint8_t *buf, uint16_t len) { + eeprom_unlock(); + for (uint16_t i = 0; i < len; i++, addr++) { + (*(volatile uint8_t *)(addr)) = buf[i]; + eeprom_wait_busy(); + } + eeprom_unlock(); +} \ No newline at end of file diff --git a/fw/stm8s/common/src/format_sprintf.c b/fw/stm8s/common/src/format_sprintf.c new file mode 100644 index 0000000..850b86d --- /dev/null +++ b/fw/stm8s/common/src/format_sprintf.c @@ -0,0 +1,12 @@ +#include +#include +#include +#include "format.h" + +void format_sprintf(uint8_t *str, uint8_t *format, ...) +{ + va_list args; + va_start(args, format); + format_vsprintf(str, format, args); + va_end(args); +} diff --git a/fw/stm8s/common/src/format_vsprintf.c b/fw/stm8s/common/src/format_vsprintf.c new file mode 100644 index 0000000..5934e8e --- /dev/null +++ b/fw/stm8s/common/src/format_vsprintf.c @@ -0,0 +1,114 @@ +#include +#include +#include +#include "uart_stdout.h" +#include "format.h" + +static const uint16_t dv[] = { + 10000, + 1000, + 100, + 10, + 1, +}; + +static uint8_t xtoa(uint8_t *str, uint16_t x, const uint16_t *dp) +{ + uint8_t len = 0; + uint8_t c; + uint16_t d; + if (x) + { + while (x < *dp) + ++dp; + do + { + d = *dp++; + c = '0'; + while (x >= d) + ++c, x -= d; + *str++ = c; + len++; + } while (!(d & 1)); + } + else + { + len++; + *str++ = (uint8_t)'0'; + } + + *str++ = 0x00; + return len; +} + +void format_vsprintf(uint8_t *str, uint8_t *format, va_list args) { + uint8_t c, len; + int16_t i; + uint8_t *string_temp; + uint8_t buff[6]; + + while (c = *format++) + { + bool zl = false; + uint8_t zs = 0; + uint8_t cnt = 0; + if (c == '%') + { + if (*format == (uint8_t)'0') + { + *format++; + zl = true; + } + if (*format >= (uint8_t)'1' && *format <= (uint8_t)'5') + { + zs = (uint8_t)*format - 0x30; + *format++; + } + + switch (c = *format++) + { + case '%': // % + *str++ = (uint8_t)'%'; + break; + case 's': // String + string_temp = va_arg(args, uint8_t *); + while (*string_temp != 0) + { + *str++ = *string_temp++; + } + break; + case 'c': // Char + *str++ = va_arg(args, uint8_t); + break; + case 'i': // 16 bit Integer + case 'u': // 16 bit Unsigned + i = va_arg(args, int16_t); + if (c == 'i' && i < 0) + i = -i, *str++ = (uint8_t)'-'; + len = xtoa(buff, (uint16_t)i, dv); + if (zs && (len < zs)) + { + while (++len <= zs) + *str++ = (zl) ? (uint8_t)'0' : (uint8_t)' '; + } + string_temp = &buff[0]; + for (uint8_t index = 0; index <= sizeof(buff); index++) + while (*string_temp != 0) + { + *str++ = *string_temp++; + } + break; + case 0: + return; + default: + goto bad_fmt; + } + } + else + { + bad_fmt: + *str++ = c; + } + } + *str++ = 0x00; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/lcd12864_clear.c b/fw/stm8s/common/src/lcd12864_clear.c new file mode 100644 index 0000000..aaaa354 --- /dev/null +++ b/fw/stm8s/common/src/lcd12864_clear.c @@ -0,0 +1,21 @@ +#include +#include "lcd12864.h" +#include "spi.h" + +void lcd12864_clear(uint8_t d) +{ + for (uint8_t page = 0; page < 8; page++) + { + uint8_t dlist1[] = { + 0x40 | LCD12864_PIX_START, + 0xB0 | page, + (0x10 | (0 >> 4)), + (0x0f & 0) | 0x04}; + lcd12864_command_list(dlist1, sizeof(dlist1)); + LCD12864_TRANSACTION_START + LCD12864_MODE_DATA + for (uint8_t idx = 0; idx < 128; idx++) + spi_write(d); + LCD12864_TRANSACTION_END + } +} diff --git a/fw/stm8s/common/src/lcd12864_clear_display.c b/fw/stm8s/common/src/lcd12864_clear_display.c new file mode 100644 index 0000000..273f692 --- /dev/null +++ b/fw/stm8s/common/src/lcd12864_clear_display.c @@ -0,0 +1,10 @@ + +#include +#include "lcd12864.h" +#include "spi.h" +#include "stm8s.h" + +void lcd12864_clear_display(bool i) +{ + lcd12864_command1(i ? LCD12864_CLEARON : LCD12864_CLEAROFF); +} \ No newline at end of file diff --git a/fw/stm8s/common/src/lcd12864_clear_segment.c b/fw/stm8s/common/src/lcd12864_clear_segment.c new file mode 100644 index 0000000..24fea5f --- /dev/null +++ b/fw/stm8s/common/src/lcd12864_clear_segment.c @@ -0,0 +1,13 @@ +#include +#include +#include "lcd12864.h" + +bool lcd12864_clear_segment(struct LCD12864_SEGMENT *segment) +{ + if (!segment) + return false; + + memset(segment->buffer, segment->clearChar, segment->bufferDepth); + + return true; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/lcd12864_command1.c b/fw/stm8s/common/src/lcd12864_command1.c new file mode 100644 index 0000000..2251fd3 --- /dev/null +++ b/fw/stm8s/common/src/lcd12864_command1.c @@ -0,0 +1,11 @@ +#include +#include "lcd12864.h" +#include "spi.h" + +void lcd12864_command1(uint8_t c) +{ + LCD12864_TRANSACTION_START + LCD12864_MODE_COMMAND + spi_write(c); + LCD12864_TRANSACTION_END +} diff --git a/fw/stm8s/common/src/lcd12864_command_list.c b/fw/stm8s/common/src/lcd12864_command_list.c new file mode 100644 index 0000000..9a37357 --- /dev/null +++ b/fw/stm8s/common/src/lcd12864_command_list.c @@ -0,0 +1,13 @@ +#include +#include "lcd12864.h" +#include "spi.h" +#include "stm8s.h" + +void lcd12864_command_list(const uint8_t *c, uint8_t n) +{ + LCD12864_TRANSACTION_START + LCD12864_MODE_COMMAND + for (uint8_t i = 0; i < n; i++) + spi_write(c[i]); + LCD12864_TRANSACTION_END +} \ No newline at end of file diff --git a/fw/stm8s/common/src/lcd12864_display_segment.c b/fw/stm8s/common/src/lcd12864_display_segment.c new file mode 100644 index 0000000..8107b42 --- /dev/null +++ b/fw/stm8s/common/src/lcd12864_display_segment.c @@ -0,0 +1,88 @@ +#include +#include +#include "lcd12864.h" +#include "font.h" +#include "spi.h" + +bool lcd12864_display_segment(struct LCD12864_SEGMENT *segment) +{ + + if (!segment) + return false; + + // allocate spi buffer (for page) + uint8_t spiDepth = segment->cols * ((segment->fontWidth * _FONT_W) + segment->fontSpacing); + uint8_t *spiBuffer = (uint8_t *)malloc(spiDepth); + if (!spiBuffer) + return false; + memset(spiBuffer, 0x00, spiDepth); + + uint8_t spiIdx, rb_now, rbit, rpix2, glyph = 0x00; + uint16_t glyphP = 0x00; + uint8_t seg_fH = segment->fontHeight; + // row by row + for (uint8_t row = 0; row < segment->rows; row++) + { + for (uint8_t fH_now = 0; fH_now < seg_fH; fH_now++) + { + uint8_t dlist1[] = { + 0x40 | LCD12864_PIX_START, + 0xB0 | (segment->page0 + row + fH_now), + (0x10 | (0 >> 4)), + (0x0f & 0x00)}; // |0x04 is offset for normal; 0x00 for upsidedown + lcd12864_command_list(dlist1, sizeof(dlist1)); + + spiIdx = 0; + rb_now = _FONT_H * fH_now; + for (uint8_t col = 0; col < segment->cols; col++) + { + glyph = segment->buffer[(row * segment->cols) + col]; +#ifdef FONTSET_MINI + if (glyph < 0x20 || glyph > 0x60) + glyph = 0x00; + else + glyph -= 0x20; +#endif + glyphP = glyph * _FONT_W; + for (uint8_t fw = 0; fw < _FONT_W; fw++) + { + uint8_t line = _font[glyphP + fw]; + if (seg_fH > 1) + { + uint8_t new_line = 0x00; + for (uint8_t idx_now = 0; idx_now < 8; idx_now++) + { + rbit = rb_now + idx_now; + rpix2 = (rbit / seg_fH); + if ((line & (1 << rpix2))) + new_line |= (1 << idx_now); + } + line = new_line; + } + for (uint8_t fW_now = 0; fW_now < segment->fontWidth; fW_now++) + { + spiBuffer[spiIdx++] = line; + } + } + for (uint8_t fs = 0; fs < segment->fontSpacing; fs++) + { + spiBuffer[spiIdx++] = 0x00; + } + } + // push page to display + LCD12864_TRANSACTION_START + LCD12864_MODE_DATA + for (uint8_t idx = 0; idx < spiDepth; idx++) + spi_write(spiBuffer[idx]); + LCD12864_TRANSACTION_END + } + } + + if (spiBuffer) + { + free(spiBuffer); + spiBuffer = NULL; + } + + return true; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/lcd12864_free_segment.c b/fw/stm8s/common/src/lcd12864_free_segment.c new file mode 100644 index 0000000..b8bf86a --- /dev/null +++ b/fw/stm8s/common/src/lcd12864_free_segment.c @@ -0,0 +1,19 @@ +#include +#include +#include "lcd12864.h" + +bool lcd12864_free_segment(struct LCD12864_SEGMENT *segment) +{ + if (segment->buffer) + { + free(segment->buffer); + segment->buffer = NULL; + } + if (segment) + { + free(segment); + segment = NULL; + } + + return true; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/lcd12864_init.c b/fw/stm8s/common/src/lcd12864_init.c new file mode 100644 index 0000000..2abbd3b --- /dev/null +++ b/fw/stm8s/common/src/lcd12864_init.c @@ -0,0 +1,63 @@ +#include +#include +#include "stm8s.h" +#include "lcd12864.h" +#include "spi.h" +#include "delay.h" + +bool lcd12864_init(bool reset) +{ + + /* Initialize CS pin HIGH */ + PC_DDR |= PIN4; + PC_CR1 |= PIN4; + PC_ODR |= PIN4; + + /* Initialize RES pin HIGH */ + PA_DDR |= PIN2; + PA_CR1 |= PIN2; + PA_ODR |= PIN2; + + /* Initialize DC pin LOW */ + PD_DDR |= PIN2; + PD_CR1 |= PIN2; + PD_ODR &= ~PIN2; + + /* Initialize spi */ + spi_init(); + + if (reset) + { + lcd12864_command1(LCD12864_RESET); // Clear Bias: bias 0 + PA_ODR |= PIN2; + delay_ms(2); + PA_ODR &= ~PIN2; + delay_ms(2); + PA_ODR |= PIN2; + delay_ms(10); + } + + //lcd12864_command1(0xA1); // Reverse direction (SEG131-SEG0) + //lcd12864_command1(0xC8); // SHL 1,COM63-COM0 + lcd12864_command1(0xA2); // Clear Bias: bias 0 + + // Power_Control 4 (internal converter ON) + 2 (internal regulator ON) + 1 (internal follower ON) + lcd12864_command1(0x28 | 0x07); // Power Control + + /* Regulator resistor select + ** 1+Rb/Ra Vo=(1+Rb/Ra)Vev Vev=(1-(63-a)/162)Vref 2.1v + ** 0 3.0 4 5.0(default) + ** 1 3.5 5 5.5 + ** 2 4 6 6 + ** 3 4.5 7 6.4 + */ + lcd12864_command1(0x20 | 0x05); // Regulator resistor + + // a(0-63) 32=default Vev=(1-(63-a)/162)Vref 2.1v + lcd12864_command1(0x81); // Set Contrast + lcd12864_command1(21); + lcd12864_command1(0x40); // DisplayLine=0 + lcd12864_clear(0x00); + lcd12864_command1(0xAF); // Display ON + return true; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/lcd12864_invert_display.c b/fw/stm8s/common/src/lcd12864_invert_display.c new file mode 100644 index 0000000..e52ecf8 --- /dev/null +++ b/fw/stm8s/common/src/lcd12864_invert_display.c @@ -0,0 +1,9 @@ +#include +#include "lcd12864.h" +#include "spi.h" +#include "stm8s.h" + +void lcd12864_invert_display(bool i) +{ + lcd12864_command1(i ? LCD12864_INVERTDISPLAY : LCD12864_NORMALDISPLAY); +} \ No newline at end of file diff --git a/fw/stm8s/common/src/lcd12864_new_segment.c b/fw/stm8s/common/src/lcd12864_new_segment.c new file mode 100644 index 0000000..ea188ee --- /dev/null +++ b/fw/stm8s/common/src/lcd12864_new_segment.c @@ -0,0 +1,31 @@ +#include +#include +#include +#include "lcd12864.h" +#include "font.h" + +struct LCD12864_SEGMENT *lcd12864_new_segment(uint8_t page0, uint8_t fontWidth, uint8_t fontHeight, uint8_t fontSpacing, uint8_t rows, uint8_t clearChar) +{ + + struct LCD12864_SEGMENT *pSeg = malloc(sizeof(struct LCD12864_SEGMENT)); + if (!pSeg) + return NULL; + + pSeg->page0 = page0; + pSeg->fontWidth = fontWidth; + pSeg->fontHeight = fontHeight; + pSeg->rows = rows; + pSeg->clearChar = clearChar; + pSeg->fontSpacing = fontSpacing; + pSeg->bufferDepth = (LCD12864_LCDWIDTH / ((fontWidth * _FONT_W) + fontSpacing)) * rows; + pSeg->cols = pSeg->bufferDepth / rows; + + if ((!pSeg->buffer) && !(pSeg->buffer = (uint8_t *)malloc(pSeg->bufferDepth))) + { + lcd12864_free_segment(pSeg); + return NULL; + } + + lcd12864_clear_segment(pSeg); + return pSeg; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/max31855k_init.c b/fw/stm8s/common/src/max31855k_init.c new file mode 100644 index 0000000..9bbab60 --- /dev/null +++ b/fw/stm8s/common/src/max31855k_init.c @@ -0,0 +1,20 @@ +#include "max31855k.h" +#include "stm8s.h" +#include "spi.h" + + +void max31855k_init() +{ + // CS (PA1) as output + PA_DDR |= PIN1; + PA_CR1 |= PIN1; + PA_ODR |= PIN1; // CS high + + // CLK PC5 as output + PC_DDR |= PIN5; + PC_CR1 |= PIN5; + PC_ODR |= PIN5; // CLK high + + /* Initialize spi */ + spi_init(); +} \ No newline at end of file diff --git a/fw/stm8s/common/src/max31855k_read.c b/fw/stm8s/common/src/max31855k_read.c new file mode 100644 index 0000000..cb5845b --- /dev/null +++ b/fw/stm8s/common/src/max31855k_read.c @@ -0,0 +1,30 @@ +#include +#include "delay.h" +#include "max31855k.h" +#include "stm8s.h" + +uint16_t max31855k_read() +{ + volatile uint16_t value = 0; + // I'm doing bit-bang spi here to return a 16bit uint... + // there is probably a cleaner way.. + MAX31855K_TRANSACTION_START + for (uint8_t i = 16; i >= 1; --i) + { + PC_ODR &= ~PIN5; + delay_us(100); + if (PC_IDR & PIN7) + value |= (1 << (i - 1)); + + PC_ODR |= PIN5; + } + // I stop after 16bits, it works... + MAX31855K_TRANSACTION_END + // With just 16 bits.. We only get a working or not working... + if (value & 0x01) + { + return 0; + } + // Ignoring +/- (always returns as postivive) + return ( value & 0x7fff ) >> 2; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/max6675_init.c b/fw/stm8s/common/src/max6675_init.c new file mode 100644 index 0000000..2b955c4 --- /dev/null +++ b/fw/stm8s/common/src/max6675_init.c @@ -0,0 +1,20 @@ +#include "max6675.h" +#include "delay.h" +#include "stm8s.h" +//#include "spi.h" + + +void max6675_init() +{ + // CS (PA1) as output + PA_DDR |= PIN1; + PA_CR1 |= PIN1; + PA_ODR |= PIN1; // CS high + + // CLK PC5 as output + PC_DDR |= PIN5; + PC_CR1 |= PIN5; + PC_ODR |= PIN5; // CLK high + + delay_ms(600); // gross startup delay +} \ No newline at end of file diff --git a/fw/stm8s/common/src/max6675_read.c b/fw/stm8s/common/src/max6675_read.c new file mode 100644 index 0000000..0db6bb6 --- /dev/null +++ b/fw/stm8s/common/src/max6675_read.c @@ -0,0 +1,25 @@ +#include +#include "delay.h" +#include "max6675.h" +#include "stm8s.h" + +uint16_t max6675_read() +{ + volatile uint16_t value = 0; + MAX6675_TRANSACTION_START + for (uint8_t i = 16; i >= 1; --i) + { + PC_ODR &= ~PIN5; + delay_us(100); + if (PC_IDR & PIN7) + value |= (1 << (i - 1)); + + PC_ODR |= PIN5; + } + MAX6675_TRANSACTION_END + if (value & 0x4) + { + return 0; + } + return (value >> 3); +} \ No newline at end of file diff --git a/fw/stm8s/common/src/oled_clear_display.c b/fw/stm8s/common/src/oled_clear_display.c new file mode 100644 index 0000000..68b0b14 --- /dev/null +++ b/fw/stm8s/common/src/oled_clear_display.c @@ -0,0 +1,23 @@ + +#include +#include "oled.h" +#include "spi.h" +#include "stm8s.h" + +void oled_clear_display(void) +{ + TRANSACTION_START + for (uint8_t page = 0; page < (OLED_LCDHEIGHT / 8); page++) + { + OLED_MODE_COMMAND + uint8_t dlist1[] = { + 0xB0 + page, + OLED_PIX_START, + 0x10}; + oled_command_list(dlist1, sizeof(dlist1)); + OLED_MODE_DATA + for (uint16_t i = 0; i < OLED_LCDWIDTH; i++) + spi_write(0x00); + } + TRANSACTION_END +} diff --git a/fw/stm8s/common/src/oled_clear_segment.c b/fw/stm8s/common/src/oled_clear_segment.c new file mode 100644 index 0000000..bf7648a --- /dev/null +++ b/fw/stm8s/common/src/oled_clear_segment.c @@ -0,0 +1,14 @@ + +#include +#include +#include "oled.h" + +bool oled_clear_segment(struct SEGMENT *segment) +{ + if (!segment) + return false; + + memset(segment->buffer, segment->clearChar, segment->bufferDepth); + + return true; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/oled_command1.c b/fw/stm8s/common/src/oled_command1.c new file mode 100644 index 0000000..e2f278e --- /dev/null +++ b/fw/stm8s/common/src/oled_command1.c @@ -0,0 +1,9 @@ +#include +#include "oled.h" +#include "spi.h" + +void oled_command1(uint8_t c) +{ + OLED_MODE_COMMAND + spi_write(c); +} diff --git a/fw/stm8s/common/src/oled_command_list.c b/fw/stm8s/common/src/oled_command_list.c new file mode 100644 index 0000000..df5ac79 --- /dev/null +++ b/fw/stm8s/common/src/oled_command_list.c @@ -0,0 +1,12 @@ + +#include +#include "oled.h" +#include "spi.h" +#include "stm8s.h" + +void oled_command_list(const uint8_t *c, uint8_t n) +{ + OLED_MODE_COMMAND + for (uint8_t i = 0; i < n; i++) + spi_write(c[i]); +} \ No newline at end of file diff --git a/fw/stm8s/common/src/oled_dim_display.c b/fw/stm8s/common/src/oled_dim_display.c new file mode 100644 index 0000000..b211996 --- /dev/null +++ b/fw/stm8s/common/src/oled_dim_display.c @@ -0,0 +1,19 @@ + +#include +#include +#include "oled.h" +#include "spi.h" +#include "stm8s.h" + +extern uint8_t _contrast; +/* +* Fix me +*/ +void oled_dim_display(bool dim) +{ + uint8_t contrast = (dim) ? 0 : _contrast; + TRANSACTION_START + oled_command1(SSD1306_SETCONTRAST); + oled_command1(contrast); + TRANSACTION_END +} \ No newline at end of file diff --git a/fw/stm8s/common/src/oled_display_segment.c b/fw/stm8s/common/src/oled_display_segment.c new file mode 100644 index 0000000..e0dbc60 --- /dev/null +++ b/fw/stm8s/common/src/oled_display_segment.c @@ -0,0 +1,90 @@ +#include +#include +#include "oled.h" +#include "font.h" +#include "spi.h" + +bool oled_display_segment(struct SEGMENT *segment) +{ + + if (!segment) + return false; + + // allocate spi buffer (for page) + uint8_t spiDepth = segment->cols * ((segment->fontWidth * _FONT_W) + segment->fontSpacing); + uint8_t *spiBuffer = (uint8_t *)malloc(spiDepth); + if (!spiBuffer) + return false; + memset(spiBuffer, 0x00, spiDepth); + + TRANSACTION_START + + uint8_t spiIdx, rb_now, rbit, rpix2, glyph = 0x00; + uint16_t glyphP = 0x00; + uint8_t seg_fH = segment->fontHeight; + // row by row + for (uint8_t row = 0; row < segment->rows; row++) + { + for (uint8_t fH_now = 0; fH_now < seg_fH; fH_now++) + { + + OLED_MODE_COMMAND + uint8_t dlist1[] = { + 0xB0 + segment->page0 + row + fH_now, + OLED_PIX_START, + 0x10}; + oled_command_list(dlist1, sizeof(dlist1)); + OLED_MODE_DATA + + spiIdx = 0; + rb_now = _FONT_H * fH_now; + for (uint8_t col = 0; col < segment->cols; col++) + { + glyph = segment->buffer[(row * segment->cols) + col]; +#ifdef FONTSET_MINI + if (glyph < 0x20 || glyph > 0x60) + glyph = 0x00; + else + glyph -= 0x20; +#endif + glyphP = glyph * _FONT_W; + for (uint8_t fw = 0; fw < _FONT_W; fw++) + { + uint8_t line = _font[glyphP + fw]; + if (seg_fH > 1) + { + uint8_t new_line = 0x00; + for (uint8_t idx_now = 0; idx_now < 8; idx_now++) + { + rbit = rb_now + idx_now; + rpix2 = (rbit / seg_fH); + if ((line & (1 << rpix2))) + new_line |= (1 << idx_now); + } + line = new_line; + } + for (uint8_t fW_now = 0; fW_now < segment->fontWidth; fW_now++) + { + spiBuffer[spiIdx++] = line; + } + } + for (uint8_t fs = 0; fs < segment->fontSpacing; fs++) + { + spiBuffer[spiIdx++] = 0x00; + } + } + // push page to display + for (uint8_t idx = 0; idx < spiDepth; idx++) + spi_write(spiBuffer[idx]); + } + } + + TRANSACTION_END + if (spiBuffer) + { + free(spiBuffer); + spiBuffer = NULL; + } + + return true; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/oled_free_segment.c b/fw/stm8s/common/src/oled_free_segment.c new file mode 100644 index 0000000..b062948 --- /dev/null +++ b/fw/stm8s/common/src/oled_free_segment.c @@ -0,0 +1,21 @@ + +#include +#include +#include "oled.h" + + +bool oled_free_segment(struct SEGMENT *segment) +{ + if (segment->buffer) + { + free(segment->buffer); + segment->buffer = NULL; + } + if (segment) + { + free(segment); + segment = NULL; + } + + return true; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/oled_init.c b/fw/stm8s/common/src/oled_init.c new file mode 100644 index 0000000..1f662bc --- /dev/null +++ b/fw/stm8s/common/src/oled_init.c @@ -0,0 +1,100 @@ + +#include +#include +#include "stm8s.h" +#include "oled.h" +#include "spi.h" +#include "delay.h" + +uint8_t _contrast; + +bool oled_init(uint8_t vcs, bool reset) +{ + + /* Initialize CS pin HIGH */ + PC_DDR |= PIN4; + PC_CR1 |= PIN4; + PC_ODR |= PIN4; + + /* Initialize RES pin LOW */ + PC_DDR |= PIN3; + PC_CR1 |= PIN3; + PC_ODR &= ~PIN3; + + /* Initialize DC pin LOW */ + PD_DDR |= PIN6; + PD_CR1 |= PIN6; + PD_ODR &= ~PIN6; + + /* Initialize spi */ + spi_init(); + + if (reset) + { + PC_ODR |= PIN3; + delay_ms(1); + PC_ODR &= ~PIN3; + delay_ms(10); + PC_ODR |= PIN3; + } + + TRANSACTION_START + + // Init sequence + static const uint8_t init1[] = { + SSD1306_DISPLAYOFF, // 0xAE + SSD1306_SETDISPLAYCLOCKDIV, // 0xD5 + 0x80, // the suggested ratio 0x80 + SSD1306_SETMULTIPLEX}; // 0xA8 + oled_command_list(init1, sizeof(init1)); + oled_command1(OLED_LCDHEIGHT - 1); + + static const uint8_t init2[] = { + SSD1306_SETDISPLAYOFFSET, // 0xD3 + 0x0, // no offset + SSD1306_SETSTARTLINE | 0x0, // line #0 + SSD1306_CHARGEPUMP}; // 0x8D + oled_command_list(init2, sizeof(init2)); + oled_command1((vcs == SSD1306_EXTERNALVCC) ? 0x10 : 0x14); + + static const uint8_t init3[] = { + SSD1306_SEGREMAP | 0x1, + SSD1306_COMSCANDEC}; + oled_command_list(init3, sizeof(init3)); + + uint8_t comPins = 0x02; + uint8_t contrast = 0x8F; + +#if ((OLED_LCDWIDTH == 128) && (OLED_LCDHEIGHT == 32)) + comPins = 0x02; + contrast = 0x8F; +#elif ((OLED_LCDWIDTH == 128) && (OLED_LCDHEIGHT == 64)) + comPins = 0x12; + contrast = (vcs == SSD1306_EXTERNALVCC) ? 0x9F : 0xCF; +#elif ((OLED_LCDWIDTH == 96) && (OLED_LCDHEIGHT == 16)) + comPins = 0x2; + contrast = (vcs == SSD1306_EXTERNALVCC) ? 0x10 : 0xAF; +#endif + + oled_command1(SSD1306_SETCOMPINS); + oled_command1(comPins); + oled_command1(SSD1306_SETCONTRAST); + oled_command1(contrast); + _contrast = contrast; + + oled_command1(SSD1306_SETPRECHARGE); // 0xd9 + oled_command1((vcs == SSD1306_EXTERNALVCC) ? 0x22 : 0xF1); + static const uint8_t init5[] = { + SSD1306_SETVCOMDETECT, // 0xDB + 0x40, + SSD1306_DISPLAYALLON_RESUME, // 0xA4 + SSD1306_NORMALDISPLAY, // 0xA6 + SSD1306_DEACTIVATE_SCROLL, + SSD1306_DISPLAYON}; // Main screen turn on + oled_command_list(init5, sizeof(init5)); + TRANSACTION_END + + oled_clear_display(); + + return true; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/oled_invert_display.c b/fw/stm8s/common/src/oled_invert_display.c new file mode 100644 index 0000000..92d67a2 --- /dev/null +++ b/fw/stm8s/common/src/oled_invert_display.c @@ -0,0 +1,12 @@ + +#include +#include "oled.h" +#include "spi.h" +#include "stm8s.h" + +void oled_invert_display(bool i) +{ + TRANSACTION_START + oled_command1(i ? SSD1306_INVERTDISPLAY : SSD1306_NORMALDISPLAY); + TRANSACTION_END +} \ No newline at end of file diff --git a/fw/stm8s/common/src/oled_new_segment.c b/fw/stm8s/common/src/oled_new_segment.c new file mode 100644 index 0000000..b036ca2 --- /dev/null +++ b/fw/stm8s/common/src/oled_new_segment.c @@ -0,0 +1,30 @@ +#include +#include +#include +#include "oled.h" +#include "font.h" + +struct SEGMENT *oled_new_segment(uint8_t page0, uint8_t fontWidth, uint8_t fontHeight, uint8_t fontSpacing, uint8_t rows, uint8_t clearChar) +{ + + struct SEGMENT *pSeg = malloc(sizeof(struct SEGMENT)); + if (!pSeg) + return NULL; + + pSeg->page0 = page0; + pSeg->fontWidth = fontWidth; + pSeg->fontHeight = fontHeight; + pSeg->rows = rows; + pSeg->clearChar = clearChar; + pSeg->fontSpacing = fontSpacing; + pSeg->bufferDepth = (OLED_LCDWIDTH / ((fontWidth * _FONT_W) + fontSpacing)) * rows; + pSeg->cols = pSeg->bufferDepth / rows; + if ((!pSeg->buffer) && !(pSeg->buffer = (uint8_t *)malloc(pSeg->bufferDepth))) + { + oled_free_segment(pSeg); + return NULL; + } + + oled_clear_segment(pSeg); + return pSeg; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/spi_init.c b/fw/stm8s/common/src/spi_init.c new file mode 100644 index 0000000..c603316 --- /dev/null +++ b/fw/stm8s/common/src/spi_init.c @@ -0,0 +1,9 @@ +#include "spi.h" +#include "stm8s.h" + +void spi_init() +{ + /* Initialize SPI master at 2mHz */ + //SPI_CR2 = SPI_CR2_SSM | SPI_CR2_SSI; + SPI_CR1 = SPI_CR1_MSTR; // | SPI_CR1_BR(0b010); +} \ No newline at end of file diff --git a/fw/stm8s/common/src/spi_read.c b/fw/stm8s/common/src/spi_read.c new file mode 100644 index 0000000..7e9f20e --- /dev/null +++ b/fw/stm8s/common/src/spi_read.c @@ -0,0 +1,10 @@ +#include "spi.h" +#include "stm8s.h" + +uint8_t spi_read() +{ + spi_write(0xFF); + while (!(SPI_SR & SPI_SR_RxNE)) + ; + return SPI_DR; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/spi_write.c b/fw/stm8s/common/src/spi_write.c new file mode 100644 index 0000000..1d532b1 --- /dev/null +++ b/fw/stm8s/common/src/spi_write.c @@ -0,0 +1,9 @@ +#include "spi.h" +#include "stm8s.h" + +void spi_write(uint8_t data) +{ + SPI_DR = data; + while (!(SPI_SR & SPI_SR_TXE)) + ; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/uart_init.c b/fw/stm8s/common/src/uart_init.c new file mode 100644 index 0000000..5993f2c --- /dev/null +++ b/fw/stm8s/common/src/uart_init.c @@ -0,0 +1,12 @@ +#include "uart.h" +#include "stm8s.h" + +void uart_init() { + /* round to nearest integer */ + uint16_t div = (F_CPU + BAUDRATE / 2) / BAUDRATE; + /* madness.. */ + UART1_BRR2 = ((div >> 8) & 0xF0) + (div & 0x0F); + UART1_BRR1 = div >> 4; + /* enable transmitter and receiver */ + UART1_CR2 = UART_CR2_TEN | UART_CR2_REN; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/uart_read.c b/fw/stm8s/common/src/uart_read.c new file mode 100644 index 0000000..d8f1ffa --- /dev/null +++ b/fw/stm8s/common/src/uart_read.c @@ -0,0 +1,7 @@ +#include "uart.h" +#include "stm8s.h" + +uint8_t uart_read() { + while (!(UART1_SR & UART_SR_RXNE)); + return UART1_DR; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/uart_stdin_getchar.c b/fw/stm8s/common/src/uart_stdin_getchar.c new file mode 100644 index 0000000..0e6ba44 --- /dev/null +++ b/fw/stm8s/common/src/uart_stdin_getchar.c @@ -0,0 +1,10 @@ +#include "uart.h" +#include "uart_stdin.h" + +/* + * Redirect stdin to UART + */ +int getchar() +{ + return uart_read(); +} \ No newline at end of file diff --git a/fw/stm8s/common/src/uart_stdout_putchar.c b/fw/stm8s/common/src/uart_stdout_putchar.c new file mode 100644 index 0000000..6b12fc1 --- /dev/null +++ b/fw/stm8s/common/src/uart_stdout_putchar.c @@ -0,0 +1,11 @@ +#include "uart.h" +#include "uart_stdout.h" + +/* + * Redirect stdout to UART + */ +int putchar(int c) +{ + uart_write(c); + return 0; +} \ No newline at end of file diff --git a/fw/stm8s/common/src/uart_stdout_putstring.c b/fw/stm8s/common/src/uart_stdout_putstring.c new file mode 100644 index 0000000..79acd60 --- /dev/null +++ b/fw/stm8s/common/src/uart_stdout_putstring.c @@ -0,0 +1,10 @@ +#include "uart.h" +#include "uart_stdout.h" + +void putstring(uint8_t *str) +{ + while (*str !=0) + { + putchar(*str++); + } +} \ No newline at end of file diff --git a/fw/stm8s/common/src/uart_write.c b/fw/stm8s/common/src/uart_write.c new file mode 100644 index 0000000..2b298fb --- /dev/null +++ b/fw/stm8s/common/src/uart_write.c @@ -0,0 +1,7 @@ +#include "uart.h" +#include "stm8s.h" + +void uart_write(uint8_t data) { + UART1_DR = data; + while (!(UART1_SR & UART_SR_TC)); +} diff --git a/fw/stm8s/ebake1/Makefile b/fw/stm8s/ebake1/Makefile new file mode 100644 index 0000000..1903936 --- /dev/null +++ b/fw/stm8s/ebake1/Makefile @@ -0,0 +1,47 @@ +DEVICE = stm8s103f3 +F_CPU ?= 16000000 + +## A directory for stm8s include file & lib +COMMONDIR = ../common + +## Get program name from enclosing directory name +PROGRAM = $(lastword $(subst /, ,$(CURDIR))) + +SOURCES=$(wildcard *.c) +OBJECTS=$(SOURCES:.c=.rel) +HEADERS=$(wildcard *.h $(COMMONDIR)/inc/*.h) + +CC = sdcc +PROGRAMMER = stlinkv2 + +DEFINES= +DEFINES += -DSTM8S103 + +CPPFLAGS = -I$(COMMONDIR)/inc +CFLAGS = --Werror --std-sdcc99 -mstm8 --opt-code-size $(DEFINES) -DF_CPU=$(F_CPU)UL +LDFLAGS = -lstm8 -mstm8 --out-fmt-ihx +LDLIBS = -L$(COMMONDIR) -lcommon.lib + +.PHONY: all clean flash + +all: $(PROGRAM).ihx + @echo $(SOURCES) + exit + @ls -la $(PROGRAM).ihx + +$(PROGRAM).ihx: $(OBJECTS) $(COMMONDIR)/common.lib + $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ + +$(COMMONDIR)/common.lib: + @make -C $(COMMONDIR) all + +%.rel : %.c $(HEADERS) + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + +CCOMPILEDFILES=$(SOURCES:.c=.asm) $(SOURCES:.c=.lst) $(SOURCES:.c=.rel) \ + $(SOURCES:.c=.rst) $(SOURCES:.c=.sym) +clean: + @rm -f $(PROGRAM).ihx $(PROGRAM).cdb $(PROGRAM).lk $(PROGRAM).map $(CCOMPILEDFILES) + +flash: $(PROGRAM).ihx + stm8flash -c $(PROGRAMMER) -p $(DEVICE) -w $(PROGRAM).ihx diff --git a/fw/stm8s/ebake1/defaults.h b/fw/stm8s/ebake1/defaults.h new file mode 100644 index 0000000..ca22225 --- /dev/null +++ b/fw/stm8s/ebake1/defaults.h @@ -0,0 +1,70 @@ +#ifndef DEFAULTS_H +#define DEFAULTS_H + +#define LED0_PORT PB +#define LED0_PIN PIN5 + +#define SSR0_PORT PD +#define SSR0_PIN PIN3 +#define SSR1_PORT PA +#define SSR1_PIN PIN3 + +#define NUMBER_OF_OUTPUTS 2 +#define PWM_PSCR 2 +#define PWM_CLK (F_CPU / 4) +#define PWM_FREQ 240 +#define PWM_ARR (PWM_CLK / PWM_FREQ) - 1 + +#define DEFAULT_TEMP_COOL 45 +#define DEFAULT_TEMP_HOT 50 +#define DEFAULT_MAX_TEMP 280 +#define DEFAULT_MAX_DEVIATION 20 + +enum +{ + SM_GO_NULL = 0, + SM_NULL, + SM_GO_RUN, + SM_RUN, + SM_START_COOLING, + SM_COOLING, + SM_DONE, + SM_DONE_Q +}; + +enum +{ + DISPLAY_CURRENT_SECOND = 0, + DISPLAY_COUNTDOWN_TIMER, + DISPLAY_PROFILE_TIMER, +}; + +enum +{ + ELEMENT_TOP = 0, + ELEMENT_BOTTOM +}; + +enum +{ + PROFILE_FIRST = 0, + PROFILE_MIDDLE, + PROFILE_LAST, +}; + +#define PID_P 2 +#define PID_I 3 +#define PID_D 0 + +#define BIAS_MAX 100 +#define BIAS_T 75 +#define BIAS_B 100 + +const uint8_t profile[3][2] = {{150,40},{190,10},{245,12}}; +#define PROFILE_LEN 3 +#define PROFILE_TEMP 0 +#define PROFILE_TIME 1 +#define PROFILE_OVERSHOOT 10 // FIX the PID, don't do this!! +#define PROFILE_ADJUST 1 + +#endif /* DEFAULTS_H */ \ No newline at end of file diff --git a/fw/stm8s/ebake1/main.c b/fw/stm8s/ebake1/main.c new file mode 100644 index 0000000..0a31415 --- /dev/null +++ b/fw/stm8s/ebake1/main.c @@ -0,0 +1,416 @@ +/* + * STM8S-TOASTER + * + * LED + * LED0 -> [11] PB5 (RED; HOT) + * SSR + * SSR0 -> [20] PD3 [tim2-ch2] > TOP + * SSR1 -> [10] PA3 [tim2-ch3] > BOTTOM +* SERVO + * SRV0 -> [13] ?? + * SW + * SW0 -> [12] PB4 + * OLED + * CS -> [14] PC4 + * DC -> [19] PD2 + * RES -> [06] PA2 + * SCK -> [15] PC5 [spi] + * MOSI -> [16] PC6 [spi] + * MAX6675 + * CS -> [05] PA1 + * SCK -> [15] PC5 [spi] + * MISO -> [17] PC7 [spi] + * BEEP + * BEEP -> [01] PD4 + * UART1 115200 8N1 + * TX -> [02] PD5 + * RX -> [03] PD6 + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "defaults.h" +#include "strings.h" +#include "pid.h" + +void setOutput(uint8_t value0, uint8_t value1) +{ + uint16_t ccr = ((PWM_CLK / PWM_FREQ) * value0) / 100; + if (ccr > 0) + { + TIM2_CCR2H = ccr >> 8; // Start off + TIM2_CCR2L = ccr & 0x00FF; + } + else + { + TIM2_CCR2H = 0; + TIM2_CCR2L = 0; + } + ccr = ((PWM_CLK / PWM_FREQ) * value1) / 100; + if (ccr > 0) + { + TIM2_CCR3H = ccr >> 8; // Start off + TIM2_CCR3L = ccr & 0x00FF; + } + else + { + TIM2_CCR3H = 0; + TIM2_CCR3L = 0; + } +} + +void setText(bool stdout, bool isTitle, struct LCD12864_SEGMENT *segment, uint8_t *format, ...) +{ + uint8_t *ptr = segment->buffer; + lcd12864_clear_segment(segment); + + if (isTitle) + { + *ptr++; + *ptr++; + } + + va_list args; + va_start(args, format); + format_vsprintf(ptr, format, args); + va_end(args); + + if (stdout) + { + if (isTitle) + *ptr++; + putstring((isTitle) ? "TITLE: '" : "STATUS: '"); + putstring(ptr); + putstring("'\r\n"); + } +} + +/* TIM1 Update/Overflow interrupt handling routine */ +static volatile uint16_t tim1Value; +void TIM1_update(void) __interrupt(TIM1_OVR_UIF_IRQ) +{ + tim1Value++; + TIM1_SR1 &= ~TIM_SR1_UIF; +} + +static volatile uint8_t extiButton; +ISR(gpio_isr, EXTI_PORTB_vector) +{ + extiButton++; +} + +int main(void) +{ + volatile uint16_t previousTicks = 0xffff; + volatile uint16_t previousSecond = 0xffff; + volatile uint8_t previousDutyCycle[NUMBER_OF_OUTPUTS] = {0, 0}; + volatile uint8_t currentDutyCycle[NUMBER_OF_OUTPUTS] = {0, 0}; + + volatile bool isHeating = false; + volatile uint8_t stateMachine = SM_GO_NULL; + volatile uint8_t beeps = 2; + volatile bool beepOn = false; + + volatile uint16_t profileTimer = 0; + volatile bool profileTimerRunning = false; + volatile uint8_t profileStep = 0; + volatile uint16_t desiredTemperature = 0; + + volatile uint8_t currentPidDutyCycle = 0; + volatile uint8_t previousPidDutyCycle = 0xff; + + volatile uint16_t countdownTimer = 0; + volatile uint8_t displayTime = DISPLAY_CURRENT_SECOND; + volatile uint8_t displayType = '+'; + + volatile pid_struct pid = { + 0, 0, //dstate, istate + 10, 0, //imax, imin + 99, 0, //max/min output limits + PID_P, PID_I, PID_D //p, i, d gains + }; + + /* LED setup */ + PORT(LED0_PORT, DDR) |= LED0_PIN; + PORT(LED0_PORT, CR1) |= LED0_PIN; + PORT(LED0_PORT, ODR) |= LED0_PIN; + + sim(); + clock_init(); + + /* TIM1 setup ~250ms */ + tim1Value = 0; + TIM1_PSCRH = 0x10; + TIM1_PSCRL = 0x00; + TIM1_ARRH = 0x03; + TIM1_ARRL = 0xd0; + TIM1_IER |= TIM_IER_UIE; + TIM1_CR1 |= TIM_CR1_CEN; + + /* TIM2/PWM setup */ + TIM2_PSCR = PWM_PSCR; + TIM2_ARRH = PWM_ARR >> 8; + TIM2_ARRL = PWM_ARR & 0x00FF; + PORT(SSR0_PORT, DDR) |= SSR0_PIN; + PORT(SSR0_PORT, CR1) |= SSR0_PIN; + TIM2_CCER1 |= TIM2_CCER1_CC2E; + TIM2_CCMR2 |= (TIM2_CCMR2_OC2M1 | TIM2_CCMR2_OC2M2); + TIM2_CCMR2 &= ~TIM2_CCMR2_OC2M0; + TIM2_CCR2H = 0; + TIM2_CCR2L = 0; + PORT(SSR1_PORT, DDR) |= SSR1_PIN; + PORT(SSR1_PORT, CR1) |= SSR1_PIN; + TIM2_CCER2 |= TIM2_CCER2_CC3E; + TIM2_CCMR3 |= (TIM2_CCMR2_OC2M1 | TIM2_CCMR2_OC2M2); + TIM2_CCMR3 &= ~TIM2_CCMR2_OC2M0; + TIM2_CCR3H = 0; + TIM2_CCR3L = 0; + TIM2_CR1 |= TIM2_CR1_CEN; + + /* EXTI1 BUTTON setup */ + extiButton = 0; + PB_CR2 = PIN4; + EXTI_CR1 &= ~0x0C; + EXTI_CR1 |= 0x08; + + rim(); + + + if (!lcd12864_init(true)) + { + while (1) + ; + } + struct LCD12864_SEGMENT *lcdTitle = lcd12864_new_segment(0, 1, 1, 1, 1, '#'); + struct LCD12864_SEGMENT *lcdTime = lcd12864_new_segment(1, 2, 2, 1, 1, ' '); + struct LCD12864_SEGMENT *lcdPowerTemp = lcd12864_new_segment(3, 2, 3, 1, 1, ' '); + struct LCD12864_SEGMENT *lcdStatus = lcd12864_new_segment(6, 1, 2, 1, 1, '#'); + + beep_init(); + uart_init(); + putstring("\r\n\r\n"); + + max6675_init(); + + do + { + volatile uint16_t currentTicks = tim1Value; + volatile uint8_t currentButton = extiButton; + volatile uint16_t currentTemperature = (max6675_read() / 4); + extiButton = 0; + volatile uint16_t currentSecond = (currentTicks / 4); + volatile bool isOneSecondInterval = false; + + if (previousTicks != currentTicks) + { + previousTicks = currentTicks; + if (previousSecond != currentSecond) + { + previousSecond = currentSecond; + isOneSecondInterval = true; + if (profileTimerRunning) + profileTimer++; + } + if (beeps) + { + if ((currentTicks % 2) == 0) + { + beep_on(); + beepOn = true; + } + else if (beepOn) + { + beep_off(); + beepOn = false; + beeps--; + } + } + } + + if (currentButton && stateMachine == SM_NULL) + { + stateMachine = SM_GO_RUN; + } + else if (currentButton && stateMachine == SM_DONE_Q) + { + stateMachine = SM_GO_NULL; + } + else if (currentButton && stateMachine > SM_NULL && stateMachine < SM_START_COOLING) + { + beeps += 2; + stateMachine = SM_START_COOLING; + } + else if (currentTemperature > DEFAULT_TEMP_HOT && stateMachine < SM_GO_RUN) + { + setText(true, false, lcdStatus, "%s %uC", ST_START_HOT, currentTemperature); + beeps += 2; + stateMachine = SM_START_COOLING; + } + + if (currentTemperature == 0 && stateMachine > SM_GO_NULL) + { + setText(true, false, lcdStatus, "%s", ST_THERMOCOUPLE_ERROR); + beeps += 4; + stateMachine = SM_START_COOLING; + } + else if (currentTemperature >= DEFAULT_TEMP_HOT) + { + PORT(LED0_PORT, ODR) &= ~LED0_PIN; + } + else if (currentTemperature < DEFAULT_TEMP_COOL) + { + PORT(LED0_PORT, ODR) |= LED0_PIN; + } + + if (currentTemperature > DEFAULT_MAX_TEMP && stateMachine < SM_START_COOLING) + { + setText(true, false, lcdStatus, "%s", ST_OVERTEMP); + beeps += 4; + stateMachine = SM_START_COOLING; + } + + switch (stateMachine) + { + case SM_GO_NULL: + setText(true, true, lcdTitle, " %s %s", ST_TITLE, ST_VER); + setText(true, false, lcdStatus, "%s", ST_PRESS_BUTTON_TO_START); + isHeating = false; + profileStep = 0; + displayTime = DISPLAY_CURRENT_SECOND; + beeps = 0; + beep_off(); + stateMachine = SM_NULL; + + case SM_NULL: + break; + + case SM_GO_RUN: + setText(true, true, lcdTitle, " %s", ST_RUN); + lcd12864_clear_segment(lcdStatus); + profileTimer = 0; + profileTimerRunning = false; + desiredTemperature = profile[profileStep][PROFILE_TEMP] + PROFILE_OVERSHOOT; + displayTime = DISPLAY_PROFILE_TIMER; + beeps += 1; + isHeating = true; + stateMachine = SM_RUN; + + case SM_RUN: + if (!isOneSecondInterval) + break; + + currentPidDutyCycle = update_pid(&pid, pid_guard(desiredTemperature, currentTemperature), currentTemperature); + + if ((profileTimerRunning == false) && (profile[profileStep][PROFILE_TEMP] - PROFILE_ADJUST <= currentTemperature)) + { + desiredTemperature = profile[profileStep][PROFILE_TEMP] + PROFILE_ADJUST; + profileTimer = 0; + profileTimerRunning = true; + } + if ((profileTimerRunning == true) && (profile[profileStep][PROFILE_TIME] <= profileTimer)) + { + beeps += 1; + if (++profileStep == PROFILE_LEN) + stateMachine = SM_START_COOLING; + else + stateMachine = SM_GO_RUN; + } + break; + + case SM_START_COOLING: + setText(true, true, lcdTitle, " %s", ST_COOLING); + isHeating = false; + profileTimerRunning = true; + profileTimer = 0; + displayTime = DISPLAY_PROFILE_TIMER; + beeps += 2; + stateMachine = SM_COOLING; + + case SM_COOLING: + if (isOneSecondInterval) + { + if (currentTemperature < DEFAULT_TEMP_HOT && profileTimer >= 1) + { + isHeating = false; + stateMachine = SM_DONE; + } + } + break; + + case SM_DONE: + setText(true, true, lcdTitle, " %s", ST_DONE); + setText(true, false, lcdStatus, "%s", ST_PRESS_TO_RESTART); + isHeating = false; + beeps += 6; + stateMachine = SM_DONE_Q; + + case SM_DONE_Q: + + break; + } + + if (isHeating) + { + if (previousPidDutyCycle != currentPidDutyCycle) + { + previousPidDutyCycle = currentPidDutyCycle; + currentDutyCycle[ELEMENT_TOP] = currentPidDutyCycle * BIAS_T / BIAS_MAX; + currentDutyCycle[ELEMENT_BOTTOM] = currentPidDutyCycle * BIAS_B / BIAS_MAX; + setOutput(currentDutyCycle[ELEMENT_TOP], currentDutyCycle[ELEMENT_BOTTOM]); + } + } + else + { + if (previousPidDutyCycle != 0) + { + setOutput(0, 0); + previousDutyCycle[ELEMENT_TOP] = 0; + previousDutyCycle[ELEMENT_BOTTOM] = 0; + } + } + + if (isOneSecondInterval) + { + lcd12864_clear_segment(lcdTime); + lcd12864_clear_segment(lcdPowerTemp); + + if (stateMachine == SM_DONE_Q) + { /* + format_sprintf(oledTime->buffer, ((learningFailed) ? ST_FAILED : ((learningAborted) ? ST_ABORTED : ST_SUCCESS))); + if (learningFailed) + format_sprintf(oledPowerTemp->buffer, "%s #%04u", ST_ERROR, learningFailed); + else if (!learningAborted) + format_sprintf(oledPowerTemp->buffer, "%2u %3u %3u", learnedDutyCycle, learnedInertia, learnedInsulation); + */ + } + else + { + uint16_t dT = (displayTime == DISPLAY_CURRENT_SECOND) ? currentSecond : ((displayTime == DISPLAY_COUNTDOWN_TIMER) ? countdownTimer : profileTimer); + uint16_t lm = (dT / 60); + uint16_t tm = (lm % 60); + uint8_t th = (lm / 60); + uint8_t ts = (dT % 60); + format_sprintf(lcdTime->buffer, "%c %02u:%02u:%02u", (uint8_t)displayType, th, tm, ts); + format_sprintf(lcdPowerTemp->buffer, "--:-- %3u C", currentTemperature); + if (isHeating) + format_sprintf(lcdPowerTemp->buffer, "%02u:%02u", currentDutyCycle[ELEMENT_TOP], currentDutyCycle[ELEMENT_BOTTOM]); + } + + lcd12864_display_segment(lcdTitle); + lcd12864_display_segment(lcdTime); + lcd12864_display_segment(lcdPowerTemp); + lcd12864_display_segment(lcdStatus); + } + + wfi(); + } while (1); +} diff --git a/fw/stm8s/ebake1/pid.c b/fw/stm8s/ebake1/pid.c new file mode 100644 index 0000000..d14802d --- /dev/null +++ b/fw/stm8s/ebake1/pid.c @@ -0,0 +1,47 @@ +#include "pid.h" + +int8_t update_pid(pid_struct *pid, int8_t error, uint8_t position) +{ + int16_t pterm, iterm, dterm, res; + + //proportional calculation + pterm = pid->pgain * error; + + // update integrator state + pid->istate += error; + if (pid->istate > pid->imax) + pid->istate = pid->imax; + else if (pid->istate < pid->imin) + pid->istate = pid->imin; + + //integral calcucation + iterm = pid->igain * pid->istate; + + //differential calculation + dterm = pid->dgain * (position - pid->dstate); + + pid->dstate = position; + + res = pterm + iterm - dterm; + //cut by limits + if (res > pid->vmax) + res = pid->vmax; + else if (res < pid->vmin) + res = pid->vmin; + + return res; +} + +int8_t pid_guard(uint16_t desired, uint16_t current) +{ + + int16_t temp_error; + + temp_error = desired - current; + if (temp_error > 127) + temp_error = 127; + else if (temp_error < -127) + temp_error = -127; + + return (int8_t)temp_error; +} \ No newline at end of file diff --git a/fw/stm8s/ebake1/pid.h b/fw/stm8s/ebake1/pid.h new file mode 100644 index 0000000..92c217f --- /dev/null +++ b/fw/stm8s/ebake1/pid.h @@ -0,0 +1,18 @@ +#ifndef PID_H +#define PID_H + +#include + +typedef struct { + int8_t dstate; //last position input + int8_t istate; //integrator state + int8_t imax, imin; //integratir limits + int8_t vmax,vmin; //result limits + int8_t pgain, igain, dgain; +} pid_struct; + + +int8_t update_pid(pid_struct *pid, int8_t error, uint8_t position); +int8_t pid_guard(uint16_t desired, uint16_t current); + +#endif /* PID_H */ \ No newline at end of file diff --git a/fw/stm8s/ebake1/strings.h b/fw/stm8s/ebake1/strings.h new file mode 100644 index 0000000..a1e4112 --- /dev/null +++ b/fw/stm8s/ebake1/strings.h @@ -0,0 +1,28 @@ +#ifndef STRINGS_H +#define STRINGS_H + +#include + +const uint8_t ST_TITLE[] = "EASYBAKE"; +const uint8_t ST_VER[] = "V1.4"; + +const uint8_t ST_PRESS_BUTTON_TO_START[] = "PRESS TO START"; +const uint8_t ST_PRESS_TO_RESTART[] = "PRESS TO RESTART"; +const uint8_t ST_START_HOT[] = "START HOT"; + +const uint8_t ST_RUN[] = "RUN"; +const uint8_t ST_COOLING[] = "COOLING"; +const uint8_t ST_DONE[] = "DONE"; + +const uint8_t ST_THERMOCOUPLE_ERROR[] = "THERMOCOUPLE ERROR"; +const uint8_t ST_UNABLE_TO_REACH[] = "UNABLE TO REACH"; +const uint8_t ST_OVERTEMP[] = "OVERTEMP"; +const uint8_t ST_UNDERTEMP[] = "UNDERTEMP"; +const uint8_t ST_UNABLE_TO_COOL[] = "UNABLE TO COOL"; + +const uint8_t ST_ERROR[] = "ERROR"; +const uint8_t ST_FAILED[] = "FAILED"; +const uint8_t ST_ABORTED[] = "ABORTED"; +const uint8_t ST_SUCCESS[] = "SUCCESS"; + +#endif /* STRINGS_H */ \ No newline at end of file diff --git a/fw/stm8s/test1/Makefile b/fw/stm8s/test1/Makefile new file mode 100644 index 0000000..1903936 --- /dev/null +++ b/fw/stm8s/test1/Makefile @@ -0,0 +1,47 @@ +DEVICE = stm8s103f3 +F_CPU ?= 16000000 + +## A directory for stm8s include file & lib +COMMONDIR = ../common + +## Get program name from enclosing directory name +PROGRAM = $(lastword $(subst /, ,$(CURDIR))) + +SOURCES=$(wildcard *.c) +OBJECTS=$(SOURCES:.c=.rel) +HEADERS=$(wildcard *.h $(COMMONDIR)/inc/*.h) + +CC = sdcc +PROGRAMMER = stlinkv2 + +DEFINES= +DEFINES += -DSTM8S103 + +CPPFLAGS = -I$(COMMONDIR)/inc +CFLAGS = --Werror --std-sdcc99 -mstm8 --opt-code-size $(DEFINES) -DF_CPU=$(F_CPU)UL +LDFLAGS = -lstm8 -mstm8 --out-fmt-ihx +LDLIBS = -L$(COMMONDIR) -lcommon.lib + +.PHONY: all clean flash + +all: $(PROGRAM).ihx + @echo $(SOURCES) + exit + @ls -la $(PROGRAM).ihx + +$(PROGRAM).ihx: $(OBJECTS) $(COMMONDIR)/common.lib + $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ + +$(COMMONDIR)/common.lib: + @make -C $(COMMONDIR) all + +%.rel : %.c $(HEADERS) + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + +CCOMPILEDFILES=$(SOURCES:.c=.asm) $(SOURCES:.c=.lst) $(SOURCES:.c=.rel) \ + $(SOURCES:.c=.rst) $(SOURCES:.c=.sym) +clean: + @rm -f $(PROGRAM).ihx $(PROGRAM).cdb $(PROGRAM).lk $(PROGRAM).map $(CCOMPILEDFILES) + +flash: $(PROGRAM).ihx + stm8flash -c $(PROGRAMMER) -p $(DEVICE) -w $(PROGRAM).ihx diff --git a/fw/stm8s/test1/defaults.h b/fw/stm8s/test1/defaults.h new file mode 100644 index 0000000..3da6d27 --- /dev/null +++ b/fw/stm8s/test1/defaults.h @@ -0,0 +1,17 @@ +#ifndef DEFAULTS_H +#define DEFAULTS_H + +#define LED0_PORT PB +#define LED0_PIN PIN5 + +#define SSR0_PORT PD +#define SSR0_PIN PIN3 +#define SSR1_PORT PA +#define SSR1_PIN PIN3 + +#define PWM_PSCR 2 +#define PWM_CLK (F_CPU / 4) +#define PWM_FREQ 240 +#define PWM_ARR (PWM_CLK / PWM_FREQ) - 1 + +#endif /* DEFAULTS_H */ \ No newline at end of file diff --git a/fw/stm8s/test1/main.c b/fw/stm8s/test1/main.c new file mode 100644 index 0000000..2908f37 --- /dev/null +++ b/fw/stm8s/test1/main.c @@ -0,0 +1,193 @@ +/* + * STM8S-TOASTER + * + * LED + * LED0 -> PB5 (RED; HOT) + * SSR + * SSR0 -> PD3 [tim2-ch2] > TOP + * SSR1 -> PA3 [tim2-ch3] > BOTTOM + * SW + * SW0 -> PB4 + * OLED + * CS -> PC4 + * DC -> PD2 + * RES -> PC3 + * SCK -> PC5 [spi] + * MOSI -> PC6 [spi] + * MAX6675 + * CS -> PA1 + * SCK -> PC5 [spi] + * MISO -> PC7 [spi] + * BEEP + * BEEP -> PD4 + * UART1 + * TX -> PD5 + * RX -> PD6 + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "defaults.h" + +/* TIM1 Update/Overflow interrupt handling routine */ +static volatile uint16_t tim1Value; +void TIM1_update(void) __interrupt(TIM1_OVR_UIF_IRQ) +{ + tim1Value++; + TIM1_SR1 &= ~TIM_SR1_UIF; +} + +void setOutput(uint8_t value0, uint8_t value1) +{ + uint16_t ccr = ((PWM_CLK / PWM_FREQ) * value0) / 100; + if (ccr > 0) + { + TIM2_CCR2H = ccr >> 8; // Start off + TIM2_CCR2L = ccr & 0x00FF; + } + else + { + TIM2_CCR2H = 0; + TIM2_CCR2L = 0; + } + ccr = ((PWM_CLK / PWM_FREQ) * value1) / 100; + if (ccr > 0) + { + TIM2_CCR3H = ccr >> 8; // Start off + TIM2_CCR3L = ccr & 0x00FF; + } + else + { + TIM2_CCR3H = 0; + TIM2_CCR3L = 0; + } +} + +int main(void) +{ + volatile uint16_t previousTicks = 0xffff; + volatile uint16_t previousSecond = 0xffff; + volatile uint8_t beeps = 2; + volatile bool beepOn = false; + + sim(); + clock_init(); + uart_init(); + max6675_init(); + beep_init(); + + /* LED setup */ + PORT(LED0_PORT, DDR) |= LED0_PIN; + PORT(LED0_PORT, CR1) |= LED0_PIN; + + /* TIM1 setup ~250ms */ + tim1Value = 0; + TIM1_PSCRH = 0x10; + TIM1_PSCRL = 0x00; + TIM1_ARRH = 0x03; + TIM1_ARRL = 0xd0; + TIM1_IER |= TIM_IER_UIE; + TIM1_CR1 |= TIM_CR1_CEN; + + /* TIM2/PWM setup */ + TIM2_PSCR = PWM_PSCR; + TIM2_ARRH = PWM_ARR >> 8; + TIM2_ARRL = PWM_ARR & 0x00FF; + PORT(SSR0_PORT, DDR) |= SSR0_PIN; + PORT(SSR0_PORT, CR1) |= SSR0_PIN; + TIM2_CCER1 |= TIM2_CCER1_CC2E; + TIM2_CCMR2 |= (TIM2_CCMR2_OC2M1 | TIM2_CCMR2_OC2M2); + TIM2_CCMR2 &= ~TIM2_CCMR2_OC2M0; + TIM2_CCR2H = 0; + TIM2_CCR2L = 0; + PORT(SSR1_PORT, DDR) |= SSR1_PIN; + PORT(SSR1_PORT, CR1) |= SSR1_PIN; + TIM2_CCER2 |= TIM2_CCER2_CC3E; + TIM2_CCMR3 |= (TIM2_CCMR2_OC2M1 | TIM2_CCMR2_OC2M2); + TIM2_CCMR3 &= ~TIM2_CCMR2_OC2M0; + TIM2_CCR3H = 0; + TIM2_CCR3L = 0; + TIM2_CR1 |= TIM2_CR1_CEN; + + rim(); + + putstring("\r\nTEST1\r\n\r\n"); + setOutput(25, 50); + + lcd12864_init(true); + struct LCD12864_SEGMENT *lcdTitle = lcd12864_new_segment(0, 1, 1, 1, 1, '#'); + struct LCD12864_SEGMENT *lcdTime = lcd12864_new_segment(1, 2, 2, 1, 1, ' '); + struct LCD12864_SEGMENT *lcdPowerTemp = lcd12864_new_segment(3, 2, 3, 1, 1, ' '); + struct LCD12864_SEGMENT *lcdStatus = lcd12864_new_segment(6, 1, 2, 1, 1, '#'); + + do + { + volatile uint16_t currentTicks = tim1Value; + volatile uint16_t currentSecond = (currentTicks / 4); + volatile bool isOneSecondInterval = false; + + if (previousTicks != currentTicks) + { + previousTicks = currentTicks; + if (previousSecond != currentSecond) + { + previousSecond = currentSecond; + isOneSecondInterval = true; + } + if (beeps) + { + if ((currentTicks % 2) == 0) + { + beep_on(); + PORT(LED0_PORT, ODR) &= ~LED0_PIN; + beepOn = true; + } + else if (beepOn) + { + beep_off(); + PORT(LED0_PORT, ODR) |= LED0_PIN; + beepOn = false; + beeps--; + } + } + } + + if (isOneSecondInterval) + { + + uint16_t dT = currentSecond; + volatile uint16_t currentTemperatureRaw = max6675_read(); + volatile uint16_t currentTemperature = currentTemperatureRaw / 4; + volatile uint16_t currentTemperaturePoint = (currentTemperatureRaw - (currentTemperature * 4)) * 100; + uint16_t lm = (dT / 60); + uint16_t tm = (lm % 60); + uint8_t th = (lm / 60); + uint8_t ts = (dT % 60); + + format_sprintf(lcdTime->buffer, "? %02u:%02u:%02u", th, tm, ts); + format_sprintf(lcdPowerTemp->buffer, "--:-- %3u C", currentTemperature); + + uint8_t *ptr = lcdTime->buffer; + putstring(ptr); + putstring(" "); + ptr = lcdPowerTemp->buffer; + putstring(ptr); + putstring("\r\n"); + + lcd12864_display_segment(lcdTitle); + lcd12864_display_segment(lcdTime); + lcd12864_display_segment(lcdPowerTemp); + lcd12864_display_segment(lcdStatus); + } + + wfi(); + } while (1); +} diff --git a/hw/.gitignore b/hw/.gitignore new file mode 100644 index 0000000..fd7dcd4 --- /dev/null +++ b/hw/.gitignore @@ -0,0 +1,30 @@ +# ---> KiCad +# For PCBs designed using KiCad: http://www.kicad-pcb.org/ +# Format documentation: http://kicad-pcb.org/help/file-formats/ + +# Temporary files +*.000 +*.bak +*.bck +*.kicad_pcb-bak +*~ +_autosave-* +*.tmp +*-rescue.lib +*-save.pro +*-save.kicad_pcb + +# Autorouter files (exported from Pcbnew) +*.dsn +*.ses + +# Exported BOM files +*.xml +*.csv + +# Kicad extra files +fp-info-cache +_tmp_gerber.* +*-bak +!*-cache.lib +*-rescue.dcm diff --git a/hw/v1/bom/ibom.html b/hw/v1/bom/ibom.html new file mode 100644 index 0000000..1565504 --- /dev/null +++ b/hw/v1/bom/ibom.html @@ -0,0 +1,3428 @@ + + + + + + + Interactive BOM for KiCAD + + + + + +
+
+
+ +
+ + + +
+
+ + + +
+
+ + + +
+ + +
+
+ + + + + + + + + + + +
+ Title + + Revision +
+ Company + + Date +
+
+
+
+
+
+ + +
+ +
+
+
+ + + + + +
+
+
+
+
+ + + + +
+
+
+
+ + + + +
+
+
+
+
+ + + diff --git a/hw/v1/gerbers/v1-B_Cu.gbr b/hw/v1/gerbers/v1-B_Cu.gbr new file mode 100644 index 0000000..c77346a --- /dev/null +++ b/hw/v1/gerbers/v1-B_Cu.gbr @@ -0,0 +1,2454 @@ +G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.8-0-10_14)* +G04 #@! TF.CreationDate,2021-03-05T16:46:23-05:00* +G04 #@! TF.ProjectId,v1,76312e6b-6963-4616-945f-706362585858,rev?* +G04 #@! TF.SameCoordinates,Original* +G04 #@! TF.FileFunction,Copper,L2,Bot* +G04 #@! TF.FilePolarity,Positive* +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.8-0-10_14)) date 2021-03-05 16:46:23* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +G04 #@! TA.AperFunction,SMDPad,CuDef* +%ADD10R,1.500000X2.800000*% +G04 #@! TD* +G04 #@! TA.AperFunction,SMDPad,CuDef* +%ADD11R,3.800000X2.000000*% +G04 #@! TD* +G04 #@! TA.AperFunction,SMDPad,CuDef* +%ADD12R,1.500000X2.000000*% +G04 #@! TD* +G04 #@! TA.AperFunction,SMDPad,CuDef* +%ADD13R,1.200000X1.200000*% +G04 #@! TD* +G04 #@! TA.AperFunction,SMDPad,CuDef* +%ADD14R,1.600000X1.500000*% +G04 #@! TD* +G04 #@! TA.AperFunction,SMDPad,CuDef* +%ADD15R,0.800000X0.900000*% +G04 #@! TD* +G04 #@! TA.AperFunction,ComponentPad* +%ADD16O,1.700000X1.700000*% +G04 #@! TD* +G04 #@! TA.AperFunction,ComponentPad* +%ADD17R,1.700000X1.700000*% +G04 #@! TD* +G04 #@! TA.AperFunction,ComponentPad* +%ADD18O,3.160000X4.100000*% +G04 #@! TD* +G04 #@! TA.AperFunction,SMDPad,CuDef* +%ADD19R,0.300000X1.250000*% +G04 #@! TD* +G04 #@! TA.AperFunction,SMDPad,CuDef* +%ADD20R,2.000000X3.000000*% +G04 #@! TD* +G04 #@! TA.AperFunction,SMDPad,CuDef* +%ADD21R,0.450000X0.600000*% +G04 #@! TD* +G04 #@! TA.AperFunction,SMDPad,CuDef* +%ADD22R,2.300000X2.300000*% +G04 #@! TD* +G04 #@! TA.AperFunction,ComponentPad* +%ADD23C,0.762000*% +G04 #@! TD* +G04 #@! TA.AperFunction,SMDPad,CuDef* +%ADD24R,0.990600X1.549400*% +G04 #@! TD* +G04 #@! TA.AperFunction,ViaPad* +%ADD25C,0.508000*% +G04 #@! TD* +G04 #@! TA.AperFunction,Conductor* +%ADD26C,0.304000*% +G04 #@! TD* +G04 #@! TA.AperFunction,Conductor* +%ADD27C,0.152400*% +G04 #@! TD* +G04 APERTURE END LIST* +D10* +X169418000Y-108204000D03* +X166878000Y-108204000D03* +X164338000Y-108204000D03* +X161798000Y-108204000D03* +X159258000Y-108204000D03* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X161363800Y-90321000D02* +X161063800Y-90321000D01* +G75* +G02* +X160913800Y-90171000I0J150000D01* +G01* +X160913800Y-88521000D01* +G75* +G02* +X161063800Y-88371000I150000J0D01* +G01* +X161363800Y-88371000D01* +G75* +G02* +X161513800Y-88521000I0J-150000D01* +G01* +X161513800Y-90171000D01* +G75* +G02* +X161363800Y-90321000I-150000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X160093800Y-90321000D02* +X159793800Y-90321000D01* +G75* +G02* +X159643800Y-90171000I0J150000D01* +G01* +X159643800Y-88521000D01* +G75* +G02* +X159793800Y-88371000I150000J0D01* +G01* +X160093800Y-88371000D01* +G75* +G02* +X160243800Y-88521000I0J-150000D01* +G01* +X160243800Y-90171000D01* +G75* +G02* +X160093800Y-90321000I-150000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X158823800Y-90321000D02* +X158523800Y-90321000D01* +G75* +G02* +X158373800Y-90171000I0J150000D01* +G01* +X158373800Y-88521000D01* +G75* +G02* +X158523800Y-88371000I150000J0D01* +G01* +X158823800Y-88371000D01* +G75* +G02* +X158973800Y-88521000I0J-150000D01* +G01* +X158973800Y-90171000D01* +G75* +G02* +X158823800Y-90321000I-150000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X157553800Y-90321000D02* +X157253800Y-90321000D01* +G75* +G02* +X157103800Y-90171000I0J150000D01* +G01* +X157103800Y-88521000D01* +G75* +G02* +X157253800Y-88371000I150000J0D01* +G01* +X157553800Y-88371000D01* +G75* +G02* +X157703800Y-88521000I0J-150000D01* +G01* +X157703800Y-90171000D01* +G75* +G02* +X157553800Y-90321000I-150000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X157553800Y-95271000D02* +X157253800Y-95271000D01* +G75* +G02* +X157103800Y-95121000I0J150000D01* +G01* +X157103800Y-93471000D01* +G75* +G02* +X157253800Y-93321000I150000J0D01* +G01* +X157553800Y-93321000D01* +G75* +G02* +X157703800Y-93471000I0J-150000D01* +G01* +X157703800Y-95121000D01* +G75* +G02* +X157553800Y-95271000I-150000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X158823800Y-95271000D02* +X158523800Y-95271000D01* +G75* +G02* +X158373800Y-95121000I0J150000D01* +G01* +X158373800Y-93471000D01* +G75* +G02* +X158523800Y-93321000I150000J0D01* +G01* +X158823800Y-93321000D01* +G75* +G02* +X158973800Y-93471000I0J-150000D01* +G01* +X158973800Y-95121000D01* +G75* +G02* +X158823800Y-95271000I-150000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X160093800Y-95271000D02* +X159793800Y-95271000D01* +G75* +G02* +X159643800Y-95121000I0J150000D01* +G01* +X159643800Y-93471000D01* +G75* +G02* +X159793800Y-93321000I150000J0D01* +G01* +X160093800Y-93321000D01* +G75* +G02* +X160243800Y-93471000I0J-150000D01* +G01* +X160243800Y-95121000D01* +G75* +G02* +X160093800Y-95271000I-150000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X161363800Y-95271000D02* +X161063800Y-95271000D01* +G75* +G02* +X160913800Y-95121000I0J150000D01* +G01* +X160913800Y-93471000D01* +G75* +G02* +X161063800Y-93321000I150000J0D01* +G01* +X161363800Y-93321000D01* +G75* +G02* +X161513800Y-93471000I0J-150000D01* +G01* +X161513800Y-95121000D01* +G75* +G02* +X161363800Y-95271000I-150000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +D11* +X137718800Y-94716200D03* +D12* +X137718800Y-101016200D03* +X135418800Y-101016200D03* +X140018800Y-101016200D03* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X169420400Y-87156000D02* +X169220400Y-87156000D01* +G75* +G02* +X169120400Y-87056000I0J100000D01* +G01* +X169120400Y-85781000D01* +G75* +G02* +X169220400Y-85681000I100000J0D01* +G01* +X169420400Y-85681000D01* +G75* +G02* +X169520400Y-85781000I0J-100000D01* +G01* +X169520400Y-87056000D01* +G75* +G02* +X169420400Y-87156000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X168770400Y-87156000D02* +X168570400Y-87156000D01* +G75* +G02* +X168470400Y-87056000I0J100000D01* +G01* +X168470400Y-85781000D01* +G75* +G02* +X168570400Y-85681000I100000J0D01* +G01* +X168770400Y-85681000D01* +G75* +G02* +X168870400Y-85781000I0J-100000D01* +G01* +X168870400Y-87056000D01* +G75* +G02* +X168770400Y-87156000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X168120400Y-87156000D02* +X167920400Y-87156000D01* +G75* +G02* +X167820400Y-87056000I0J100000D01* +G01* +X167820400Y-85781000D01* +G75* +G02* +X167920400Y-85681000I100000J0D01* +G01* +X168120400Y-85681000D01* +G75* +G02* +X168220400Y-85781000I0J-100000D01* +G01* +X168220400Y-87056000D01* +G75* +G02* +X168120400Y-87156000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X167470400Y-87156000D02* +X167270400Y-87156000D01* +G75* +G02* +X167170400Y-87056000I0J100000D01* +G01* +X167170400Y-85781000D01* +G75* +G02* +X167270400Y-85681000I100000J0D01* +G01* +X167470400Y-85681000D01* +G75* +G02* +X167570400Y-85781000I0J-100000D01* +G01* +X167570400Y-87056000D01* +G75* +G02* +X167470400Y-87156000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X166820400Y-87156000D02* +X166620400Y-87156000D01* +G75* +G02* +X166520400Y-87056000I0J100000D01* +G01* +X166520400Y-85781000D01* +G75* +G02* +X166620400Y-85681000I100000J0D01* +G01* +X166820400Y-85681000D01* +G75* +G02* +X166920400Y-85781000I0J-100000D01* +G01* +X166920400Y-87056000D01* +G75* +G02* +X166820400Y-87156000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X166170400Y-87156000D02* +X165970400Y-87156000D01* +G75* +G02* +X165870400Y-87056000I0J100000D01* +G01* +X165870400Y-85781000D01* +G75* +G02* +X165970400Y-85681000I100000J0D01* +G01* +X166170400Y-85681000D01* +G75* +G02* +X166270400Y-85781000I0J-100000D01* +G01* +X166270400Y-87056000D01* +G75* +G02* +X166170400Y-87156000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X165520400Y-87156000D02* +X165320400Y-87156000D01* +G75* +G02* +X165220400Y-87056000I0J100000D01* +G01* +X165220400Y-85781000D01* +G75* +G02* +X165320400Y-85681000I100000J0D01* +G01* +X165520400Y-85681000D01* +G75* +G02* +X165620400Y-85781000I0J-100000D01* +G01* +X165620400Y-87056000D01* +G75* +G02* +X165520400Y-87156000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X164870400Y-87156000D02* +X164670400Y-87156000D01* +G75* +G02* +X164570400Y-87056000I0J100000D01* +G01* +X164570400Y-85781000D01* +G75* +G02* +X164670400Y-85681000I100000J0D01* +G01* +X164870400Y-85681000D01* +G75* +G02* +X164970400Y-85781000I0J-100000D01* +G01* +X164970400Y-87056000D01* +G75* +G02* +X164870400Y-87156000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X164220400Y-87156000D02* +X164020400Y-87156000D01* +G75* +G02* +X163920400Y-87056000I0J100000D01* +G01* +X163920400Y-85781000D01* +G75* +G02* +X164020400Y-85681000I100000J0D01* +G01* +X164220400Y-85681000D01* +G75* +G02* +X164320400Y-85781000I0J-100000D01* +G01* +X164320400Y-87056000D01* +G75* +G02* +X164220400Y-87156000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X163570400Y-87156000D02* +X163370400Y-87156000D01* +G75* +G02* +X163270400Y-87056000I0J100000D01* +G01* +X163270400Y-85781000D01* +G75* +G02* +X163370400Y-85681000I100000J0D01* +G01* +X163570400Y-85681000D01* +G75* +G02* +X163670400Y-85781000I0J-100000D01* +G01* +X163670400Y-87056000D01* +G75* +G02* +X163570400Y-87156000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X163570400Y-92881000D02* +X163370400Y-92881000D01* +G75* +G02* +X163270400Y-92781000I0J100000D01* +G01* +X163270400Y-91506000D01* +G75* +G02* +X163370400Y-91406000I100000J0D01* +G01* +X163570400Y-91406000D01* +G75* +G02* +X163670400Y-91506000I0J-100000D01* +G01* +X163670400Y-92781000D01* +G75* +G02* +X163570400Y-92881000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X164220400Y-92881000D02* +X164020400Y-92881000D01* +G75* +G02* +X163920400Y-92781000I0J100000D01* +G01* +X163920400Y-91506000D01* +G75* +G02* +X164020400Y-91406000I100000J0D01* +G01* +X164220400Y-91406000D01* +G75* +G02* +X164320400Y-91506000I0J-100000D01* +G01* +X164320400Y-92781000D01* +G75* +G02* +X164220400Y-92881000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X164870400Y-92881000D02* +X164670400Y-92881000D01* +G75* +G02* +X164570400Y-92781000I0J100000D01* +G01* +X164570400Y-91506000D01* +G75* +G02* +X164670400Y-91406000I100000J0D01* +G01* +X164870400Y-91406000D01* +G75* +G02* +X164970400Y-91506000I0J-100000D01* +G01* +X164970400Y-92781000D01* +G75* +G02* +X164870400Y-92881000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X165520400Y-92881000D02* +X165320400Y-92881000D01* +G75* +G02* +X165220400Y-92781000I0J100000D01* +G01* +X165220400Y-91506000D01* +G75* +G02* +X165320400Y-91406000I100000J0D01* +G01* +X165520400Y-91406000D01* +G75* +G02* +X165620400Y-91506000I0J-100000D01* +G01* +X165620400Y-92781000D01* +G75* +G02* +X165520400Y-92881000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X166170400Y-92881000D02* +X165970400Y-92881000D01* +G75* +G02* +X165870400Y-92781000I0J100000D01* +G01* +X165870400Y-91506000D01* +G75* +G02* +X165970400Y-91406000I100000J0D01* +G01* +X166170400Y-91406000D01* +G75* +G02* +X166270400Y-91506000I0J-100000D01* +G01* +X166270400Y-92781000D01* +G75* +G02* +X166170400Y-92881000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X166820400Y-92881000D02* +X166620400Y-92881000D01* +G75* +G02* +X166520400Y-92781000I0J100000D01* +G01* +X166520400Y-91506000D01* +G75* +G02* +X166620400Y-91406000I100000J0D01* +G01* +X166820400Y-91406000D01* +G75* +G02* +X166920400Y-91506000I0J-100000D01* +G01* +X166920400Y-92781000D01* +G75* +G02* +X166820400Y-92881000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X167470400Y-92881000D02* +X167270400Y-92881000D01* +G75* +G02* +X167170400Y-92781000I0J100000D01* +G01* +X167170400Y-91506000D01* +G75* +G02* +X167270400Y-91406000I100000J0D01* +G01* +X167470400Y-91406000D01* +G75* +G02* +X167570400Y-91506000I0J-100000D01* +G01* +X167570400Y-92781000D01* +G75* +G02* +X167470400Y-92881000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X168120400Y-92881000D02* +X167920400Y-92881000D01* +G75* +G02* +X167820400Y-92781000I0J100000D01* +G01* +X167820400Y-91506000D01* +G75* +G02* +X167920400Y-91406000I100000J0D01* +G01* +X168120400Y-91406000D01* +G75* +G02* +X168220400Y-91506000I0J-100000D01* +G01* +X168220400Y-92781000D01* +G75* +G02* +X168120400Y-92881000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X168770400Y-92881000D02* +X168570400Y-92881000D01* +G75* +G02* +X168470400Y-92781000I0J100000D01* +G01* +X168470400Y-91506000D01* +G75* +G02* +X168570400Y-91406000I100000J0D01* +G01* +X168770400Y-91406000D01* +G75* +G02* +X168870400Y-91506000I0J-100000D01* +G01* +X168870400Y-92781000D01* +G75* +G02* +X168770400Y-92881000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X169420400Y-92881000D02* +X169220400Y-92881000D01* +G75* +G02* +X169120400Y-92781000I0J100000D01* +G01* +X169120400Y-91506000D01* +G75* +G02* +X169220400Y-91406000I100000J0D01* +G01* +X169420400Y-91406000D01* +G75* +G02* +X169520400Y-91506000I0J-100000D01* +G01* +X169520400Y-92781000D01* +G75* +G02* +X169420400Y-92881000I-100000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +D13* +X152155400Y-101215600D03* +X150155400Y-101215600D03* +D14* +X151155400Y-97965600D03* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X157965200Y-81528499D02* +X157965200Y-82428501D01* +G75* +G02* +X157715201Y-82678500I-249999J0D01* +G01* +X157190199Y-82678500D01* +G75* +G02* +X156940200Y-82428501I0J249999D01* +G01* +X156940200Y-81528499D01* +G75* +G02* +X157190199Y-81278500I249999J0D01* +G01* +X157715201Y-81278500D01* +G75* +G02* +X157965200Y-81528499I0J-249999D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X156140200Y-81528499D02* +X156140200Y-82428501D01* +G75* +G02* +X155890201Y-82678500I-249999J0D01* +G01* +X155365199Y-82678500D01* +G75* +G02* +X155115200Y-82428501I0J249999D01* +G01* +X155115200Y-81528499D01* +G75* +G02* +X155365199Y-81278500I249999J0D01* +G01* +X155890201Y-81278500D01* +G75* +G02* +X156140200Y-81528499I0J-249999D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X136746401Y-83619400D02* +X135846399Y-83619400D01* +G75* +G02* +X135596400Y-83369401I0J249999D01* +G01* +X135596400Y-82844399D01* +G75* +G02* +X135846399Y-82594400I249999J0D01* +G01* +X136746401Y-82594400D01* +G75* +G02* +X136996400Y-82844399I0J-249999D01* +G01* +X136996400Y-83369401D01* +G75* +G02* +X136746401Y-83619400I-249999J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X136746401Y-81794400D02* +X135846399Y-81794400D01* +G75* +G02* +X135596400Y-81544401I0J249999D01* +G01* +X135596400Y-81019399D01* +G75* +G02* +X135846399Y-80769400I249999J0D01* +G01* +X136746401Y-80769400D01* +G75* +G02* +X136996400Y-81019399I0J-249999D01* +G01* +X136996400Y-81544401D01* +G75* +G02* +X136746401Y-81794400I-249999J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X145609400Y-98189201D02* +X145609400Y-97289199D01* +G75* +G02* +X145859399Y-97039200I249999J0D01* +G01* +X146384401Y-97039200D01* +G75* +G02* +X146634400Y-97289199I0J-249999D01* +G01* +X146634400Y-98189201D01* +G75* +G02* +X146384401Y-98439200I-249999J0D01* +G01* +X145859399Y-98439200D01* +G75* +G02* +X145609400Y-98189201I0J249999D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X147434400Y-98189201D02* +X147434400Y-97289199D01* +G75* +G02* +X147684399Y-97039200I249999J0D01* +G01* +X148209401Y-97039200D01* +G75* +G02* +X148459400Y-97289199I0J-249999D01* +G01* +X148459400Y-98189201D01* +G75* +G02* +X148209401Y-98439200I-249999J0D01* +G01* +X147684399Y-98439200D01* +G75* +G02* +X147434400Y-98189201I0J249999D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X141875600Y-98180735D02* +X141875600Y-97280733D01* +G75* +G02* +X142125599Y-97030734I249999J0D01* +G01* +X142650601Y-97030734D01* +G75* +G02* +X142900600Y-97280733I0J-249999D01* +G01* +X142900600Y-98180735D01* +G75* +G02* +X142650601Y-98430734I-249999J0D01* +G01* +X142125599Y-98430734D01* +G75* +G02* +X141875600Y-98180735I0J249999D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X143700600Y-98180735D02* +X143700600Y-97280733D01* +G75* +G02* +X143950599Y-97030734I249999J0D01* +G01* +X144475601Y-97030734D01* +G75* +G02* +X144725600Y-97280733I0J-249999D01* +G01* +X144725600Y-98180735D01* +G75* +G02* +X144475601Y-98430734I-249999J0D01* +G01* +X143950599Y-98430734D01* +G75* +G02* +X143700600Y-98180735I0J249999D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X159366799Y-101288800D02* +X160266801Y-101288800D01* +G75* +G02* +X160516800Y-101538799I0J-249999D01* +G01* +X160516800Y-102063801D01* +G75* +G02* +X160266801Y-102313800I-249999J0D01* +G01* +X159366799Y-102313800D01* +G75* +G02* +X159116800Y-102063801I0J249999D01* +G01* +X159116800Y-101538799D01* +G75* +G02* +X159366799Y-101288800I249999J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X159366799Y-99463800D02* +X160266801Y-99463800D01* +G75* +G02* +X160516800Y-99713799I0J-249999D01* +G01* +X160516800Y-100238801D01* +G75* +G02* +X160266801Y-100488800I-249999J0D01* +G01* +X159366799Y-100488800D01* +G75* +G02* +X159116800Y-100238801I0J249999D01* +G01* +X159116800Y-99713799D01* +G75* +G02* +X159366799Y-99463800I249999J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X172181301Y-82634500D02* +X171281299Y-82634500D01* +G75* +G02* +X171031300Y-82384501I0J249999D01* +G01* +X171031300Y-81859499D01* +G75* +G02* +X171281299Y-81609500I249999J0D01* +G01* +X172181301Y-81609500D01* +G75* +G02* +X172431300Y-81859499I0J-249999D01* +G01* +X172431300Y-82384501D01* +G75* +G02* +X172181301Y-82634500I-249999J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X172181301Y-84459500D02* +X171281299Y-84459500D01* +G75* +G02* +X171031300Y-84209501I0J249999D01* +G01* +X171031300Y-83684499D01* +G75* +G02* +X171281299Y-83434500I249999J0D01* +G01* +X172181301Y-83434500D01* +G75* +G02* +X172431300Y-83684499I0J-249999D01* +G01* +X172431300Y-84209501D01* +G75* +G02* +X172181301Y-84459500I-249999J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X150086000Y-96157201D02* +X150086000Y-95257199D01* +G75* +G02* +X150335999Y-95007200I249999J0D01* +G01* +X150861001Y-95007200D01* +G75* +G02* +X151111000Y-95257199I0J-249999D01* +G01* +X151111000Y-96157201D01* +G75* +G02* +X150861001Y-96407200I-249999J0D01* +G01* +X150335999Y-96407200D01* +G75* +G02* +X150086000Y-96157201I0J249999D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X151911000Y-96157201D02* +X151911000Y-95257199D01* +G75* +G02* +X152160999Y-95007200I249999J0D01* +G01* +X152686001Y-95007200D01* +G75* +G02* +X152936000Y-95257199I0J-249999D01* +G01* +X152936000Y-96157201D01* +G75* +G02* +X152686001Y-96407200I-249999J0D01* +G01* +X152160999Y-96407200D01* +G75* +G02* +X151911000Y-96157201I0J249999D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X172154001Y-88269500D02* +X171253999Y-88269500D01* +G75* +G02* +X171004000Y-88019501I0J249999D01* +G01* +X171004000Y-87494499D01* +G75* +G02* +X171253999Y-87244500I249999J0D01* +G01* +X172154001Y-87244500D01* +G75* +G02* +X172404000Y-87494499I0J-249999D01* +G01* +X172404000Y-88019501D01* +G75* +G02* +X172154001Y-88269500I-249999J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X172154001Y-90094500D02* +X171253999Y-90094500D01* +G75* +G02* +X171004000Y-89844501I0J249999D01* +G01* +X171004000Y-89319499D01* +G75* +G02* +X171253999Y-89069500I249999J0D01* +G01* +X172154001Y-89069500D01* +G75* +G02* +X172404000Y-89319499I0J-249999D01* +G01* +X172404000Y-89844501D01* +G75* +G02* +X172154001Y-90094500I-249999J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X131467800Y-91305801D02* +X131467800Y-90405799D01* +G75* +G02* +X131717799Y-90155800I249999J0D01* +G01* +X132242801Y-90155800D01* +G75* +G02* +X132492800Y-90405799I0J-249999D01* +G01* +X132492800Y-91305801D01* +G75* +G02* +X132242801Y-91555800I-249999J0D01* +G01* +X131717799Y-91555800D01* +G75* +G02* +X131467800Y-91305801I0J249999D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X133292800Y-91305801D02* +X133292800Y-90405799D01* +G75* +G02* +X133542799Y-90155800I249999J0D01* +G01* +X134067801Y-90155800D01* +G75* +G02* +X134317800Y-90405799I0J-249999D01* +G01* +X134317800Y-91305801D01* +G75* +G02* +X134067801Y-91555800I-249999J0D01* +G01* +X133542799Y-91555800D01* +G75* +G02* +X133292800Y-91305801I0J249999D01* +G01* +G37* +G04 #@! TD.AperFunction* +D15* +X146014400Y-99592468D03* +X147914400Y-99592468D03* +X146964400Y-101592468D03* +X142280600Y-99584000D03* +X144180600Y-99584000D03* +X143230600Y-101584000D03* +D16* +X163499800Y-81978500D03* +X166039800Y-81978500D03* +D17* +X168579800Y-81978500D03* +G04 #@! TA.AperFunction,ComponentPad* +G36* +G01* +X131554100Y-107444700D02* +X131554100Y-104924700D01* +G75* +G02* +X132344100Y-104134700I790000J0D01* +G01* +X133924100Y-104134700D01* +G75* +G02* +X134714100Y-104924700I0J-790000D01* +G01* +X134714100Y-107444700D01* +G75* +G02* +X133924100Y-108234700I-790000J0D01* +G01* +X132344100Y-108234700D01* +G75* +G02* +X131554100Y-107444700I0J790000D01* +G01* +G37* +G04 #@! TD.AperFunction* +D18* +X137094100Y-106184700D03* +X141054100Y-106184700D03* +X144934100Y-106184700D03* +X148974100Y-106184700D03* +X152934100Y-106184700D03* +D19* +X138392000Y-91352000D03* +D20* +X136852000Y-89027000D03* +X154432000Y-89027000D03* +D19* +X138892000Y-91352000D03* +X139392000Y-91352000D03* +X139892000Y-91352000D03* +X140392000Y-91352000D03* +X140892000Y-91352000D03* +X141392000Y-91352000D03* +X141892000Y-91352000D03* +X142392000Y-91352000D03* +X142892000Y-91352000D03* +X143392000Y-91352000D03* +X143892000Y-91352000D03* +X144392000Y-91352000D03* +X144892000Y-91352000D03* +X145392000Y-91352000D03* +X145892000Y-91352000D03* +X146392000Y-91352000D03* +X146892000Y-91352000D03* +X147392000Y-91352000D03* +X147892000Y-91352000D03* +X148392000Y-91352000D03* +X148892000Y-91352000D03* +X149392000Y-91352000D03* +X149892000Y-91352000D03* +X150392000Y-91352000D03* +X150892000Y-91352000D03* +X151392000Y-91352000D03* +X151892000Y-91352000D03* +X152392000Y-91352000D03* +X152892000Y-91352000D03* +D21* +X161899600Y-101286600D03* +X161899600Y-103386600D03* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X154846000Y-93038000D02* +X155796000Y-93038000D01* +G75* +G02* +X156046000Y-93288000I0J-250000D01* +G01* +X156046000Y-93788000D01* +G75* +G02* +X155796000Y-94038000I-250000J0D01* +G01* +X154846000Y-94038000D01* +G75* +G02* +X154596000Y-93788000I0J250000D01* +G01* +X154596000Y-93288000D01* +G75* +G02* +X154846000Y-93038000I250000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X154846000Y-94938000D02* +X155796000Y-94938000D01* +G75* +G02* +X156046000Y-95188000I0J-250000D01* +G01* +X156046000Y-95688000D01* +G75* +G02* +X155796000Y-95938000I-250000J0D01* +G01* +X154846000Y-95938000D01* +G75* +G02* +X154596000Y-95688000I0J250000D01* +G01* +X154596000Y-95188000D01* +G75* +G02* +X154846000Y-94938000I250000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X158493000Y-97569000D02* +X158493000Y-98519000D01* +G75* +G02* +X158243000Y-98769000I-250000J0D01* +G01* +X157743000Y-98769000D01* +G75* +G02* +X157493000Y-98519000I0J250000D01* +G01* +X157493000Y-97569000D01* +G75* +G02* +X157743000Y-97319000I250000J0D01* +G01* +X158243000Y-97319000D01* +G75* +G02* +X158493000Y-97569000I0J-250000D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X160393000Y-97569000D02* +X160393000Y-98519000D01* +G75* +G02* +X160143000Y-98769000I-250000J0D01* +G01* +X159643000Y-98769000D01* +G75* +G02* +X159393000Y-98519000I0J250000D01* +G01* +X159393000Y-97569000D01* +G75* +G02* +X159643000Y-97319000I250000J0D01* +G01* +X160143000Y-97319000D01* +G75* +G02* +X160393000Y-97569000I0J-250000D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X132467799Y-93761200D02* +X133317801Y-93761200D01* +G75* +G02* +X133567800Y-94011199I0J-249999D01* +G01* +X133567800Y-94911201D01* +G75* +G02* +X133317801Y-95161200I-249999J0D01* +G01* +X132467799Y-95161200D01* +G75* +G02* +X132217800Y-94911201I0J249999D01* +G01* +X132217800Y-94011199D01* +G75* +G02* +X132467799Y-93761200I249999J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X132467799Y-96461200D02* +X133317801Y-96461200D01* +G75* +G02* +X133567800Y-96711199I0J-249999D01* +G01* +X133567800Y-97611201D01* +G75* +G02* +X133317801Y-97861200I-249999J0D01* +G01* +X132467799Y-97861200D01* +G75* +G02* +X132217800Y-97611201I0J249999D01* +G01* +X132217800Y-96711199D01* +G75* +G02* +X132467799Y-96461200I249999J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X132487800Y-99116200D02* +X133437800Y-99116200D01* +G75* +G02* +X133687800Y-99366200I0J-250000D01* +G01* +X133687800Y-99866200D01* +G75* +G02* +X133437800Y-100116200I-250000J0D01* +G01* +X132487800Y-100116200D01* +G75* +G02* +X132237800Y-99866200I0J250000D01* +G01* +X132237800Y-99366200D01* +G75* +G02* +X132487800Y-99116200I250000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X132487800Y-101016200D02* +X133437800Y-101016200D01* +G75* +G02* +X133687800Y-101266200I0J-250000D01* +G01* +X133687800Y-101766200D01* +G75* +G02* +X133437800Y-102016200I-250000J0D01* +G01* +X132487800Y-102016200D01* +G75* +G02* +X132237800Y-101766200I0J250000D01* +G01* +X132237800Y-101266200D01* +G75* +G02* +X132487800Y-101016200I250000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X164203000Y-93886000D02* +X164203000Y-94836000D01* +G75* +G02* +X163953000Y-95086000I-250000J0D01* +G01* +X163453000Y-95086000D01* +G75* +G02* +X163203000Y-94836000I0J250000D01* +G01* +X163203000Y-93886000D01* +G75* +G02* +X163453000Y-93636000I250000J0D01* +G01* +X163953000Y-93636000D01* +G75* +G02* +X164203000Y-93886000I0J-250000D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X166103000Y-93886000D02* +X166103000Y-94836000D01* +G75* +G02* +X165853000Y-95086000I-250000J0D01* +G01* +X165353000Y-95086000D01* +G75* +G02* +X165103000Y-94836000I0J250000D01* +G01* +X165103000Y-93886000D01* +G75* +G02* +X165353000Y-93636000I250000J0D01* +G01* +X165853000Y-93636000D01* +G75* +G02* +X166103000Y-93886000I0J-250000D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X162374600Y-98330600D02* +X161424600Y-98330600D01* +G75* +G02* +X161174600Y-98080600I0J250000D01* +G01* +X161174600Y-97580600D01* +G75* +G02* +X161424600Y-97330600I250000J0D01* +G01* +X162374600Y-97330600D01* +G75* +G02* +X162624600Y-97580600I0J-250000D01* +G01* +X162624600Y-98080600D01* +G75* +G02* +X162374600Y-98330600I-250000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X162374600Y-100230600D02* +X161424600Y-100230600D01* +G75* +G02* +X161174600Y-99980600I0J250000D01* +G01* +X161174600Y-99480600D01* +G75* +G02* +X161424600Y-99230600I250000J0D01* +G01* +X162374600Y-99230600D01* +G75* +G02* +X162624600Y-99480600I0J-250000D01* +G01* +X162624600Y-99980600D01* +G75* +G02* +X162374600Y-100230600I-250000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X145772800Y-95181400D02* +X145772800Y-96131400D01* +G75* +G02* +X145522800Y-96381400I-250000J0D01* +G01* +X145022800Y-96381400D01* +G75* +G02* +X144772800Y-96131400I0J250000D01* +G01* +X144772800Y-95181400D01* +G75* +G02* +X145022800Y-94931400I250000J0D01* +G01* +X145522800Y-94931400D01* +G75* +G02* +X145772800Y-95181400I0J-250000D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X143872800Y-95181400D02* +X143872800Y-96131400D01* +G75* +G02* +X143622800Y-96381400I-250000J0D01* +G01* +X143122800Y-96381400D01* +G75* +G02* +X142872800Y-96131400I0J250000D01* +G01* +X142872800Y-95181400D01* +G75* +G02* +X143122800Y-94931400I250000J0D01* +G01* +X143622800Y-94931400D01* +G75* +G02* +X143872800Y-95181400I0J-250000D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X146479600Y-96156800D02* +X146479600Y-95206800D01* +G75* +G02* +X146729600Y-94956800I250000J0D01* +G01* +X147229600Y-94956800D01* +G75* +G02* +X147479600Y-95206800I0J-250000D01* +G01* +X147479600Y-96156800D01* +G75* +G02* +X147229600Y-96406800I-250000J0D01* +G01* +X146729600Y-96406800D01* +G75* +G02* +X146479600Y-96156800I0J250000D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X148379600Y-96156800D02* +X148379600Y-95206800D01* +G75* +G02* +X148629600Y-94956800I250000J0D01* +G01* +X149129600Y-94956800D01* +G75* +G02* +X149379600Y-95206800I0J-250000D01* +G01* +X149379600Y-96156800D01* +G75* +G02* +X149129600Y-96406800I-250000J0D01* +G01* +X148629600Y-96406800D01* +G75* +G02* +X148379600Y-96156800I0J250000D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X172179000Y-92067000D02* +X171229000Y-92067000D01* +G75* +G02* +X170979000Y-91817000I0J250000D01* +G01* +X170979000Y-91317000D01* +G75* +G02* +X171229000Y-91067000I250000J0D01* +G01* +X172179000Y-91067000D01* +G75* +G02* +X172429000Y-91317000I0J-250000D01* +G01* +X172429000Y-91817000D01* +G75* +G02* +X172179000Y-92067000I-250000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X172179000Y-93967000D02* +X171229000Y-93967000D01* +G75* +G02* +X170979000Y-93717000I0J250000D01* +G01* +X170979000Y-93217000D01* +G75* +G02* +X171229000Y-92967000I250000J0D01* +G01* +X172179000Y-92967000D01* +G75* +G02* +X172429000Y-93217000I0J-250000D01* +G01* +X172429000Y-93717000D01* +G75* +G02* +X172179000Y-93967000I-250000J0D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X134362800Y-88348800D02* +X134362800Y-89298800D01* +G75* +G02* +X134112800Y-89548800I-250000J0D01* +G01* +X133612800Y-89548800D01* +G75* +G02* +X133362800Y-89298800I0J250000D01* +G01* +X133362800Y-88348800D01* +G75* +G02* +X133612800Y-88098800I250000J0D01* +G01* +X134112800Y-88098800D01* +G75* +G02* +X134362800Y-88348800I0J-250000D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X132462800Y-88348800D02* +X132462800Y-89298800D01* +G75* +G02* +X132212800Y-89548800I-250000J0D01* +G01* +X131712800Y-89548800D01* +G75* +G02* +X131462800Y-89298800I0J250000D01* +G01* +X131462800Y-88348800D01* +G75* +G02* +X131712800Y-88098800I250000J0D01* +G01* +X132212800Y-88098800D01* +G75* +G02* +X132462800Y-88348800I0J-250000D01* +G01* +G37* +G04 #@! TD.AperFunction* +D22* +X164496400Y-104013000D03* +X164496400Y-96913000D03* +X171596400Y-96913000D03* +X171596400Y-104013000D03* +D23* +X131658360Y-84038440D03* +X134411720Y-84040980D03* +D24* +X133896100Y-81394300D03* +X133896100Y-86652100D03* +X132143500Y-81394300D03* +X132143500Y-86652100D03* +D25* +X134874000Y-86614000D03* +X134874000Y-88773000D03* +X137668000Y-83058000D03* +X132715000Y-98552000D03* +X139954000Y-102616000D03* +X143383000Y-99568000D03* +X155321000Y-96520000D03* +X162195400Y-95747400D03* +X171704000Y-84963000D03* +X148844000Y-89154000D03* +X147066000Y-99568000D03* +X164338000Y-108204000D03* +X161798000Y-106172000D03* +X164496400Y-96913000D03* +X170180000Y-94361000D03* +X172085000Y-94615000D03* +X137718800Y-94716200D03* +X159258000Y-108204000D03* +X153924000Y-100203000D03* +X169164000Y-100965000D03* +X164496400Y-104013000D03* +X167386000Y-106172000D03* +X163957000Y-87630000D03* +X170595400Y-91247400D03* +X159004000Y-86487000D03* +X154178000Y-81915000D03* +X137668000Y-81280000D03* +X145923000Y-89408000D03* +X165608000Y-89789000D03* +X146409400Y-90043000D03* +X157734000Y-91313000D03* +X166183313Y-88840313D03* +X166751000Y-101981000D03* +X164719000Y-87757000D03* +D26* +X149892000Y-90329000D02* +X149892000Y-91352000D01* +X149479000Y-89916000D02* +X149892000Y-90329000D01* +X147892000Y-90233000D02* +X148209000Y-89916000D01* +X147892000Y-91352000D02* +X147892000Y-90233000D01* +X149392000Y-90083000D02* +X149225000Y-89916000D01* +X149392000Y-91352000D02* +X149392000Y-90083000D01* +X149225000Y-89916000D02* +X149479000Y-89916000D01* +X148392000Y-90114000D02* +X148590000Y-89916000D01* +X148392000Y-91352000D02* +X148392000Y-90114000D01* +X148209000Y-89916000D02* +X148590000Y-89916000D01* +X141892000Y-90264000D02* +X141892000Y-91352000D01* +X142240000Y-89916000D02* +X141892000Y-90264000D01* +X145392000Y-90274000D02* +X145034000Y-89916000D01* +X145392000Y-91352000D02* +X145392000Y-90274000D01* +X144892000Y-91352000D02* +X144892000Y-90028000D01* +X144892000Y-90028000D02* +X144780000Y-89916000D01* +X145034000Y-89916000D02* +X144780000Y-89916000D01* +X144392000Y-89923000D02* +X144399000Y-89916000D01* +X144392000Y-91352000D02* +X144392000Y-89923000D01* +X144780000Y-89916000D02* +X144399000Y-89916000D01* +X143892000Y-90044000D02* +X143764000Y-89916000D01* +X143892000Y-91352000D02* +X143892000Y-90044000D01* +X144399000Y-89916000D02* +X143764000Y-89916000D01* +X143392000Y-90034000D02* +X143510000Y-89916000D01* +X143392000Y-91352000D02* +X143392000Y-90034000D01* +X143764000Y-89916000D02* +X143510000Y-89916000D01* +X142892000Y-90060000D02* +X142748000Y-89916000D01* +X142892000Y-91352000D02* +X142892000Y-90060000D01* +X143510000Y-89916000D02* +X142748000Y-89916000D01* +X142392000Y-90018000D02* +X142494000Y-89916000D01* +X142494000Y-89916000D02* +X142240000Y-89916000D01* +X142392000Y-91352000D02* +X142392000Y-90018000D01* +X142748000Y-89916000D02* +X142494000Y-89916000D01* +X134583800Y-81394300D02* +X136296400Y-83106900D01* +X133896100Y-81394300D02* +X134583800Y-81394300D01* +X134835900Y-86652100D02* +X134874000Y-86614000D01* +X133896100Y-86652100D02* +X134835900Y-86652100D01* +X134823200Y-88823800D02* +X134874000Y-88773000D01* +X133862800Y-88823800D02* +X134823200Y-88823800D01* +X137619100Y-83106900D02* +X137668000Y-83058000D01* +X136296400Y-83106900D02* +X137619100Y-83106900D01* +X132892800Y-99546200D02* +X132962800Y-99616200D01* +X132765800Y-98501200D02* +X132715000Y-98552000D01* +X132892800Y-98501200D02* +X132765800Y-98501200D01* +X132892800Y-97161200D02* +X132892800Y-98501200D01* +X132892800Y-98501200D02* +X132892800Y-99546200D01* +X140018800Y-102551200D02* +X139954000Y-102616000D01* +X140018800Y-101016200D02* +X140018800Y-102551200D01* +X143392000Y-95637200D02* +X143372800Y-95656400D01* +X143392000Y-91352000D02* +X143392000Y-95637200D01* +X143372800Y-96890434D02* +X144213100Y-97730734D01* +X143372800Y-95656400D02* +X143372800Y-96890434D01* +X144213100Y-99551500D02* +X144180600Y-99584000D01* +X144213100Y-97730734D02* +X144213100Y-99551500D01* +X143399000Y-99584000D02* +X143383000Y-99568000D01* +X144180600Y-99584000D02* +X143399000Y-99584000D01* +X155321000Y-95438000D02* +X155321000Y-96520000D01* +X161213800Y-94765800D02* +X162195400Y-95747400D01* +X161213800Y-94296000D02* +X161213800Y-94765800D01* +X171731300Y-84935700D02* +X171704000Y-84963000D01* +X171731300Y-83947000D02* +X171731300Y-84935700D01* +X149392000Y-95169400D02* +X149392000Y-91352000D01* +X148879600Y-95681800D02* +X149392000Y-95169400D01* +X148879600Y-96806500D02* +X147946900Y-97739200D01* +X148879600Y-95681800D02* +X148879600Y-96806500D01* +X148844000Y-89916000D02* +X148844000Y-89154000D01* +X148590000Y-89916000D02* +X148844000Y-89916000D01* +X148844000Y-89916000D02* +X149225000Y-89916000D01* +X147090468Y-99592468D02* +X147066000Y-99568000D01* +X147914400Y-99592468D02* +X147090468Y-99592468D01* +X161899600Y-101286600D02* +X161899600Y-99730600D01* +X165420400Y-94178400D02* +X165603000Y-94361000D01* +X165420400Y-92143500D02* +X165420400Y-94178400D01* +X161798000Y-108204000D02* +X161798000Y-106172000D01* +X164496400Y-97133800D02* +X164496400Y-96913000D01* +X161899600Y-99730600D02* +X164496400Y-97133800D01* +X165603000Y-95806400D02* +X165603000Y-94361000D01* +X164496400Y-96913000D02* +X165603000Y-95806400D01* +X171704000Y-94234000D02* +X172085000Y-94615000D01* +X171704000Y-93467000D02* +X171704000Y-94234000D01* +X137718800Y-94716200D02* +X137718800Y-101016200D01* +X149311879Y-100311199D02* +X151250999Y-100311199D01* +X149276209Y-100346869D02* +X149311879Y-100311199D01* +X141012321Y-99711799D02* +X141647391Y-100346869D01* +X139023201Y-99711799D02* +X141012321Y-99711799D01* +X151250999Y-100311199D02* +X152155400Y-101215600D01* +X137718800Y-101016200D02* +X139023201Y-99711799D01* +X153240410Y-95618590D02* +X155321000Y-93538000D01* +X153240410Y-100130590D02* +X153240410Y-95618590D01* +X152155400Y-101215600D02* +X153240410Y-100130590D01* +X156645800Y-93538000D02* +X157403800Y-94296000D01* +X155321000Y-93538000D02* +X156645800Y-93538000D01* +X162358590Y-93016590D02* +X163703000Y-94361000D01* +X157708210Y-93016590D02* +X162358590Y-93016590D01* +X157403800Y-93321000D02* +X157708210Y-93016590D01* +X157403800Y-94296000D02* +X157403800Y-93321000D01* +X164120400Y-93943600D02* +X164120400Y-92143500D01* +X163703000Y-94361000D02* +X164120400Y-93943600D01* +X158607101Y-80824099D02* +X157452700Y-81978500D01* +X164885399Y-80824099D02* +X158607101Y-80824099D01* +X166039800Y-81978500D02* +X164885399Y-80824099D01* +X172735710Y-81629854D02* +X172735710Y-86725290D01* +X172735710Y-86725290D02* +X171704000Y-87757000D01* +X171929955Y-80824099D02* +X172735710Y-81629854D01* +X167194201Y-80824099D02* +X171929955Y-80824099D01* +X166039800Y-81978500D02* +X167194201Y-80824099D01* +X146954200Y-95656400D02* +X146979600Y-95681800D01* +X145272800Y-95656400D02* +X146954200Y-95656400D01* +X145272800Y-100251938D02* +X145177869Y-100346869D01* +X145272800Y-95656400D02* +X145272800Y-100251938D01* +X145177869Y-100346869D02* +X149276209Y-100346869D01* +X141647391Y-100346869D02* +X145177869Y-100346869D01* +X148892000Y-93769400D02* +X148892000Y-91352000D01* +X146979600Y-95681800D02* +X148892000Y-93769400D01* +X137463800Y-94461200D02* +X137718800Y-94716200D01* +X132892800Y-94461200D02* +X137463800Y-94461200D01* +X132892800Y-91768300D02* +X133805300Y-90855800D01* +X132892800Y-94461200D02* +X132892800Y-91768300D01* +X153851590Y-100130590D02* +X153924000Y-100203000D01* +X153240410Y-100130590D02* +X153851590Y-100130590D01* +X133134100Y-101687500D02* +X132962800Y-101516200D01* +X133134100Y-106184700D02* +X133134100Y-101687500D01* +X134918800Y-101516200D02* +X135418800Y-101016200D01* +X132962800Y-101516200D02* +X134918800Y-101516200D01* +D27* +X159943800Y-97993200D02* +X159893000Y-98044000D01* +X159943800Y-94296000D02* +X159943800Y-97993200D01* +X152934100Y-105002900D02* +X152934100Y-106184700D01* +X159893000Y-98044000D02* +X152934100Y-105002900D01* +X158673800Y-97363200D02* +X157993000Y-98044000D01* +X158673800Y-94296000D02* +X158673800Y-97363200D01* +X157114800Y-98044000D02* +X148974100Y-106184700D01* +X157993000Y-98044000D02* +X157114800Y-98044000D01* +X150392000Y-95500700D02* +X150392000Y-91352000D01* +X150598500Y-95707200D02* +X150392000Y-95500700D01* +X143230600Y-104008200D02* +X141054100Y-106184700D01* +X143230600Y-101584000D02* +X143230600Y-104008200D01* +X146964400Y-104154400D02* +X144934100Y-106184700D01* +X146964400Y-101592468D02* +X146964400Y-104154400D01* +X162526000Y-104013000D02* +X161899600Y-103386600D01* +X164496400Y-104013000D02* +X162526000Y-104013000D01* +X169320400Y-100808600D02* +X169164000Y-100965000D01* +X169320400Y-92143500D02* +X169320400Y-100808600D01* +X132267961Y-86527639D02* +X132143500Y-86652100D01* +X132267961Y-81518761D02* +X132267961Y-86527639D01* +X132143500Y-81394300D02* +X132267961Y-81518761D01* +X132143500Y-88643100D02* +X131962800Y-88823800D01* +X132143500Y-86652100D02* +X132143500Y-88643100D01* +X131962800Y-90838300D02* +X131980300Y-90855800D01* +X131962800Y-88823800D02* +X131962800Y-90838300D01* +X167370400Y-91406000D02* +X167370400Y-92143500D01* +X169749010Y-89027390D02* +X167370400Y-91406000D01* +X138303300Y-84233152D02* +X168337278Y-84233152D01* +X137885871Y-84650581D02* +X138303300Y-84233152D01* +X133217919Y-84650581D02* +X137885871Y-84650581D01* +X168337278Y-84233152D02* +X169749010Y-85644884D01* +X132143500Y-85725000D02* +X133217919Y-84650581D01* +X169749010Y-85644884D02* +X169749010Y-89027390D01* +X132143500Y-86652100D02* +X132143500Y-85725000D01* +X167370400Y-106156400D02* +X167386000Y-106172000D01* +X167370400Y-92143500D02* +X167370400Y-106156400D01* +X164120400Y-87466600D02* +X163957000Y-87630000D01* +X164120400Y-86418500D02* +X164120400Y-87466600D01* +X170915000Y-91567000D02* +X170595400Y-91247400D01* +X171704000Y-91567000D02* +X170915000Y-91567000D01* +X171704000Y-91567000D02* +X171704000Y-89582000D01* +X161899600Y-96798318D02* +X161899600Y-97830600D01* +X163163519Y-95534399D02* +X161899600Y-96798318D01* +X164501010Y-94964848D02* +X163931459Y-95534399D01* +X164501010Y-93435990D02* +X164501010Y-94964848D01* +X163931459Y-95534399D02* +X163163519Y-95534399D01* +X164970400Y-92966600D02* +X164501010Y-93435990D01* +X164970400Y-92343500D02* +X164970400Y-92966600D01* +X164770400Y-92143500D02* +X164970400Y-92343500D01* +X159816800Y-99913400D02* +X159816800Y-99976300D01* +X161899600Y-97830600D02* +X159816800Y-99913400D01* +X163401900Y-86487000D02* +X163470400Y-86418500D01* +X159004000Y-86487000D02* +X163401900Y-86487000D01* +X155564200Y-81915000D02* +X155627700Y-81978500D01* +X154178000Y-81915000D02* +X155564200Y-81915000D01* +X137666100Y-81281900D02* +X137668000Y-81280000D01* +X136296400Y-81281900D02* +X137666100Y-81281900D01* +X166720400Y-85866274D02* +X166720400Y-86418500D01* +X165696897Y-84842771D02* +X166720400Y-85866274D01* +X146343900Y-84842771D02* +X165696897Y-84842771D01* +X140892000Y-90294671D02* +X146343900Y-84842771D01* +X140892000Y-91352000D02* +X140892000Y-90294671D01* +X166070400Y-87156000D02* +X166070400Y-86418500D01* +X163826948Y-88239601D02* +X164986799Y-88239601D01* +X163729737Y-88142390D02* +X163826948Y-88239601D01* +X164986799Y-88239601D02* +X166070400Y-87156000D01* +X157632410Y-88142390D02* +X163729737Y-88142390D01* +X157403800Y-88371000D02* +X157632410Y-88142390D01* +X157403800Y-89346000D02* +X157403800Y-88371000D01* +X166070400Y-85681000D02* +X166070400Y-86418500D01* +X165536981Y-85147581D02* +X166070400Y-85681000D01* +X146470156Y-85147581D02* +X165536981Y-85147581D01* +X141392000Y-90225737D02* +X146470156Y-85147581D01* +X141392000Y-91352000D02* +X141392000Y-90225737D01* +X145892000Y-89439000D02* +X145923000Y-89408000D01* +X145892000Y-91352000D02* +X145892000Y-89439000D01* +X168670400Y-87234600D02* +X168670400Y-86418500D01* +X166116000Y-89789000D02* +X168670400Y-87234600D01* +X165608000Y-89789000D02* +X166116000Y-89789000D01* +X146392000Y-90060400D02* +X146409400Y-90043000D01* +X146392000Y-91352000D02* +X146392000Y-90060400D01* +X163076610Y-91177390D02* +X165656516Y-91177390D01* +X165656516Y-91177390D02* +X166070400Y-91591274D01* +X162941000Y-91313000D02* +X163076610Y-91177390D01* +X166070400Y-91591274D02* +X166070400Y-92143500D01* +X157734000Y-91313000D02* +X162941000Y-91313000D01* +X165420400Y-85681000D02* +X165420400Y-86418500D01* +X165191790Y-85452390D02* +X165420400Y-85681000D01* +X147187589Y-85452390D02* +X165191790Y-85452390D01* +X146892000Y-85747979D02* +X147187589Y-85452390D01* +X146892000Y-91352000D02* +X146892000Y-85747979D01* +X168020400Y-87003226D02* +X166183313Y-88840313D01* +X168020400Y-86418500D02* +X168020400Y-87003226D01* +X159996500Y-101981000D02* +X166751000Y-101981000D01* +X159816800Y-101801300D02* +X159996500Y-101981000D01* +X168020400Y-107061600D02* +X168020400Y-92143500D01* +X166878000Y-108204000D02* +X168020400Y-107061600D01* +X168670400Y-107456400D02* +X168670400Y-92143500D01* +X169418000Y-108204000D02* +X168670400Y-107456400D01* +X164770400Y-87705600D02* +X164719000Y-87757000D01* +X164770400Y-86418500D02* +X164770400Y-87705600D01* +X168723300Y-82122000D02* +X168579800Y-81978500D01* +X171731300Y-82122000D02* +X168723300Y-82122000D01* +X142388100Y-96074018D02* +X142388100Y-97730734D01* +X139801681Y-93487599D02* +X142388100Y-96074018D01* +X137175599Y-93487599D02* +X139801681Y-93487599D01* +X135623399Y-87344119D02* +X135623399Y-91935399D01* +X138429556Y-84537962D02* +X135623399Y-87344119D01* +X169320400Y-85681000D02* +X168177362Y-84537962D01* +X135623399Y-91935399D02* +X137175599Y-93487599D01* +X168177362Y-84537962D02* +X138429556Y-84537962D01* +X169320400Y-86418500D02* +X169320400Y-85681000D01* +X142388100Y-99476500D02* +X142280600Y-99584000D01* +X142388100Y-97730734D02* +X142388100Y-99476500D01* +X150088459Y-96986999D02* +X148407648Y-98667810D01* +X147050510Y-98667810D02* +X146121900Y-97739200D01* +X148407648Y-98667810D02* +X147050510Y-98667810D01* +X150708059Y-96986999D02* +X150088459Y-96986999D01* +X151339610Y-96355448D02* +X150708059Y-96986999D01* +X151339610Y-95058952D02* +X151339610Y-96355448D01* +X154255062Y-92143500D02* +X151339610Y-95058952D01* +X163470400Y-92143500D02* +X154255062Y-92143500D01* +X146121900Y-99484968D02* +X146014400Y-99592468D01* +X146121900Y-97739200D02* +X146121900Y-99484968D01* +X151155400Y-96975300D02* +X152423500Y-95707200D01* +X151155400Y-97965600D02* +X151155400Y-96975300D01* +X158673800Y-90321000D02* +X158673800Y-89346000D01* +X159207220Y-90854420D02* +X158673800Y-90321000D01* +X166168820Y-90854420D02* +X159207220Y-90854420D01* +X166720400Y-91406000D02* +X166168820Y-90854420D01* +X166720400Y-92143500D02* +X166720400Y-91406000D01* +X167370400Y-86970726D02* +X167370400Y-86418500D01* +X163791516Y-90549610D02* +X167370400Y-86970726D01* +X160172410Y-90549610D02* +X163791516Y-90549610D01* +X159943800Y-90321000D02* +X160172410Y-90549610D01* +X159943800Y-89346000D02* +X159943800Y-90321000D01* +M02* diff --git a/hw/v1/gerbers/v1-B_Mask.gbr b/hw/v1/gerbers/v1-B_Mask.gbr new file mode 100644 index 0000000..f753c13 --- /dev/null +++ b/hw/v1/gerbers/v1-B_Mask.gbr @@ -0,0 +1,5436 @@ +G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.8-0-10_14)* +G04 #@! TF.CreationDate,2021-03-05T16:46:23-05:00* +G04 #@! TF.ProjectId,v1,76312e6b-6963-4616-945f-706362585858,rev?* +G04 #@! TF.SameCoordinates,Original* +G04 #@! TF.FileFunction,Soldermask,Bot* +G04 #@! TF.FilePolarity,Negative* +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.8-0-10_14)) date 2021-03-05 16:46:23* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%ADD10O,1.801600X1.801600*% +%ADD11O,3.261600X4.201600*% +%ADD12C,0.863600*% +%ADD13C,0.100000*% +G04 APERTURE END LIST* +G36* +G01* +X168617200Y-109604000D02* +X168617200Y-106804000D01* +G75* +G02* +X168668000Y-106753200I50800J0D01* +G01* +X170168000Y-106753200D01* +G75* +G02* +X170218800Y-106804000I0J-50800D01* +G01* +X170218800Y-109604000D01* +G75* +G02* +X170168000Y-109654800I-50800J0D01* +G01* +X168668000Y-109654800D01* +G75* +G02* +X168617200Y-109604000I0J50800D01* +G01* +G37* +G36* +G01* +X166077200Y-109604000D02* +X166077200Y-106804000D01* +G75* +G02* +X166128000Y-106753200I50800J0D01* +G01* +X167628000Y-106753200D01* +G75* +G02* +X167678800Y-106804000I0J-50800D01* +G01* +X167678800Y-109604000D01* +G75* +G02* +X167628000Y-109654800I-50800J0D01* +G01* +X166128000Y-109654800D01* +G75* +G02* +X166077200Y-109604000I0J50800D01* +G01* +G37* +G36* +G01* +X163537200Y-109604000D02* +X163537200Y-106804000D01* +G75* +G02* +X163588000Y-106753200I50800J0D01* +G01* +X165088000Y-106753200D01* +G75* +G02* +X165138800Y-106804000I0J-50800D01* +G01* +X165138800Y-109604000D01* +G75* +G02* +X165088000Y-109654800I-50800J0D01* +G01* +X163588000Y-109654800D01* +G75* +G02* +X163537200Y-109604000I0J50800D01* +G01* +G37* +G36* +G01* +X160997200Y-109604000D02* +X160997200Y-106804000D01* +G75* +G02* +X161048000Y-106753200I50800J0D01* +G01* +X162548000Y-106753200D01* +G75* +G02* +X162598800Y-106804000I0J-50800D01* +G01* +X162598800Y-109604000D01* +G75* +G02* +X162548000Y-109654800I-50800J0D01* +G01* +X161048000Y-109654800D01* +G75* +G02* +X160997200Y-109604000I0J50800D01* +G01* +G37* +G36* +G01* +X158457200Y-109604000D02* +X158457200Y-106804000D01* +G75* +G02* +X158508000Y-106753200I50800J0D01* +G01* +X160008000Y-106753200D01* +G75* +G02* +X160058800Y-106804000I0J-50800D01* +G01* +X160058800Y-109604000D01* +G75* +G02* +X160008000Y-109654800I-50800J0D01* +G01* +X158508000Y-109654800D01* +G75* +G02* +X158457200Y-109604000I0J50800D01* +G01* +G37* +G36* +G01* +X161389200Y-90371800D02* +X161038400Y-90371800D01* +G75* +G02* +X160863000Y-90196400I0J175400D01* +G01* +X160863000Y-88495600D01* +G75* +G02* +X161038400Y-88320200I175400J0D01* +G01* +X161389200Y-88320200D01* +G75* +G02* +X161564600Y-88495600I0J-175400D01* +G01* +X161564600Y-90196400D01* +G75* +G02* +X161389200Y-90371800I-175400J0D01* +G01* +G37* +G36* +G01* +X160119200Y-90371800D02* +X159768400Y-90371800D01* +G75* +G02* +X159593000Y-90196400I0J175400D01* +G01* +X159593000Y-88495600D01* +G75* +G02* +X159768400Y-88320200I175400J0D01* +G01* +X160119200Y-88320200D01* +G75* +G02* +X160294600Y-88495600I0J-175400D01* +G01* +X160294600Y-90196400D01* +G75* +G02* +X160119200Y-90371800I-175400J0D01* +G01* +G37* +G36* +G01* +X158849200Y-90371800D02* +X158498400Y-90371800D01* +G75* +G02* +X158323000Y-90196400I0J175400D01* +G01* +X158323000Y-88495600D01* +G75* +G02* +X158498400Y-88320200I175400J0D01* +G01* +X158849200Y-88320200D01* +G75* +G02* +X159024600Y-88495600I0J-175400D01* +G01* +X159024600Y-90196400D01* +G75* +G02* +X158849200Y-90371800I-175400J0D01* +G01* +G37* +G36* +G01* +X157579200Y-90371800D02* +X157228400Y-90371800D01* +G75* +G02* +X157053000Y-90196400I0J175400D01* +G01* +X157053000Y-88495600D01* +G75* +G02* +X157228400Y-88320200I175400J0D01* +G01* +X157579200Y-88320200D01* +G75* +G02* +X157754600Y-88495600I0J-175400D01* +G01* +X157754600Y-90196400D01* +G75* +G02* +X157579200Y-90371800I-175400J0D01* +G01* +G37* +G36* +G01* +X157579200Y-95321800D02* +X157228400Y-95321800D01* +G75* +G02* +X157053000Y-95146400I0J175400D01* +G01* +X157053000Y-93445600D01* +G75* +G02* +X157228400Y-93270200I175400J0D01* +G01* +X157579200Y-93270200D01* +G75* +G02* +X157754600Y-93445600I0J-175400D01* +G01* +X157754600Y-95146400D01* +G75* +G02* +X157579200Y-95321800I-175400J0D01* +G01* +G37* +G36* +G01* +X158849200Y-95321800D02* +X158498400Y-95321800D01* +G75* +G02* +X158323000Y-95146400I0J175400D01* +G01* +X158323000Y-93445600D01* +G75* +G02* +X158498400Y-93270200I175400J0D01* +G01* +X158849200Y-93270200D01* +G75* +G02* +X159024600Y-93445600I0J-175400D01* +G01* +X159024600Y-95146400D01* +G75* +G02* +X158849200Y-95321800I-175400J0D01* +G01* +G37* +G36* +G01* +X160119200Y-95321800D02* +X159768400Y-95321800D01* +G75* +G02* +X159593000Y-95146400I0J175400D01* +G01* +X159593000Y-93445600D01* +G75* +G02* +X159768400Y-93270200I175400J0D01* +G01* +X160119200Y-93270200D01* +G75* +G02* +X160294600Y-93445600I0J-175400D01* +G01* +X160294600Y-95146400D01* +G75* +G02* +X160119200Y-95321800I-175400J0D01* +G01* +G37* +G36* +G01* +X161389200Y-95321800D02* +X161038400Y-95321800D01* +G75* +G02* +X160863000Y-95146400I0J175400D01* +G01* +X160863000Y-93445600D01* +G75* +G02* +X161038400Y-93270200I175400J0D01* +G01* +X161389200Y-93270200D01* +G75* +G02* +X161564600Y-93445600I0J-175400D01* +G01* +X161564600Y-95146400D01* +G75* +G02* +X161389200Y-95321800I-175400J0D01* +G01* +G37* +G36* +G01* +X139618800Y-95767000D02* +X135818800Y-95767000D01* +G75* +G02* +X135768000Y-95716200I0J50800D01* +G01* +X135768000Y-93716200D01* +G75* +G02* +X135818800Y-93665400I50800J0D01* +G01* +X139618800Y-93665400D01* +G75* +G02* +X139669600Y-93716200I0J-50800D01* +G01* +X139669600Y-95716200D01* +G75* +G02* +X139618800Y-95767000I-50800J0D01* +G01* +G37* +G36* +G01* +X138468800Y-102067000D02* +X136968800Y-102067000D01* +G75* +G02* +X136918000Y-102016200I0J50800D01* +G01* +X136918000Y-100016200D01* +G75* +G02* +X136968800Y-99965400I50800J0D01* +G01* +X138468800Y-99965400D01* +G75* +G02* +X138519600Y-100016200I0J-50800D01* +G01* +X138519600Y-102016200D01* +G75* +G02* +X138468800Y-102067000I-50800J0D01* +G01* +G37* +G36* +G01* +X136168800Y-102067000D02* +X134668800Y-102067000D01* +G75* +G02* +X134618000Y-102016200I0J50800D01* +G01* +X134618000Y-100016200D01* +G75* +G02* +X134668800Y-99965400I50800J0D01* +G01* +X136168800Y-99965400D01* +G75* +G02* +X136219600Y-100016200I0J-50800D01* +G01* +X136219600Y-102016200D01* +G75* +G02* +X136168800Y-102067000I-50800J0D01* +G01* +G37* +G36* +G01* +X140768800Y-102067000D02* +X139268800Y-102067000D01* +G75* +G02* +X139218000Y-102016200I0J50800D01* +G01* +X139218000Y-100016200D01* +G75* +G02* +X139268800Y-99965400I50800J0D01* +G01* +X140768800Y-99965400D01* +G75* +G02* +X140819600Y-100016200I0J-50800D01* +G01* +X140819600Y-102016200D01* +G75* +G02* +X140768800Y-102067000I-50800J0D01* +G01* +G37* +G36* +G01* +X169445800Y-87206800D02* +X169195000Y-87206800D01* +G75* +G02* +X169069600Y-87081400I0J125400D01* +G01* +X169069600Y-85755600D01* +G75* +G02* +X169195000Y-85630200I125400J0D01* +G01* +X169445800Y-85630200D01* +G75* +G02* +X169571200Y-85755600I0J-125400D01* +G01* +X169571200Y-87081400D01* +G75* +G02* +X169445800Y-87206800I-125400J0D01* +G01* +G37* +G36* +G01* +X168795800Y-87206800D02* +X168545000Y-87206800D01* +G75* +G02* +X168419600Y-87081400I0J125400D01* +G01* +X168419600Y-85755600D01* +G75* +G02* +X168545000Y-85630200I125400J0D01* +G01* +X168795800Y-85630200D01* +G75* +G02* +X168921200Y-85755600I0J-125400D01* +G01* +X168921200Y-87081400D01* +G75* +G02* +X168795800Y-87206800I-125400J0D01* +G01* +G37* +G36* +G01* +X168145800Y-87206800D02* +X167895000Y-87206800D01* +G75* +G02* +X167769600Y-87081400I0J125400D01* +G01* +X167769600Y-85755600D01* +G75* +G02* +X167895000Y-85630200I125400J0D01* +G01* +X168145800Y-85630200D01* +G75* +G02* +X168271200Y-85755600I0J-125400D01* +G01* +X168271200Y-87081400D01* +G75* +G02* +X168145800Y-87206800I-125400J0D01* +G01* +G37* +G36* +G01* +X167495800Y-87206800D02* +X167245000Y-87206800D01* +G75* +G02* +X167119600Y-87081400I0J125400D01* +G01* +X167119600Y-85755600D01* +G75* +G02* +X167245000Y-85630200I125400J0D01* +G01* +X167495800Y-85630200D01* +G75* +G02* +X167621200Y-85755600I0J-125400D01* +G01* +X167621200Y-87081400D01* +G75* +G02* +X167495800Y-87206800I-125400J0D01* +G01* +G37* +G36* +G01* +X166845800Y-87206800D02* +X166595000Y-87206800D01* +G75* +G02* +X166469600Y-87081400I0J125400D01* +G01* +X166469600Y-85755600D01* +G75* +G02* +X166595000Y-85630200I125400J0D01* +G01* +X166845800Y-85630200D01* +G75* +G02* +X166971200Y-85755600I0J-125400D01* +G01* +X166971200Y-87081400D01* +G75* +G02* +X166845800Y-87206800I-125400J0D01* +G01* +G37* +G36* +G01* +X166195800Y-87206800D02* +X165945000Y-87206800D01* +G75* +G02* +X165819600Y-87081400I0J125400D01* +G01* +X165819600Y-85755600D01* +G75* +G02* +X165945000Y-85630200I125400J0D01* +G01* +X166195800Y-85630200D01* +G75* +G02* +X166321200Y-85755600I0J-125400D01* +G01* +X166321200Y-87081400D01* +G75* +G02* +X166195800Y-87206800I-125400J0D01* +G01* +G37* +G36* +G01* +X165545800Y-87206800D02* +X165295000Y-87206800D01* +G75* +G02* +X165169600Y-87081400I0J125400D01* +G01* +X165169600Y-85755600D01* +G75* +G02* +X165295000Y-85630200I125400J0D01* +G01* +X165545800Y-85630200D01* +G75* +G02* +X165671200Y-85755600I0J-125400D01* +G01* +X165671200Y-87081400D01* +G75* +G02* +X165545800Y-87206800I-125400J0D01* +G01* +G37* +G36* +G01* +X164895800Y-87206800D02* +X164645000Y-87206800D01* +G75* +G02* +X164519600Y-87081400I0J125400D01* +G01* +X164519600Y-85755600D01* +G75* +G02* +X164645000Y-85630200I125400J0D01* +G01* +X164895800Y-85630200D01* +G75* +G02* +X165021200Y-85755600I0J-125400D01* +G01* +X165021200Y-87081400D01* +G75* +G02* +X164895800Y-87206800I-125400J0D01* +G01* +G37* +G36* +G01* +X164245800Y-87206800D02* +X163995000Y-87206800D01* +G75* +G02* +X163869600Y-87081400I0J125400D01* +G01* +X163869600Y-85755600D01* +G75* +G02* +X163995000Y-85630200I125400J0D01* +G01* +X164245800Y-85630200D01* +G75* +G02* +X164371200Y-85755600I0J-125400D01* +G01* +X164371200Y-87081400D01* +G75* +G02* +X164245800Y-87206800I-125400J0D01* +G01* +G37* +G36* +G01* +X163595800Y-87206800D02* +X163345000Y-87206800D01* +G75* +G02* +X163219600Y-87081400I0J125400D01* +G01* +X163219600Y-85755600D01* +G75* +G02* +X163345000Y-85630200I125400J0D01* +G01* +X163595800Y-85630200D01* +G75* +G02* +X163721200Y-85755600I0J-125400D01* +G01* +X163721200Y-87081400D01* +G75* +G02* +X163595800Y-87206800I-125400J0D01* +G01* +G37* +G36* +G01* +X163595800Y-92931800D02* +X163345000Y-92931800D01* +G75* +G02* +X163219600Y-92806400I0J125400D01* +G01* +X163219600Y-91480600D01* +G75* +G02* +X163345000Y-91355200I125400J0D01* +G01* +X163595800Y-91355200D01* +G75* +G02* +X163721200Y-91480600I0J-125400D01* +G01* +X163721200Y-92806400D01* +G75* +G02* +X163595800Y-92931800I-125400J0D01* +G01* +G37* +G36* +G01* +X164245800Y-92931800D02* +X163995000Y-92931800D01* +G75* +G02* +X163869600Y-92806400I0J125400D01* +G01* +X163869600Y-91480600D01* +G75* +G02* +X163995000Y-91355200I125400J0D01* +G01* +X164245800Y-91355200D01* +G75* +G02* +X164371200Y-91480600I0J-125400D01* +G01* +X164371200Y-92806400D01* +G75* +G02* +X164245800Y-92931800I-125400J0D01* +G01* +G37* +G36* +G01* +X164895800Y-92931800D02* +X164645000Y-92931800D01* +G75* +G02* +X164519600Y-92806400I0J125400D01* +G01* +X164519600Y-91480600D01* +G75* +G02* +X164645000Y-91355200I125400J0D01* +G01* +X164895800Y-91355200D01* +G75* +G02* +X165021200Y-91480600I0J-125400D01* +G01* +X165021200Y-92806400D01* +G75* +G02* +X164895800Y-92931800I-125400J0D01* +G01* +G37* +G36* +G01* +X165545800Y-92931800D02* +X165295000Y-92931800D01* +G75* +G02* +X165169600Y-92806400I0J125400D01* +G01* +X165169600Y-91480600D01* +G75* +G02* +X165295000Y-91355200I125400J0D01* +G01* +X165545800Y-91355200D01* +G75* +G02* +X165671200Y-91480600I0J-125400D01* +G01* +X165671200Y-92806400D01* +G75* +G02* +X165545800Y-92931800I-125400J0D01* +G01* +G37* +G36* +G01* +X166195800Y-92931800D02* +X165945000Y-92931800D01* +G75* +G02* +X165819600Y-92806400I0J125400D01* +G01* +X165819600Y-91480600D01* +G75* +G02* +X165945000Y-91355200I125400J0D01* +G01* +X166195800Y-91355200D01* +G75* +G02* +X166321200Y-91480600I0J-125400D01* +G01* +X166321200Y-92806400D01* +G75* +G02* +X166195800Y-92931800I-125400J0D01* +G01* +G37* +G36* +G01* +X166845800Y-92931800D02* +X166595000Y-92931800D01* +G75* +G02* +X166469600Y-92806400I0J125400D01* +G01* +X166469600Y-91480600D01* +G75* +G02* +X166595000Y-91355200I125400J0D01* +G01* +X166845800Y-91355200D01* +G75* +G02* +X166971200Y-91480600I0J-125400D01* +G01* +X166971200Y-92806400D01* +G75* +G02* +X166845800Y-92931800I-125400J0D01* +G01* +G37* +G36* +G01* +X167495800Y-92931800D02* +X167245000Y-92931800D01* +G75* +G02* +X167119600Y-92806400I0J125400D01* +G01* +X167119600Y-91480600D01* +G75* +G02* +X167245000Y-91355200I125400J0D01* +G01* +X167495800Y-91355200D01* +G75* +G02* +X167621200Y-91480600I0J-125400D01* +G01* +X167621200Y-92806400D01* +G75* +G02* +X167495800Y-92931800I-125400J0D01* +G01* +G37* +G36* +G01* +X168145800Y-92931800D02* +X167895000Y-92931800D01* +G75* +G02* +X167769600Y-92806400I0J125400D01* +G01* +X167769600Y-91480600D01* +G75* +G02* +X167895000Y-91355200I125400J0D01* +G01* +X168145800Y-91355200D01* +G75* +G02* +X168271200Y-91480600I0J-125400D01* +G01* +X168271200Y-92806400D01* +G75* +G02* +X168145800Y-92931800I-125400J0D01* +G01* +G37* +G36* +G01* +X168795800Y-92931800D02* +X168545000Y-92931800D01* +G75* +G02* +X168419600Y-92806400I0J125400D01* +G01* +X168419600Y-91480600D01* +G75* +G02* +X168545000Y-91355200I125400J0D01* +G01* +X168795800Y-91355200D01* +G75* +G02* +X168921200Y-91480600I0J-125400D01* +G01* +X168921200Y-92806400D01* +G75* +G02* +X168795800Y-92931800I-125400J0D01* +G01* +G37* +G36* +G01* +X169445800Y-92931800D02* +X169195000Y-92931800D01* +G75* +G02* +X169069600Y-92806400I0J125400D01* +G01* +X169069600Y-91480600D01* +G75* +G02* +X169195000Y-91355200I125400J0D01* +G01* +X169445800Y-91355200D01* +G75* +G02* +X169571200Y-91480600I0J-125400D01* +G01* +X169571200Y-92806400D01* +G75* +G02* +X169445800Y-92931800I-125400J0D01* +G01* +G37* +G36* +G01* +X152755400Y-101866400D02* +X151555400Y-101866400D01* +G75* +G02* +X151504600Y-101815600I0J50800D01* +G01* +X151504600Y-100615600D01* +G75* +G02* +X151555400Y-100564800I50800J0D01* +G01* +X152755400Y-100564800D01* +G75* +G02* +X152806200Y-100615600I0J-50800D01* +G01* +X152806200Y-101815600D01* +G75* +G02* +X152755400Y-101866400I-50800J0D01* +G01* +G37* +G36* +G01* +X150755400Y-101866400D02* +X149555400Y-101866400D01* +G75* +G02* +X149504600Y-101815600I0J50800D01* +G01* +X149504600Y-100615600D01* +G75* +G02* +X149555400Y-100564800I50800J0D01* +G01* +X150755400Y-100564800D01* +G75* +G02* +X150806200Y-100615600I0J-50800D01* +G01* +X150806200Y-101815600D01* +G75* +G02* +X150755400Y-101866400I-50800J0D01* +G01* +G37* +G36* +G01* +X151955400Y-98766400D02* +X150355400Y-98766400D01* +G75* +G02* +X150304600Y-98715600I0J50800D01* +G01* +X150304600Y-97215600D01* +G75* +G02* +X150355400Y-97164800I50800J0D01* +G01* +X151955400Y-97164800D01* +G75* +G02* +X152006200Y-97215600I0J-50800D01* +G01* +X152006200Y-98715600D01* +G75* +G02* +X151955400Y-98766400I-50800J0D01* +G01* +G37* +G36* +G01* +X158016000Y-81502479D02* +X158016000Y-82454521D01* +G75* +G02* +X157741221Y-82729300I-274779J0D01* +G01* +X157164179Y-82729300D01* +G75* +G02* +X156889400Y-82454521I0J274779D01* +G01* +X156889400Y-81502479D01* +G75* +G02* +X157164179Y-81227700I274779J0D01* +G01* +X157741221Y-81227700D01* +G75* +G02* +X158016000Y-81502479I0J-274779D01* +G01* +G37* +G36* +G01* +X156191000Y-81502479D02* +X156191000Y-82454521D01* +G75* +G02* +X155916221Y-82729300I-274779J0D01* +G01* +X155339179Y-82729300D01* +G75* +G02* +X155064400Y-82454521I0J274779D01* +G01* +X155064400Y-81502479D01* +G75* +G02* +X155339179Y-81227700I274779J0D01* +G01* +X155916221Y-81227700D01* +G75* +G02* +X156191000Y-81502479I0J-274779D01* +G01* +G37* +G36* +G01* +X136772421Y-83670200D02* +X135820379Y-83670200D01* +G75* +G02* +X135545600Y-83395421I0J274779D01* +G01* +X135545600Y-82818379D01* +G75* +G02* +X135820379Y-82543600I274779J0D01* +G01* +X136772421Y-82543600D01* +G75* +G02* +X137047200Y-82818379I0J-274779D01* +G01* +X137047200Y-83395421D01* +G75* +G02* +X136772421Y-83670200I-274779J0D01* +G01* +G37* +G36* +G01* +X136772421Y-81845200D02* +X135820379Y-81845200D01* +G75* +G02* +X135545600Y-81570421I0J274779D01* +G01* +X135545600Y-80993379D01* +G75* +G02* +X135820379Y-80718600I274779J0D01* +G01* +X136772421Y-80718600D01* +G75* +G02* +X137047200Y-80993379I0J-274779D01* +G01* +X137047200Y-81570421D01* +G75* +G02* +X136772421Y-81845200I-274779J0D01* +G01* +G37* +G36* +G01* +X145558600Y-98215221D02* +X145558600Y-97263179D01* +G75* +G02* +X145833379Y-96988400I274779J0D01* +G01* +X146410421Y-96988400D01* +G75* +G02* +X146685200Y-97263179I0J-274779D01* +G01* +X146685200Y-98215221D01* +G75* +G02* +X146410421Y-98490000I-274779J0D01* +G01* +X145833379Y-98490000D01* +G75* +G02* +X145558600Y-98215221I0J274779D01* +G01* +G37* +G36* +G01* +X147383600Y-98215221D02* +X147383600Y-97263179D01* +G75* +G02* +X147658379Y-96988400I274779J0D01* +G01* +X148235421Y-96988400D01* +G75* +G02* +X148510200Y-97263179I0J-274779D01* +G01* +X148510200Y-98215221D01* +G75* +G02* +X148235421Y-98490000I-274779J0D01* +G01* +X147658379Y-98490000D01* +G75* +G02* +X147383600Y-98215221I0J274779D01* +G01* +G37* +G36* +G01* +X141824800Y-98206755D02* +X141824800Y-97254713D01* +G75* +G02* +X142099579Y-96979934I274779J0D01* +G01* +X142676621Y-96979934D01* +G75* +G02* +X142951400Y-97254713I0J-274779D01* +G01* +X142951400Y-98206755D01* +G75* +G02* +X142676621Y-98481534I-274779J0D01* +G01* +X142099579Y-98481534D01* +G75* +G02* +X141824800Y-98206755I0J274779D01* +G01* +G37* +G36* +G01* +X143649800Y-98206755D02* +X143649800Y-97254713D01* +G75* +G02* +X143924579Y-96979934I274779J0D01* +G01* +X144501621Y-96979934D01* +G75* +G02* +X144776400Y-97254713I0J-274779D01* +G01* +X144776400Y-98206755D01* +G75* +G02* +X144501621Y-98481534I-274779J0D01* +G01* +X143924579Y-98481534D01* +G75* +G02* +X143649800Y-98206755I0J274779D01* +G01* +G37* +G36* +G01* +X159340779Y-101238000D02* +X160292821Y-101238000D01* +G75* +G02* +X160567600Y-101512779I0J-274779D01* +G01* +X160567600Y-102089821D01* +G75* +G02* +X160292821Y-102364600I-274779J0D01* +G01* +X159340779Y-102364600D01* +G75* +G02* +X159066000Y-102089821I0J274779D01* +G01* +X159066000Y-101512779D01* +G75* +G02* +X159340779Y-101238000I274779J0D01* +G01* +G37* +G36* +G01* +X159340779Y-99413000D02* +X160292821Y-99413000D01* +G75* +G02* +X160567600Y-99687779I0J-274779D01* +G01* +X160567600Y-100264821D01* +G75* +G02* +X160292821Y-100539600I-274779J0D01* +G01* +X159340779Y-100539600D01* +G75* +G02* +X159066000Y-100264821I0J274779D01* +G01* +X159066000Y-99687779D01* +G75* +G02* +X159340779Y-99413000I274779J0D01* +G01* +G37* +G36* +G01* +X172207321Y-82685300D02* +X171255279Y-82685300D01* +G75* +G02* +X170980500Y-82410521I0J274779D01* +G01* +X170980500Y-81833479D01* +G75* +G02* +X171255279Y-81558700I274779J0D01* +G01* +X172207321Y-81558700D01* +G75* +G02* +X172482100Y-81833479I0J-274779D01* +G01* +X172482100Y-82410521D01* +G75* +G02* +X172207321Y-82685300I-274779J0D01* +G01* +G37* +G36* +G01* +X172207321Y-84510300D02* +X171255279Y-84510300D01* +G75* +G02* +X170980500Y-84235521I0J274779D01* +G01* +X170980500Y-83658479D01* +G75* +G02* +X171255279Y-83383700I274779J0D01* +G01* +X172207321Y-83383700D01* +G75* +G02* +X172482100Y-83658479I0J-274779D01* +G01* +X172482100Y-84235521D01* +G75* +G02* +X172207321Y-84510300I-274779J0D01* +G01* +G37* +G36* +G01* +X150035200Y-96183221D02* +X150035200Y-95231179D01* +G75* +G02* +X150309979Y-94956400I274779J0D01* +G01* +X150887021Y-94956400D01* +G75* +G02* +X151161800Y-95231179I0J-274779D01* +G01* +X151161800Y-96183221D01* +G75* +G02* +X150887021Y-96458000I-274779J0D01* +G01* +X150309979Y-96458000D01* +G75* +G02* +X150035200Y-96183221I0J274779D01* +G01* +G37* +G36* +G01* +X151860200Y-96183221D02* +X151860200Y-95231179D01* +G75* +G02* +X152134979Y-94956400I274779J0D01* +G01* +X152712021Y-94956400D01* +G75* +G02* +X152986800Y-95231179I0J-274779D01* +G01* +X152986800Y-96183221D01* +G75* +G02* +X152712021Y-96458000I-274779J0D01* +G01* +X152134979Y-96458000D01* +G75* +G02* +X151860200Y-96183221I0J274779D01* +G01* +G37* +G36* +G01* +X172180021Y-88320300D02* +X171227979Y-88320300D01* +G75* +G02* +X170953200Y-88045521I0J274779D01* +G01* +X170953200Y-87468479D01* +G75* +G02* +X171227979Y-87193700I274779J0D01* +G01* +X172180021Y-87193700D01* +G75* +G02* +X172454800Y-87468479I0J-274779D01* +G01* +X172454800Y-88045521D01* +G75* +G02* +X172180021Y-88320300I-274779J0D01* +G01* +G37* +G36* +G01* +X172180021Y-90145300D02* +X171227979Y-90145300D01* +G75* +G02* +X170953200Y-89870521I0J274779D01* +G01* +X170953200Y-89293479D01* +G75* +G02* +X171227979Y-89018700I274779J0D01* +G01* +X172180021Y-89018700D01* +G75* +G02* +X172454800Y-89293479I0J-274779D01* +G01* +X172454800Y-89870521D01* +G75* +G02* +X172180021Y-90145300I-274779J0D01* +G01* +G37* +G36* +G01* +X131417000Y-91331821D02* +X131417000Y-90379779D01* +G75* +G02* +X131691779Y-90105000I274779J0D01* +G01* +X132268821Y-90105000D01* +G75* +G02* +X132543600Y-90379779I0J-274779D01* +G01* +X132543600Y-91331821D01* +G75* +G02* +X132268821Y-91606600I-274779J0D01* +G01* +X131691779Y-91606600D01* +G75* +G02* +X131417000Y-91331821I0J274779D01* +G01* +G37* +G36* +G01* +X133242000Y-91331821D02* +X133242000Y-90379779D01* +G75* +G02* +X133516779Y-90105000I274779J0D01* +G01* +X134093821Y-90105000D01* +G75* +G02* +X134368600Y-90379779I0J-274779D01* +G01* +X134368600Y-91331821D01* +G75* +G02* +X134093821Y-91606600I-274779J0D01* +G01* +X133516779Y-91606600D01* +G75* +G02* +X133242000Y-91331821I0J274779D01* +G01* +G37* +G36* +G01* +X145614400Y-99091668D02* +X146414400Y-99091668D01* +G75* +G02* +X146465200Y-99142468I0J-50800D01* +G01* +X146465200Y-100042468D01* +G75* +G02* +X146414400Y-100093268I-50800J0D01* +G01* +X145614400Y-100093268D01* +G75* +G02* +X145563600Y-100042468I0J50800D01* +G01* +X145563600Y-99142468D01* +G75* +G02* +X145614400Y-99091668I50800J0D01* +G01* +G37* +G36* +G01* +X147514400Y-99091668D02* +X148314400Y-99091668D01* +G75* +G02* +X148365200Y-99142468I0J-50800D01* +G01* +X148365200Y-100042468D01* +G75* +G02* +X148314400Y-100093268I-50800J0D01* +G01* +X147514400Y-100093268D01* +G75* +G02* +X147463600Y-100042468I0J50800D01* +G01* +X147463600Y-99142468D01* +G75* +G02* +X147514400Y-99091668I50800J0D01* +G01* +G37* +G36* +G01* +X146564400Y-101091668D02* +X147364400Y-101091668D01* +G75* +G02* +X147415200Y-101142468I0J-50800D01* +G01* +X147415200Y-102042468D01* +G75* +G02* +X147364400Y-102093268I-50800J0D01* +G01* +X146564400Y-102093268D01* +G75* +G02* +X146513600Y-102042468I0J50800D01* +G01* +X146513600Y-101142468D01* +G75* +G02* +X146564400Y-101091668I50800J0D01* +G01* +G37* +G36* +G01* +X141880600Y-99083200D02* +X142680600Y-99083200D01* +G75* +G02* +X142731400Y-99134000I0J-50800D01* +G01* +X142731400Y-100034000D01* +G75* +G02* +X142680600Y-100084800I-50800J0D01* +G01* +X141880600Y-100084800D01* +G75* +G02* +X141829800Y-100034000I0J50800D01* +G01* +X141829800Y-99134000D01* +G75* +G02* +X141880600Y-99083200I50800J0D01* +G01* +G37* +G36* +G01* +X143780600Y-99083200D02* +X144580600Y-99083200D01* +G75* +G02* +X144631400Y-99134000I0J-50800D01* +G01* +X144631400Y-100034000D01* +G75* +G02* +X144580600Y-100084800I-50800J0D01* +G01* +X143780600Y-100084800D01* +G75* +G02* +X143729800Y-100034000I0J50800D01* +G01* +X143729800Y-99134000D01* +G75* +G02* +X143780600Y-99083200I50800J0D01* +G01* +G37* +G36* +G01* +X142830600Y-101083200D02* +X143630600Y-101083200D01* +G75* +G02* +X143681400Y-101134000I0J-50800D01* +G01* +X143681400Y-102034000D01* +G75* +G02* +X143630600Y-102084800I-50800J0D01* +G01* +X142830600Y-102084800D01* +G75* +G02* +X142779800Y-102034000I0J50800D01* +G01* +X142779800Y-101134000D01* +G75* +G02* +X142830600Y-101083200I50800J0D01* +G01* +G37* +D10* +X163499800Y-81978500D03* +X166039800Y-81978500D03* +G36* +G01* +X167729800Y-81077700D02* +X169429800Y-81077700D01* +G75* +G02* +X169480600Y-81128500I0J-50800D01* +G01* +X169480600Y-82828500D01* +G75* +G02* +X169429800Y-82879300I-50800J0D01* +G01* +X167729800Y-82879300D01* +G75* +G02* +X167679000Y-82828500I0J50800D01* +G01* +X167679000Y-81128500D01* +G75* +G02* +X167729800Y-81077700I50800J0D01* +G01* +G37* +G36* +G01* +X131503300Y-107470100D02* +X131503300Y-104899300D01* +G75* +G02* +X132318700Y-104083900I815400J0D01* +G01* +X133949500Y-104083900D01* +G75* +G02* +X134764900Y-104899300I0J-815400D01* +G01* +X134764900Y-107470100D01* +G75* +G02* +X133949500Y-108285500I-815400J0D01* +G01* +X132318700Y-108285500D01* +G75* +G02* +X131503300Y-107470100I0J815400D01* +G01* +G37* +D11* +X137094100Y-106184700D03* +X141054100Y-106184700D03* +X144934100Y-106184700D03* +X148974100Y-106184700D03* +X152934100Y-106184700D03* +G36* +G01* +X138191200Y-91977000D02* +X138191200Y-90727000D01* +G75* +G02* +X138242000Y-90676200I50800J0D01* +G01* +X138542000Y-90676200D01* +G75* +G02* +X138592800Y-90727000I0J-50800D01* +G01* +X138592800Y-91977000D01* +G75* +G02* +X138542000Y-92027800I-50800J0D01* +G01* +X138242000Y-92027800D01* +G75* +G02* +X138191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X135801200Y-90527000D02* +X135801200Y-87527000D01* +G75* +G02* +X135852000Y-87476200I50800J0D01* +G01* +X137852000Y-87476200D01* +G75* +G02* +X137902800Y-87527000I0J-50800D01* +G01* +X137902800Y-90527000D01* +G75* +G02* +X137852000Y-90577800I-50800J0D01* +G01* +X135852000Y-90577800D01* +G75* +G02* +X135801200Y-90527000I0J50800D01* +G01* +G37* +G36* +G01* +X153381200Y-90527000D02* +X153381200Y-87527000D01* +G75* +G02* +X153432000Y-87476200I50800J0D01* +G01* +X155432000Y-87476200D01* +G75* +G02* +X155482800Y-87527000I0J-50800D01* +G01* +X155482800Y-90527000D01* +G75* +G02* +X155432000Y-90577800I-50800J0D01* +G01* +X153432000Y-90577800D01* +G75* +G02* +X153381200Y-90527000I0J50800D01* +G01* +G37* +G36* +G01* +X138691200Y-91977000D02* +X138691200Y-90727000D01* +G75* +G02* +X138742000Y-90676200I50800J0D01* +G01* +X139042000Y-90676200D01* +G75* +G02* +X139092800Y-90727000I0J-50800D01* +G01* +X139092800Y-91977000D01* +G75* +G02* +X139042000Y-92027800I-50800J0D01* +G01* +X138742000Y-92027800D01* +G75* +G02* +X138691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X139191200Y-91977000D02* +X139191200Y-90727000D01* +G75* +G02* +X139242000Y-90676200I50800J0D01* +G01* +X139542000Y-90676200D01* +G75* +G02* +X139592800Y-90727000I0J-50800D01* +G01* +X139592800Y-91977000D01* +G75* +G02* +X139542000Y-92027800I-50800J0D01* +G01* +X139242000Y-92027800D01* +G75* +G02* +X139191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X139691200Y-91977000D02* +X139691200Y-90727000D01* +G75* +G02* +X139742000Y-90676200I50800J0D01* +G01* +X140042000Y-90676200D01* +G75* +G02* +X140092800Y-90727000I0J-50800D01* +G01* +X140092800Y-91977000D01* +G75* +G02* +X140042000Y-92027800I-50800J0D01* +G01* +X139742000Y-92027800D01* +G75* +G02* +X139691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X140191200Y-91977000D02* +X140191200Y-90727000D01* +G75* +G02* +X140242000Y-90676200I50800J0D01* +G01* +X140542000Y-90676200D01* +G75* +G02* +X140592800Y-90727000I0J-50800D01* +G01* +X140592800Y-91977000D01* +G75* +G02* +X140542000Y-92027800I-50800J0D01* +G01* +X140242000Y-92027800D01* +G75* +G02* +X140191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X140691200Y-91977000D02* +X140691200Y-90727000D01* +G75* +G02* +X140742000Y-90676200I50800J0D01* +G01* +X141042000Y-90676200D01* +G75* +G02* +X141092800Y-90727000I0J-50800D01* +G01* +X141092800Y-91977000D01* +G75* +G02* +X141042000Y-92027800I-50800J0D01* +G01* +X140742000Y-92027800D01* +G75* +G02* +X140691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X141191200Y-91977000D02* +X141191200Y-90727000D01* +G75* +G02* +X141242000Y-90676200I50800J0D01* +G01* +X141542000Y-90676200D01* +G75* +G02* +X141592800Y-90727000I0J-50800D01* +G01* +X141592800Y-91977000D01* +G75* +G02* +X141542000Y-92027800I-50800J0D01* +G01* +X141242000Y-92027800D01* +G75* +G02* +X141191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X141691200Y-91977000D02* +X141691200Y-90727000D01* +G75* +G02* +X141742000Y-90676200I50800J0D01* +G01* +X142042000Y-90676200D01* +G75* +G02* +X142092800Y-90727000I0J-50800D01* +G01* +X142092800Y-91977000D01* +G75* +G02* +X142042000Y-92027800I-50800J0D01* +G01* +X141742000Y-92027800D01* +G75* +G02* +X141691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X142191200Y-91977000D02* +X142191200Y-90727000D01* +G75* +G02* +X142242000Y-90676200I50800J0D01* +G01* +X142542000Y-90676200D01* +G75* +G02* +X142592800Y-90727000I0J-50800D01* +G01* +X142592800Y-91977000D01* +G75* +G02* +X142542000Y-92027800I-50800J0D01* +G01* +X142242000Y-92027800D01* +G75* +G02* +X142191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X142691200Y-91977000D02* +X142691200Y-90727000D01* +G75* +G02* +X142742000Y-90676200I50800J0D01* +G01* +X143042000Y-90676200D01* +G75* +G02* +X143092800Y-90727000I0J-50800D01* +G01* +X143092800Y-91977000D01* +G75* +G02* +X143042000Y-92027800I-50800J0D01* +G01* +X142742000Y-92027800D01* +G75* +G02* +X142691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X143191200Y-91977000D02* +X143191200Y-90727000D01* +G75* +G02* +X143242000Y-90676200I50800J0D01* +G01* +X143542000Y-90676200D01* +G75* +G02* +X143592800Y-90727000I0J-50800D01* +G01* +X143592800Y-91977000D01* +G75* +G02* +X143542000Y-92027800I-50800J0D01* +G01* +X143242000Y-92027800D01* +G75* +G02* +X143191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X143691200Y-91977000D02* +X143691200Y-90727000D01* +G75* +G02* +X143742000Y-90676200I50800J0D01* +G01* +X144042000Y-90676200D01* +G75* +G02* +X144092800Y-90727000I0J-50800D01* +G01* +X144092800Y-91977000D01* +G75* +G02* +X144042000Y-92027800I-50800J0D01* +G01* +X143742000Y-92027800D01* +G75* +G02* +X143691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X144191200Y-91977000D02* +X144191200Y-90727000D01* +G75* +G02* +X144242000Y-90676200I50800J0D01* +G01* +X144542000Y-90676200D01* +G75* +G02* +X144592800Y-90727000I0J-50800D01* +G01* +X144592800Y-91977000D01* +G75* +G02* +X144542000Y-92027800I-50800J0D01* +G01* +X144242000Y-92027800D01* +G75* +G02* +X144191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X144691200Y-91977000D02* +X144691200Y-90727000D01* +G75* +G02* +X144742000Y-90676200I50800J0D01* +G01* +X145042000Y-90676200D01* +G75* +G02* +X145092800Y-90727000I0J-50800D01* +G01* +X145092800Y-91977000D01* +G75* +G02* +X145042000Y-92027800I-50800J0D01* +G01* +X144742000Y-92027800D01* +G75* +G02* +X144691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X145191200Y-91977000D02* +X145191200Y-90727000D01* +G75* +G02* +X145242000Y-90676200I50800J0D01* +G01* +X145542000Y-90676200D01* +G75* +G02* +X145592800Y-90727000I0J-50800D01* +G01* +X145592800Y-91977000D01* +G75* +G02* +X145542000Y-92027800I-50800J0D01* +G01* +X145242000Y-92027800D01* +G75* +G02* +X145191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X145691200Y-91977000D02* +X145691200Y-90727000D01* +G75* +G02* +X145742000Y-90676200I50800J0D01* +G01* +X146042000Y-90676200D01* +G75* +G02* +X146092800Y-90727000I0J-50800D01* +G01* +X146092800Y-91977000D01* +G75* +G02* +X146042000Y-92027800I-50800J0D01* +G01* +X145742000Y-92027800D01* +G75* +G02* +X145691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X146191200Y-91977000D02* +X146191200Y-90727000D01* +G75* +G02* +X146242000Y-90676200I50800J0D01* +G01* +X146542000Y-90676200D01* +G75* +G02* +X146592800Y-90727000I0J-50800D01* +G01* +X146592800Y-91977000D01* +G75* +G02* +X146542000Y-92027800I-50800J0D01* +G01* +X146242000Y-92027800D01* +G75* +G02* +X146191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X146691200Y-91977000D02* +X146691200Y-90727000D01* +G75* +G02* +X146742000Y-90676200I50800J0D01* +G01* +X147042000Y-90676200D01* +G75* +G02* +X147092800Y-90727000I0J-50800D01* +G01* +X147092800Y-91977000D01* +G75* +G02* +X147042000Y-92027800I-50800J0D01* +G01* +X146742000Y-92027800D01* +G75* +G02* +X146691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X147191200Y-91977000D02* +X147191200Y-90727000D01* +G75* +G02* +X147242000Y-90676200I50800J0D01* +G01* +X147542000Y-90676200D01* +G75* +G02* +X147592800Y-90727000I0J-50800D01* +G01* +X147592800Y-91977000D01* +G75* +G02* +X147542000Y-92027800I-50800J0D01* +G01* +X147242000Y-92027800D01* +G75* +G02* +X147191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X147691200Y-91977000D02* +X147691200Y-90727000D01* +G75* +G02* +X147742000Y-90676200I50800J0D01* +G01* +X148042000Y-90676200D01* +G75* +G02* +X148092800Y-90727000I0J-50800D01* +G01* +X148092800Y-91977000D01* +G75* +G02* +X148042000Y-92027800I-50800J0D01* +G01* +X147742000Y-92027800D01* +G75* +G02* +X147691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X148191200Y-91977000D02* +X148191200Y-90727000D01* +G75* +G02* +X148242000Y-90676200I50800J0D01* +G01* +X148542000Y-90676200D01* +G75* +G02* +X148592800Y-90727000I0J-50800D01* +G01* +X148592800Y-91977000D01* +G75* +G02* +X148542000Y-92027800I-50800J0D01* +G01* +X148242000Y-92027800D01* +G75* +G02* +X148191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X148691200Y-91977000D02* +X148691200Y-90727000D01* +G75* +G02* +X148742000Y-90676200I50800J0D01* +G01* +X149042000Y-90676200D01* +G75* +G02* +X149092800Y-90727000I0J-50800D01* +G01* +X149092800Y-91977000D01* +G75* +G02* +X149042000Y-92027800I-50800J0D01* +G01* +X148742000Y-92027800D01* +G75* +G02* +X148691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X149191200Y-91977000D02* +X149191200Y-90727000D01* +G75* +G02* +X149242000Y-90676200I50800J0D01* +G01* +X149542000Y-90676200D01* +G75* +G02* +X149592800Y-90727000I0J-50800D01* +G01* +X149592800Y-91977000D01* +G75* +G02* +X149542000Y-92027800I-50800J0D01* +G01* +X149242000Y-92027800D01* +G75* +G02* +X149191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X149691200Y-91977000D02* +X149691200Y-90727000D01* +G75* +G02* +X149742000Y-90676200I50800J0D01* +G01* +X150042000Y-90676200D01* +G75* +G02* +X150092800Y-90727000I0J-50800D01* +G01* +X150092800Y-91977000D01* +G75* +G02* +X150042000Y-92027800I-50800J0D01* +G01* +X149742000Y-92027800D01* +G75* +G02* +X149691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X150191200Y-91977000D02* +X150191200Y-90727000D01* +G75* +G02* +X150242000Y-90676200I50800J0D01* +G01* +X150542000Y-90676200D01* +G75* +G02* +X150592800Y-90727000I0J-50800D01* +G01* +X150592800Y-91977000D01* +G75* +G02* +X150542000Y-92027800I-50800J0D01* +G01* +X150242000Y-92027800D01* +G75* +G02* +X150191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X150691200Y-91977000D02* +X150691200Y-90727000D01* +G75* +G02* +X150742000Y-90676200I50800J0D01* +G01* +X151042000Y-90676200D01* +G75* +G02* +X151092800Y-90727000I0J-50800D01* +G01* +X151092800Y-91977000D01* +G75* +G02* +X151042000Y-92027800I-50800J0D01* +G01* +X150742000Y-92027800D01* +G75* +G02* +X150691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X151191200Y-91977000D02* +X151191200Y-90727000D01* +G75* +G02* +X151242000Y-90676200I50800J0D01* +G01* +X151542000Y-90676200D01* +G75* +G02* +X151592800Y-90727000I0J-50800D01* +G01* +X151592800Y-91977000D01* +G75* +G02* +X151542000Y-92027800I-50800J0D01* +G01* +X151242000Y-92027800D01* +G75* +G02* +X151191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X151691200Y-91977000D02* +X151691200Y-90727000D01* +G75* +G02* +X151742000Y-90676200I50800J0D01* +G01* +X152042000Y-90676200D01* +G75* +G02* +X152092800Y-90727000I0J-50800D01* +G01* +X152092800Y-91977000D01* +G75* +G02* +X152042000Y-92027800I-50800J0D01* +G01* +X151742000Y-92027800D01* +G75* +G02* +X151691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X152191200Y-91977000D02* +X152191200Y-90727000D01* +G75* +G02* +X152242000Y-90676200I50800J0D01* +G01* +X152542000Y-90676200D01* +G75* +G02* +X152592800Y-90727000I0J-50800D01* +G01* +X152592800Y-91977000D01* +G75* +G02* +X152542000Y-92027800I-50800J0D01* +G01* +X152242000Y-92027800D01* +G75* +G02* +X152191200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X152691200Y-91977000D02* +X152691200Y-90727000D01* +G75* +G02* +X152742000Y-90676200I50800J0D01* +G01* +X153042000Y-90676200D01* +G75* +G02* +X153092800Y-90727000I0J-50800D01* +G01* +X153092800Y-91977000D01* +G75* +G02* +X153042000Y-92027800I-50800J0D01* +G01* +X152742000Y-92027800D01* +G75* +G02* +X152691200Y-91977000I0J50800D01* +G01* +G37* +G36* +G01* +X162124600Y-101637400D02* +X161674600Y-101637400D01* +G75* +G02* +X161623800Y-101586600I0J50800D01* +G01* +X161623800Y-100986600D01* +G75* +G02* +X161674600Y-100935800I50800J0D01* +G01* +X162124600Y-100935800D01* +G75* +G02* +X162175400Y-100986600I0J-50800D01* +G01* +X162175400Y-101586600D01* +G75* +G02* +X162124600Y-101637400I-50800J0D01* +G01* +G37* +G36* +G01* +X162124600Y-103737400D02* +X161674600Y-103737400D01* +G75* +G02* +X161623800Y-103686600I0J50800D01* +G01* +X161623800Y-103086600D01* +G75* +G02* +X161674600Y-103035800I50800J0D01* +G01* +X162124600Y-103035800D01* +G75* +G02* +X162175400Y-103086600I0J-50800D01* +G01* +X162175400Y-103686600D01* +G75* +G02* +X162124600Y-103737400I-50800J0D01* +G01* +G37* +G36* +G01* +X154820600Y-92987200D02* +X155821400Y-92987200D01* +G75* +G02* +X156096800Y-93262600I0J-275400D01* +G01* +X156096800Y-93813400D01* +G75* +G02* +X155821400Y-94088800I-275400J0D01* +G01* +X154820600Y-94088800D01* +G75* +G02* +X154545200Y-93813400I0J275400D01* +G01* +X154545200Y-93262600D01* +G75* +G02* +X154820600Y-92987200I275400J0D01* +G01* +G37* +G36* +G01* +X154820600Y-94887200D02* +X155821400Y-94887200D01* +G75* +G02* +X156096800Y-95162600I0J-275400D01* +G01* +X156096800Y-95713400D01* +G75* +G02* +X155821400Y-95988800I-275400J0D01* +G01* +X154820600Y-95988800D01* +G75* +G02* +X154545200Y-95713400I0J275400D01* +G01* +X154545200Y-95162600D01* +G75* +G02* +X154820600Y-94887200I275400J0D01* +G01* +G37* +G36* +G01* +X158543800Y-97543600D02* +X158543800Y-98544400D01* +G75* +G02* +X158268400Y-98819800I-275400J0D01* +G01* +X157717600Y-98819800D01* +G75* +G02* +X157442200Y-98544400I0J275400D01* +G01* +X157442200Y-97543600D01* +G75* +G02* +X157717600Y-97268200I275400J0D01* +G01* +X158268400Y-97268200D01* +G75* +G02* +X158543800Y-97543600I0J-275400D01* +G01* +G37* +G36* +G01* +X160443800Y-97543600D02* +X160443800Y-98544400D01* +G75* +G02* +X160168400Y-98819800I-275400J0D01* +G01* +X159617600Y-98819800D01* +G75* +G02* +X159342200Y-98544400I0J275400D01* +G01* +X159342200Y-97543600D01* +G75* +G02* +X159617600Y-97268200I275400J0D01* +G01* +X160168400Y-97268200D01* +G75* +G02* +X160443800Y-97543600I0J-275400D01* +G01* +G37* +G36* +G01* +X132435813Y-93710400D02* +X133349787Y-93710400D01* +G75* +G02* +X133618600Y-93979213I0J-268813D01* +G01* +X133618600Y-94943187D01* +G75* +G02* +X133349787Y-95212000I-268813J0D01* +G01* +X132435813Y-95212000D01* +G75* +G02* +X132167000Y-94943187I0J268813D01* +G01* +X132167000Y-93979213D01* +G75* +G02* +X132435813Y-93710400I268813J0D01* +G01* +G37* +G36* +G01* +X132435813Y-96410400D02* +X133349787Y-96410400D01* +G75* +G02* +X133618600Y-96679213I0J-268813D01* +G01* +X133618600Y-97643187D01* +G75* +G02* +X133349787Y-97912000I-268813J0D01* +G01* +X132435813Y-97912000D01* +G75* +G02* +X132167000Y-97643187I0J268813D01* +G01* +X132167000Y-96679213D01* +G75* +G02* +X132435813Y-96410400I268813J0D01* +G01* +G37* +G36* +G01* +X132462400Y-99065400D02* +X133463200Y-99065400D01* +G75* +G02* +X133738600Y-99340800I0J-275400D01* +G01* +X133738600Y-99891600D01* +G75* +G02* +X133463200Y-100167000I-275400J0D01* +G01* +X132462400Y-100167000D01* +G75* +G02* +X132187000Y-99891600I0J275400D01* +G01* +X132187000Y-99340800D01* +G75* +G02* +X132462400Y-99065400I275400J0D01* +G01* +G37* +G36* +G01* +X132462400Y-100965400D02* +X133463200Y-100965400D01* +G75* +G02* +X133738600Y-101240800I0J-275400D01* +G01* +X133738600Y-101791600D01* +G75* +G02* +X133463200Y-102067000I-275400J0D01* +G01* +X132462400Y-102067000D01* +G75* +G02* +X132187000Y-101791600I0J275400D01* +G01* +X132187000Y-101240800D01* +G75* +G02* +X132462400Y-100965400I275400J0D01* +G01* +G37* +G36* +G01* +X164253800Y-93860600D02* +X164253800Y-94861400D01* +G75* +G02* +X163978400Y-95136800I-275400J0D01* +G01* +X163427600Y-95136800D01* +G75* +G02* +X163152200Y-94861400I0J275400D01* +G01* +X163152200Y-93860600D01* +G75* +G02* +X163427600Y-93585200I275400J0D01* +G01* +X163978400Y-93585200D01* +G75* +G02* +X164253800Y-93860600I0J-275400D01* +G01* +G37* +G36* +G01* +X166153800Y-93860600D02* +X166153800Y-94861400D01* +G75* +G02* +X165878400Y-95136800I-275400J0D01* +G01* +X165327600Y-95136800D01* +G75* +G02* +X165052200Y-94861400I0J275400D01* +G01* +X165052200Y-93860600D01* +G75* +G02* +X165327600Y-93585200I275400J0D01* +G01* +X165878400Y-93585200D01* +G75* +G02* +X166153800Y-93860600I0J-275400D01* +G01* +G37* +G36* +G01* +X162400000Y-98381400D02* +X161399200Y-98381400D01* +G75* +G02* +X161123800Y-98106000I0J275400D01* +G01* +X161123800Y-97555200D01* +G75* +G02* +X161399200Y-97279800I275400J0D01* +G01* +X162400000Y-97279800D01* +G75* +G02* +X162675400Y-97555200I0J-275400D01* +G01* +X162675400Y-98106000D01* +G75* +G02* +X162400000Y-98381400I-275400J0D01* +G01* +G37* +G36* +G01* +X162400000Y-100281400D02* +X161399200Y-100281400D01* +G75* +G02* +X161123800Y-100006000I0J275400D01* +G01* +X161123800Y-99455200D01* +G75* +G02* +X161399200Y-99179800I275400J0D01* +G01* +X162400000Y-99179800D01* +G75* +G02* +X162675400Y-99455200I0J-275400D01* +G01* +X162675400Y-100006000D01* +G75* +G02* +X162400000Y-100281400I-275400J0D01* +G01* +G37* +G36* +G01* +X145823600Y-95156000D02* +X145823600Y-96156800D01* +G75* +G02* +X145548200Y-96432200I-275400J0D01* +G01* +X144997400Y-96432200D01* +G75* +G02* +X144722000Y-96156800I0J275400D01* +G01* +X144722000Y-95156000D01* +G75* +G02* +X144997400Y-94880600I275400J0D01* +G01* +X145548200Y-94880600D01* +G75* +G02* +X145823600Y-95156000I0J-275400D01* +G01* +G37* +G36* +G01* +X143923600Y-95156000D02* +X143923600Y-96156800D01* +G75* +G02* +X143648200Y-96432200I-275400J0D01* +G01* +X143097400Y-96432200D01* +G75* +G02* +X142822000Y-96156800I0J275400D01* +G01* +X142822000Y-95156000D01* +G75* +G02* +X143097400Y-94880600I275400J0D01* +G01* +X143648200Y-94880600D01* +G75* +G02* +X143923600Y-95156000I0J-275400D01* +G01* +G37* +G36* +G01* +X146428800Y-96182200D02* +X146428800Y-95181400D01* +G75* +G02* +X146704200Y-94906000I275400J0D01* +G01* +X147255000Y-94906000D01* +G75* +G02* +X147530400Y-95181400I0J-275400D01* +G01* +X147530400Y-96182200D01* +G75* +G02* +X147255000Y-96457600I-275400J0D01* +G01* +X146704200Y-96457600D01* +G75* +G02* +X146428800Y-96182200I0J275400D01* +G01* +G37* +G36* +G01* +X148328800Y-96182200D02* +X148328800Y-95181400D01* +G75* +G02* +X148604200Y-94906000I275400J0D01* +G01* +X149155000Y-94906000D01* +G75* +G02* +X149430400Y-95181400I0J-275400D01* +G01* +X149430400Y-96182200D01* +G75* +G02* +X149155000Y-96457600I-275400J0D01* +G01* +X148604200Y-96457600D01* +G75* +G02* +X148328800Y-96182200I0J275400D01* +G01* +G37* +G36* +G01* +X172204400Y-92117800D02* +X171203600Y-92117800D01* +G75* +G02* +X170928200Y-91842400I0J275400D01* +G01* +X170928200Y-91291600D01* +G75* +G02* +X171203600Y-91016200I275400J0D01* +G01* +X172204400Y-91016200D01* +G75* +G02* +X172479800Y-91291600I0J-275400D01* +G01* +X172479800Y-91842400D01* +G75* +G02* +X172204400Y-92117800I-275400J0D01* +G01* +G37* +G36* +G01* +X172204400Y-94017800D02* +X171203600Y-94017800D01* +G75* +G02* +X170928200Y-93742400I0J275400D01* +G01* +X170928200Y-93191600D01* +G75* +G02* +X171203600Y-92916200I275400J0D01* +G01* +X172204400Y-92916200D01* +G75* +G02* +X172479800Y-93191600I0J-275400D01* +G01* +X172479800Y-93742400D01* +G75* +G02* +X172204400Y-94017800I-275400J0D01* +G01* +G37* +G36* +G01* +X134413600Y-88323400D02* +X134413600Y-89324200D01* +G75* +G02* +X134138200Y-89599600I-275400J0D01* +G01* +X133587400Y-89599600D01* +G75* +G02* +X133312000Y-89324200I0J275400D01* +G01* +X133312000Y-88323400D01* +G75* +G02* +X133587400Y-88048000I275400J0D01* +G01* +X134138200Y-88048000D01* +G75* +G02* +X134413600Y-88323400I0J-275400D01* +G01* +G37* +G36* +G01* +X132513600Y-88323400D02* +X132513600Y-89324200D01* +G75* +G02* +X132238200Y-89599600I-275400J0D01* +G01* +X131687400Y-89599600D01* +G75* +G02* +X131412000Y-89324200I0J275400D01* +G01* +X131412000Y-88323400D01* +G75* +G02* +X131687400Y-88048000I275400J0D01* +G01* +X132238200Y-88048000D01* +G75* +G02* +X132513600Y-88323400I0J-275400D01* +G01* +G37* +G36* +G01* +X165646400Y-105213800D02* +X163346400Y-105213800D01* +G75* +G02* +X163295600Y-105163000I0J50800D01* +G01* +X163295600Y-102863000D01* +G75* +G02* +X163346400Y-102812200I50800J0D01* +G01* +X165646400Y-102812200D01* +G75* +G02* +X165697200Y-102863000I0J-50800D01* +G01* +X165697200Y-105163000D01* +G75* +G02* +X165646400Y-105213800I-50800J0D01* +G01* +G37* +G36* +G01* +X165646400Y-98113800D02* +X163346400Y-98113800D01* +G75* +G02* +X163295600Y-98063000I0J50800D01* +G01* +X163295600Y-95763000D01* +G75* +G02* +X163346400Y-95712200I50800J0D01* +G01* +X165646400Y-95712200D01* +G75* +G02* +X165697200Y-95763000I0J-50800D01* +G01* +X165697200Y-98063000D01* +G75* +G02* +X165646400Y-98113800I-50800J0D01* +G01* +G37* +G36* +G01* +X172746400Y-98113800D02* +X170446400Y-98113800D01* +G75* +G02* +X170395600Y-98063000I0J50800D01* +G01* +X170395600Y-95763000D01* +G75* +G02* +X170446400Y-95712200I50800J0D01* +G01* +X172746400Y-95712200D01* +G75* +G02* +X172797200Y-95763000I0J-50800D01* +G01* +X172797200Y-98063000D01* +G75* +G02* +X172746400Y-98113800I-50800J0D01* +G01* +G37* +G36* +G01* +X172746400Y-105213800D02* +X170446400Y-105213800D01* +G75* +G02* +X170395600Y-105163000I0J50800D01* +G01* +X170395600Y-102863000D01* +G75* +G02* +X170446400Y-102812200I50800J0D01* +G01* +X172746400Y-102812200D01* +G75* +G02* +X172797200Y-102863000I0J-50800D01* +G01* +X172797200Y-105163000D01* +G75* +G02* +X172746400Y-105213800I-50800J0D01* +G01* +G37* +D12* +X131658360Y-84038440D03* +X134411720Y-84040980D03* +G36* +G01* +X134391400Y-82219800D02* +X133400800Y-82219800D01* +G75* +G02* +X133350000Y-82169000I0J50800D01* +G01* +X133350000Y-80619600D01* +G75* +G02* +X133400800Y-80568800I50800J0D01* +G01* +X134391400Y-80568800D01* +G75* +G02* +X134442200Y-80619600I0J-50800D01* +G01* +X134442200Y-82169000D01* +G75* +G02* +X134391400Y-82219800I-50800J0D01* +G01* +G37* +G36* +G01* +X134391400Y-87477600D02* +X133400800Y-87477600D01* +G75* +G02* +X133350000Y-87426800I0J50800D01* +G01* +X133350000Y-85877400D01* +G75* +G02* +X133400800Y-85826600I50800J0D01* +G01* +X134391400Y-85826600D01* +G75* +G02* +X134442200Y-85877400I0J-50800D01* +G01* +X134442200Y-87426800D01* +G75* +G02* +X134391400Y-87477600I-50800J0D01* +G01* +G37* +G36* +G01* +X132638800Y-82219800D02* +X131648200Y-82219800D01* +G75* +G02* +X131597400Y-82169000I0J50800D01* +G01* +X131597400Y-80619600D01* +G75* +G02* +X131648200Y-80568800I50800J0D01* +G01* +X132638800Y-80568800D01* +G75* +G02* +X132689600Y-80619600I0J-50800D01* +G01* +X132689600Y-82169000D01* +G75* +G02* +X132638800Y-82219800I-50800J0D01* +G01* +G37* +G36* +G01* +X132638800Y-87477600D02* +X131648200Y-87477600D01* +G75* +G02* +X131597400Y-87426800I0J50800D01* +G01* +X131597400Y-85877400D01* +G75* +G02* +X131648200Y-85826600I50800J0D01* +G01* +X132638800Y-85826600D01* +G75* +G02* +X132689600Y-85877400I0J-50800D01* +G01* +X132689600Y-87426800D01* +G75* +G02* +X132638800Y-87477600I-50800J0D01* +G01* +G37* +D13* +G36* +X134766065Y-107468474D02* +G01* +X134766900Y-107470100D01* +X134766900Y-107526460D01* +X134766890Y-107526656D01* +X134751830Y-107679560D01* +X134751754Y-107679945D01* +X134708943Y-107821074D01* +X134708793Y-107821436D01* +X134639275Y-107951495D01* +X134639057Y-107951821D01* +X134545499Y-108065822D01* +X134545222Y-108066099D01* +X134431221Y-108159657D01* +X134430895Y-108159875D01* +X134300836Y-108229393D01* +X134300474Y-108229543D01* +X134159345Y-108272354D01* +X134158960Y-108272430D01* +X134006056Y-108287490D01* +X134005860Y-108287500D01* +X133949500Y-108287500D01* +X133947768Y-108286500D01* +X133947768Y-108284500D01* +X133949304Y-108283510D01* +X134108182Y-108267862D01* +X134260771Y-108221574D01* +X134401396Y-108146409D01* +X134524654Y-108045254D01* +X134625809Y-107921996D01* +X134700974Y-107781371D01* +X134747262Y-107628782D01* +X134762910Y-107469904D01* +X134764075Y-107468278D01* +X134766065Y-107468474D01* +G37* +G36* +X131505290Y-107469904D02* +G01* +X131520938Y-107628782D01* +X131567226Y-107781371D01* +X131642391Y-107921996D01* +X131743546Y-108045254D01* +X131866804Y-108146409D01* +X132007429Y-108221574D01* +X132160018Y-108267862D01* +X132318896Y-108283510D01* +X132320522Y-108284675D01* +X132320326Y-108286665D01* +X132318700Y-108287500D01* +X132262340Y-108287500D01* +X132262144Y-108287490D01* +X132109240Y-108272430D01* +X132108855Y-108272354D01* +X131967726Y-108229543D01* +X131967364Y-108229393D01* +X131837305Y-108159875D01* +X131836979Y-108159657D01* +X131722978Y-108066099D01* +X131722701Y-108065822D01* +X131629143Y-107951821D01* +X131628925Y-107951495D01* +X131559407Y-107821436D01* +X131559257Y-107821074D01* +X131516446Y-107679945D01* +X131516370Y-107679560D01* +X131501310Y-107526656D01* +X131501300Y-107526460D01* +X131501300Y-107470100D01* +X131502300Y-107468368D01* +X131504300Y-107468368D01* +X131505290Y-107469904D01* +G37* +G36* +X132320432Y-104082900D02* +G01* +X132320432Y-104084900D01* +X132318896Y-104085890D01* +X132160018Y-104101538D01* +X132007429Y-104147826D01* +X131866804Y-104222991D01* +X131743546Y-104324146D01* +X131642391Y-104447404D01* +X131567226Y-104588029D01* +X131520938Y-104740618D01* +X131505290Y-104899496D01* +X131504125Y-104901122D01* +X131502135Y-104900926D01* +X131501300Y-104899300D01* +X131501300Y-104842940D01* +X131501310Y-104842744D01* +X131516370Y-104689840D01* +X131516446Y-104689455D01* +X131559257Y-104548326D01* +X131559407Y-104547964D01* +X131628925Y-104417905D01* +X131629143Y-104417579D01* +X131722701Y-104303578D01* +X131722978Y-104303301D01* +X131836979Y-104209743D01* +X131837305Y-104209525D01* +X131967364Y-104140007D01* +X131967726Y-104139857D01* +X132108855Y-104097046D01* +X132109240Y-104096970D01* +X132262144Y-104081910D01* +X132262340Y-104081900D01* +X132318700Y-104081900D01* +X132320432Y-104082900D01* +G37* +G36* +X134006056Y-104081910D02* +G01* +X134158960Y-104096970D01* +X134159345Y-104097046D01* +X134300474Y-104139857D01* +X134300836Y-104140007D01* +X134430895Y-104209525D01* +X134431221Y-104209743D01* +X134545222Y-104303301D01* +X134545499Y-104303578D01* +X134639057Y-104417579D01* +X134639275Y-104417905D01* +X134708793Y-104547964D01* +X134708943Y-104548326D01* +X134751754Y-104689455D01* +X134751830Y-104689840D01* +X134766890Y-104842744D01* +X134766900Y-104842940D01* +X134766900Y-104899300D01* +X134765900Y-104901032D01* +X134763900Y-104901032D01* +X134762910Y-104899496D01* +X134747262Y-104740618D01* +X134700974Y-104588029D01* +X134625809Y-104447404D01* +X134524654Y-104324146D01* +X134401396Y-104222991D01* +X134260771Y-104147826D01* +X134108182Y-104101538D01* +X133949304Y-104085890D01* +X133947678Y-104084725D01* +X133947874Y-104082735D01* +X133949500Y-104081900D01* +X134005860Y-104081900D01* +X134006056Y-104081910D01* +G37* +G36* +X166902358Y-91353210D02* +G01* +X166920650Y-91355011D01* +X166921035Y-91355087D01* +X166932717Y-91358631D01* +X166933079Y-91358781D01* +X166943856Y-91364542D01* +X166944182Y-91364760D01* +X166957970Y-91376075D01* +X166958115Y-91376207D01* +X166967370Y-91385463D01* +X166987416Y-91398859D01* +X167009689Y-91408086D01* +X167033339Y-91412792D01* +X167057446Y-91412794D01* +X167081096Y-91408091D01* +X167103370Y-91398866D01* +X167123419Y-91385472D01* +X167132680Y-91376211D01* +X167132825Y-91376079D01* +X167146618Y-91364760D01* +X167146944Y-91364542D01* +X167157721Y-91358781D01* +X167158083Y-91358631D01* +X167169765Y-91355087D01* +X167170150Y-91355011D01* +X167188442Y-91353210D01* +X167188638Y-91353200D01* +X167245000Y-91353200D01* +X167246732Y-91354200D01* +X167246732Y-91356200D01* +X167245196Y-91357190D01* +X167220931Y-91359580D01* +X167197780Y-91366603D01* +X167176447Y-91378005D01* +X167157750Y-91393350D01* +X167142405Y-91412047D01* +X167131003Y-91433380D01* +X167123980Y-91456531D01* +X167121600Y-91480694D01* +X167121600Y-92806306D01* +X167123980Y-92830469D01* +X167131003Y-92853620D01* +X167142405Y-92874953D01* +X167157750Y-92893650D01* +X167176447Y-92908995D01* +X167197780Y-92920397D01* +X167220931Y-92927420D01* +X167245196Y-92929810D01* +X167246822Y-92930975D01* +X167246626Y-92932965D01* +X167245000Y-92933800D01* +X167188638Y-92933800D01* +X167188442Y-92933790D01* +X167170150Y-92931989D01* +X167169765Y-92931913D01* +X167158083Y-92928369D01* +X167157721Y-92928219D01* +X167146944Y-92922458D01* +X167146618Y-92922240D01* +X167132830Y-92910925D01* +X167132685Y-92910793D01* +X167123430Y-92901537D01* +X167103384Y-92888141D01* +X167081111Y-92878914D01* +X167057461Y-92874208D01* +X167033354Y-92874206D01* +X167009704Y-92878909D01* +X166987430Y-92888134D01* +X166967381Y-92901528D01* +X166958120Y-92910789D01* +X166957975Y-92910921D01* +X166944182Y-92922240D01* +X166943856Y-92922458D01* +X166933079Y-92928219D01* +X166932717Y-92928369D01* +X166921035Y-92931913D01* +X166920650Y-92931989D01* +X166902358Y-92933790D01* +X166902162Y-92933800D01* +X166845800Y-92933800D01* +X166844068Y-92932800D01* +X166844068Y-92930800D01* +X166845604Y-92929810D01* +X166869869Y-92927420D01* +X166893020Y-92920397D01* +X166914353Y-92908995D01* +X166933050Y-92893650D01* +X166948395Y-92874953D01* +X166959797Y-92853620D01* +X166966820Y-92830469D01* +X166969200Y-92806306D01* +X166969200Y-91480694D01* +X166966820Y-91456531D01* +X166959797Y-91433380D01* +X166948395Y-91412047D01* +X166933050Y-91393350D01* +X166914353Y-91378005D01* +X166893020Y-91366603D01* +X166869869Y-91359580D01* +X166845604Y-91357190D01* +X166843978Y-91356025D01* +X166844174Y-91354035D01* +X166845800Y-91353200D01* +X166902162Y-91353200D01* +X166902358Y-91353210D01* +G37* +G36* +X164302358Y-91353210D02* +G01* +X164320650Y-91355011D01* +X164321035Y-91355087D01* +X164332717Y-91358631D01* +X164333079Y-91358781D01* +X164343856Y-91364542D01* +X164344182Y-91364760D01* +X164357970Y-91376075D01* +X164358115Y-91376207D01* +X164367370Y-91385463D01* +X164387416Y-91398859D01* +X164409689Y-91408086D01* +X164433339Y-91412792D01* +X164457446Y-91412794D01* +X164481096Y-91408091D01* +X164503370Y-91398866D01* +X164523419Y-91385472D01* +X164532680Y-91376211D01* +X164532825Y-91376079D01* +X164546618Y-91364760D01* +X164546944Y-91364542D01* +X164557721Y-91358781D01* +X164558083Y-91358631D01* +X164569765Y-91355087D01* +X164570150Y-91355011D01* +X164588442Y-91353210D01* +X164588638Y-91353200D01* +X164645000Y-91353200D01* +X164646732Y-91354200D01* +X164646732Y-91356200D01* +X164645196Y-91357190D01* +X164620931Y-91359580D01* +X164597780Y-91366603D01* +X164576447Y-91378005D01* +X164557750Y-91393350D01* +X164542405Y-91412047D01* +X164531003Y-91433380D01* +X164523980Y-91456531D01* +X164521600Y-91480694D01* +X164521600Y-92806306D01* +X164523980Y-92830469D01* +X164531003Y-92853620D01* +X164542405Y-92874953D01* +X164557750Y-92893650D01* +X164576447Y-92908995D01* +X164597780Y-92920397D01* +X164620931Y-92927420D01* +X164645196Y-92929810D01* +X164646822Y-92930975D01* +X164646626Y-92932965D01* +X164645000Y-92933800D01* +X164588638Y-92933800D01* +X164588442Y-92933790D01* +X164570150Y-92931989D01* +X164569765Y-92931913D01* +X164558083Y-92928369D01* +X164557721Y-92928219D01* +X164546944Y-92922458D01* +X164546618Y-92922240D01* +X164532830Y-92910925D01* +X164532685Y-92910793D01* +X164523430Y-92901537D01* +X164503384Y-92888141D01* +X164481111Y-92878914D01* +X164457461Y-92874208D01* +X164433354Y-92874206D01* +X164409704Y-92878909D01* +X164387430Y-92888134D01* +X164367381Y-92901528D01* +X164358120Y-92910789D01* +X164357975Y-92910921D01* +X164344182Y-92922240D01* +X164343856Y-92922458D01* +X164333079Y-92928219D01* +X164332717Y-92928369D01* +X164321035Y-92931913D01* +X164320650Y-92931989D01* +X164302358Y-92933790D01* +X164302162Y-92933800D01* +X164245800Y-92933800D01* +X164244068Y-92932800D01* +X164244068Y-92930800D01* +X164245604Y-92929810D01* +X164269869Y-92927420D01* +X164293020Y-92920397D01* +X164314353Y-92908995D01* +X164333050Y-92893650D01* +X164348395Y-92874953D01* +X164359797Y-92853620D01* +X164366820Y-92830469D01* +X164369200Y-92806306D01* +X164369200Y-91480694D01* +X164366820Y-91456531D01* +X164359797Y-91433380D01* +X164348395Y-91412047D01* +X164333050Y-91393350D01* +X164314353Y-91378005D01* +X164293020Y-91366603D01* +X164269869Y-91359580D01* +X164245604Y-91357190D01* +X164243978Y-91356025D01* +X164244174Y-91354035D01* +X164245800Y-91353200D01* +X164302162Y-91353200D01* +X164302358Y-91353210D01* +G37* +G36* +X165602358Y-91353210D02* +G01* +X165620650Y-91355011D01* +X165621035Y-91355087D01* +X165632717Y-91358631D01* +X165633079Y-91358781D01* +X165643856Y-91364542D01* +X165644182Y-91364760D01* +X165657970Y-91376075D01* +X165658115Y-91376207D01* +X165667370Y-91385463D01* +X165687416Y-91398859D01* +X165709689Y-91408086D01* +X165733339Y-91412792D01* +X165757446Y-91412794D01* +X165781096Y-91408091D01* +X165803370Y-91398866D01* +X165823419Y-91385472D01* +X165832680Y-91376211D01* +X165832825Y-91376079D01* +X165846618Y-91364760D01* +X165846944Y-91364542D01* +X165857721Y-91358781D01* +X165858083Y-91358631D01* +X165869765Y-91355087D01* +X165870150Y-91355011D01* +X165888442Y-91353210D01* +X165888638Y-91353200D01* +X165945000Y-91353200D01* +X165946732Y-91354200D01* +X165946732Y-91356200D01* +X165945196Y-91357190D01* +X165920931Y-91359580D01* +X165897780Y-91366603D01* +X165876447Y-91378005D01* +X165857750Y-91393350D01* +X165842405Y-91412047D01* +X165831003Y-91433380D01* +X165823980Y-91456531D01* +X165821600Y-91480694D01* +X165821600Y-92806306D01* +X165823980Y-92830469D01* +X165831003Y-92853620D01* +X165842405Y-92874953D01* +X165857750Y-92893650D01* +X165876447Y-92908995D01* +X165897780Y-92920397D01* +X165920931Y-92927420D01* +X165945196Y-92929810D01* +X165946822Y-92930975D01* +X165946626Y-92932965D01* +X165945000Y-92933800D01* +X165888638Y-92933800D01* +X165888442Y-92933790D01* +X165870150Y-92931989D01* +X165869765Y-92931913D01* +X165858083Y-92928369D01* +X165857721Y-92928219D01* +X165846944Y-92922458D01* +X165846618Y-92922240D01* +X165832830Y-92910925D01* +X165832685Y-92910793D01* +X165823430Y-92901537D01* +X165803384Y-92888141D01* +X165781111Y-92878914D01* +X165757461Y-92874208D01* +X165733354Y-92874206D01* +X165709704Y-92878909D01* +X165687430Y-92888134D01* +X165667381Y-92901528D01* +X165658120Y-92910789D01* +X165657975Y-92910921D01* +X165644182Y-92922240D01* +X165643856Y-92922458D01* +X165633079Y-92928219D01* +X165632717Y-92928369D01* +X165621035Y-92931913D01* +X165620650Y-92931989D01* +X165602358Y-92933790D01* +X165602162Y-92933800D01* +X165545800Y-92933800D01* +X165544068Y-92932800D01* +X165544068Y-92930800D01* +X165545604Y-92929810D01* +X165569869Y-92927420D01* +X165593020Y-92920397D01* +X165614353Y-92908995D01* +X165633050Y-92893650D01* +X165648395Y-92874953D01* +X165659797Y-92853620D01* +X165666820Y-92830469D01* +X165669200Y-92806306D01* +X165669200Y-91480694D01* +X165666820Y-91456531D01* +X165659797Y-91433380D01* +X165648395Y-91412047D01* +X165633050Y-91393350D01* +X165614353Y-91378005D01* +X165593020Y-91366603D01* +X165569869Y-91359580D01* +X165545604Y-91357190D01* +X165543978Y-91356025D01* +X165544174Y-91354035D01* +X165545800Y-91353200D01* +X165602162Y-91353200D01* +X165602358Y-91353210D01* +G37* +G36* +X166252358Y-91353210D02* +G01* +X166270650Y-91355011D01* +X166271035Y-91355087D01* +X166282717Y-91358631D01* +X166283079Y-91358781D01* +X166293856Y-91364542D01* +X166294182Y-91364760D01* +X166307970Y-91376075D01* +X166308115Y-91376207D01* +X166317370Y-91385463D01* +X166337416Y-91398859D01* +X166359689Y-91408086D01* +X166383339Y-91412792D01* +X166407446Y-91412794D01* +X166431096Y-91408091D01* +X166453370Y-91398866D01* +X166473419Y-91385472D01* +X166482680Y-91376211D01* +X166482825Y-91376079D01* +X166496618Y-91364760D01* +X166496944Y-91364542D01* +X166507721Y-91358781D01* +X166508083Y-91358631D01* +X166519765Y-91355087D01* +X166520150Y-91355011D01* +X166538442Y-91353210D01* +X166538638Y-91353200D01* +X166595000Y-91353200D01* +X166596732Y-91354200D01* +X166596732Y-91356200D01* +X166595196Y-91357190D01* +X166570931Y-91359580D01* +X166547780Y-91366603D01* +X166526447Y-91378005D01* +X166507750Y-91393350D01* +X166492405Y-91412047D01* +X166481003Y-91433380D01* +X166473980Y-91456531D01* +X166471600Y-91480694D01* +X166471600Y-92806306D01* +X166473980Y-92830469D01* +X166481003Y-92853620D01* +X166492405Y-92874953D01* +X166507750Y-92893650D01* +X166526447Y-92908995D01* +X166547780Y-92920397D01* +X166570931Y-92927420D01* +X166595196Y-92929810D01* +X166596822Y-92930975D01* +X166596626Y-92932965D01* +X166595000Y-92933800D01* +X166538638Y-92933800D01* +X166538442Y-92933790D01* +X166520150Y-92931989D01* +X166519765Y-92931913D01* +X166508083Y-92928369D01* +X166507721Y-92928219D01* +X166496944Y-92922458D01* +X166496618Y-92922240D01* +X166482830Y-92910925D01* +X166482685Y-92910793D01* +X166473430Y-92901537D01* +X166453384Y-92888141D01* +X166431111Y-92878914D01* +X166407461Y-92874208D01* +X166383354Y-92874206D01* +X166359704Y-92878909D01* +X166337430Y-92888134D01* +X166317381Y-92901528D01* +X166308120Y-92910789D01* +X166307975Y-92910921D01* +X166294182Y-92922240D01* +X166293856Y-92922458D01* +X166283079Y-92928219D01* +X166282717Y-92928369D01* +X166271035Y-92931913D01* +X166270650Y-92931989D01* +X166252358Y-92933790D01* +X166252162Y-92933800D01* +X166195800Y-92933800D01* +X166194068Y-92932800D01* +X166194068Y-92930800D01* +X166195604Y-92929810D01* +X166219869Y-92927420D01* +X166243020Y-92920397D01* +X166264353Y-92908995D01* +X166283050Y-92893650D01* +X166298395Y-92874953D01* +X166309797Y-92853620D01* +X166316820Y-92830469D01* +X166319200Y-92806306D01* +X166319200Y-91480694D01* +X166316820Y-91456531D01* +X166309797Y-91433380D01* +X166298395Y-91412047D01* +X166283050Y-91393350D01* +X166264353Y-91378005D01* +X166243020Y-91366603D01* +X166219869Y-91359580D01* +X166195604Y-91357190D01* +X166193978Y-91356025D01* +X166194174Y-91354035D01* +X166195800Y-91353200D01* +X166252162Y-91353200D01* +X166252358Y-91353210D01* +G37* +G36* +X164952358Y-91353210D02* +G01* +X164970650Y-91355011D01* +X164971035Y-91355087D01* +X164982717Y-91358631D01* +X164983079Y-91358781D01* +X164993856Y-91364542D01* +X164994182Y-91364760D01* +X165007970Y-91376075D01* +X165008115Y-91376207D01* +X165017370Y-91385463D01* +X165037416Y-91398859D01* +X165059689Y-91408086D01* +X165083339Y-91412792D01* +X165107446Y-91412794D01* +X165131096Y-91408091D01* +X165153370Y-91398866D01* +X165173419Y-91385472D01* +X165182680Y-91376211D01* +X165182825Y-91376079D01* +X165196618Y-91364760D01* +X165196944Y-91364542D01* +X165207721Y-91358781D01* +X165208083Y-91358631D01* +X165219765Y-91355087D01* +X165220150Y-91355011D01* +X165238442Y-91353210D01* +X165238638Y-91353200D01* +X165295000Y-91353200D01* +X165296732Y-91354200D01* +X165296732Y-91356200D01* +X165295196Y-91357190D01* +X165270931Y-91359580D01* +X165247780Y-91366603D01* +X165226447Y-91378005D01* +X165207750Y-91393350D01* +X165192405Y-91412047D01* +X165181003Y-91433380D01* +X165173980Y-91456531D01* +X165171600Y-91480694D01* +X165171600Y-92806306D01* +X165173980Y-92830469D01* +X165181003Y-92853620D01* +X165192405Y-92874953D01* +X165207750Y-92893650D01* +X165226447Y-92908995D01* +X165247780Y-92920397D01* +X165270931Y-92927420D01* +X165295196Y-92929810D01* +X165296822Y-92930975D01* +X165296626Y-92932965D01* +X165295000Y-92933800D01* +X165238638Y-92933800D01* +X165238442Y-92933790D01* +X165220150Y-92931989D01* +X165219765Y-92931913D01* +X165208083Y-92928369D01* +X165207721Y-92928219D01* +X165196944Y-92922458D01* +X165196618Y-92922240D01* +X165182830Y-92910925D01* +X165182685Y-92910793D01* +X165173430Y-92901537D01* +X165153384Y-92888141D01* +X165131111Y-92878914D01* +X165107461Y-92874208D01* +X165083354Y-92874206D01* +X165059704Y-92878909D01* +X165037430Y-92888134D01* +X165017381Y-92901528D01* +X165008120Y-92910789D01* +X165007975Y-92910921D01* +X164994182Y-92922240D01* +X164993856Y-92922458D01* +X164983079Y-92928219D01* +X164982717Y-92928369D01* +X164971035Y-92931913D01* +X164970650Y-92931989D01* +X164952358Y-92933790D01* +X164952162Y-92933800D01* +X164895800Y-92933800D01* +X164894068Y-92932800D01* +X164894068Y-92930800D01* +X164895604Y-92929810D01* +X164919869Y-92927420D01* +X164943020Y-92920397D01* +X164964353Y-92908995D01* +X164983050Y-92893650D01* +X164998395Y-92874953D01* +X165009797Y-92853620D01* +X165016820Y-92830469D01* +X165019200Y-92806306D01* +X165019200Y-91480694D01* +X165016820Y-91456531D01* +X165009797Y-91433380D01* +X164998395Y-91412047D01* +X164983050Y-91393350D01* +X164964353Y-91378005D01* +X164943020Y-91366603D01* +X164919869Y-91359580D01* +X164895604Y-91357190D01* +X164893978Y-91356025D01* +X164894174Y-91354035D01* +X164895800Y-91353200D01* +X164952162Y-91353200D01* +X164952358Y-91353210D01* +G37* +G36* +X168202358Y-91353210D02* +G01* +X168220650Y-91355011D01* +X168221035Y-91355087D01* +X168232717Y-91358631D01* +X168233079Y-91358781D01* +X168243856Y-91364542D01* +X168244182Y-91364760D01* +X168257970Y-91376075D01* +X168258115Y-91376207D01* +X168267370Y-91385463D01* +X168287416Y-91398859D01* +X168309689Y-91408086D01* +X168333339Y-91412792D01* +X168357446Y-91412794D01* +X168381096Y-91408091D01* +X168403370Y-91398866D01* +X168423419Y-91385472D01* +X168432680Y-91376211D01* +X168432825Y-91376079D01* +X168446618Y-91364760D01* +X168446944Y-91364542D01* +X168457721Y-91358781D01* +X168458083Y-91358631D01* +X168469765Y-91355087D01* +X168470150Y-91355011D01* +X168488442Y-91353210D01* +X168488638Y-91353200D01* +X168545000Y-91353200D01* +X168546732Y-91354200D01* +X168546732Y-91356200D01* +X168545196Y-91357190D01* +X168520931Y-91359580D01* +X168497780Y-91366603D01* +X168476447Y-91378005D01* +X168457750Y-91393350D01* +X168442405Y-91412047D01* +X168431003Y-91433380D01* +X168423980Y-91456531D01* +X168421600Y-91480694D01* +X168421600Y-92806306D01* +X168423980Y-92830469D01* +X168431003Y-92853620D01* +X168442405Y-92874953D01* +X168457750Y-92893650D01* +X168476447Y-92908995D01* +X168497780Y-92920397D01* +X168520931Y-92927420D01* +X168545196Y-92929810D01* +X168546822Y-92930975D01* +X168546626Y-92932965D01* +X168545000Y-92933800D01* +X168488638Y-92933800D01* +X168488442Y-92933790D01* +X168470150Y-92931989D01* +X168469765Y-92931913D01* +X168458083Y-92928369D01* +X168457721Y-92928219D01* +X168446944Y-92922458D01* +X168446618Y-92922240D01* +X168432830Y-92910925D01* +X168432685Y-92910793D01* +X168423430Y-92901537D01* +X168403384Y-92888141D01* +X168381111Y-92878914D01* +X168357461Y-92874208D01* +X168333354Y-92874206D01* +X168309704Y-92878909D01* +X168287430Y-92888134D01* +X168267381Y-92901528D01* +X168258120Y-92910789D01* +X168257975Y-92910921D01* +X168244182Y-92922240D01* +X168243856Y-92922458D01* +X168233079Y-92928219D01* +X168232717Y-92928369D01* +X168221035Y-92931913D01* +X168220650Y-92931989D01* +X168202358Y-92933790D01* +X168202162Y-92933800D01* +X168145800Y-92933800D01* +X168144068Y-92932800D01* +X168144068Y-92930800D01* +X168145604Y-92929810D01* +X168169869Y-92927420D01* +X168193020Y-92920397D01* +X168214353Y-92908995D01* +X168233050Y-92893650D01* +X168248395Y-92874953D01* +X168259797Y-92853620D01* +X168266820Y-92830469D01* +X168269200Y-92806306D01* +X168269200Y-91480694D01* +X168266820Y-91456531D01* +X168259797Y-91433380D01* +X168248395Y-91412047D01* +X168233050Y-91393350D01* +X168214353Y-91378005D01* +X168193020Y-91366603D01* +X168169869Y-91359580D01* +X168145604Y-91357190D01* +X168143978Y-91356025D01* +X168144174Y-91354035D01* +X168145800Y-91353200D01* +X168202162Y-91353200D01* +X168202358Y-91353210D01* +G37* +G36* +X167552358Y-91353210D02* +G01* +X167570650Y-91355011D01* +X167571035Y-91355087D01* +X167582717Y-91358631D01* +X167583079Y-91358781D01* +X167593856Y-91364542D01* +X167594182Y-91364760D01* +X167607970Y-91376075D01* +X167608115Y-91376207D01* +X167617370Y-91385463D01* +X167637416Y-91398859D01* +X167659689Y-91408086D01* +X167683339Y-91412792D01* +X167707446Y-91412794D01* +X167731096Y-91408091D01* +X167753370Y-91398866D01* +X167773419Y-91385472D01* +X167782680Y-91376211D01* +X167782825Y-91376079D01* +X167796618Y-91364760D01* +X167796944Y-91364542D01* +X167807721Y-91358781D01* +X167808083Y-91358631D01* +X167819765Y-91355087D01* +X167820150Y-91355011D01* +X167838442Y-91353210D01* +X167838638Y-91353200D01* +X167895000Y-91353200D01* +X167896732Y-91354200D01* +X167896732Y-91356200D01* +X167895196Y-91357190D01* +X167870931Y-91359580D01* +X167847780Y-91366603D01* +X167826447Y-91378005D01* +X167807750Y-91393350D01* +X167792405Y-91412047D01* +X167781003Y-91433380D01* +X167773980Y-91456531D01* +X167771600Y-91480694D01* +X167771600Y-92806306D01* +X167773980Y-92830469D01* +X167781003Y-92853620D01* +X167792405Y-92874953D01* +X167807750Y-92893650D01* +X167826447Y-92908995D01* +X167847780Y-92920397D01* +X167870931Y-92927420D01* +X167895196Y-92929810D01* +X167896822Y-92930975D01* +X167896626Y-92932965D01* +X167895000Y-92933800D01* +X167838638Y-92933800D01* +X167838442Y-92933790D01* +X167820150Y-92931989D01* +X167819765Y-92931913D01* +X167808083Y-92928369D01* +X167807721Y-92928219D01* +X167796944Y-92922458D01* +X167796618Y-92922240D01* +X167782830Y-92910925D01* +X167782685Y-92910793D01* +X167773430Y-92901537D01* +X167753384Y-92888141D01* +X167731111Y-92878914D01* +X167707461Y-92874208D01* +X167683354Y-92874206D01* +X167659704Y-92878909D01* +X167637430Y-92888134D01* +X167617381Y-92901528D01* +X167608120Y-92910789D01* +X167607975Y-92910921D01* +X167594182Y-92922240D01* +X167593856Y-92922458D01* +X167583079Y-92928219D01* +X167582717Y-92928369D01* +X167571035Y-92931913D01* +X167570650Y-92931989D01* +X167552358Y-92933790D01* +X167552162Y-92933800D01* +X167495800Y-92933800D01* +X167494068Y-92932800D01* +X167494068Y-92930800D01* +X167495604Y-92929810D01* +X167519869Y-92927420D01* +X167543020Y-92920397D01* +X167564353Y-92908995D01* +X167583050Y-92893650D01* +X167598395Y-92874953D01* +X167609797Y-92853620D01* +X167616820Y-92830469D01* +X167619200Y-92806306D01* +X167619200Y-91480694D01* +X167616820Y-91456531D01* +X167609797Y-91433380D01* +X167598395Y-91412047D01* +X167583050Y-91393350D01* +X167564353Y-91378005D01* +X167543020Y-91366603D01* +X167519869Y-91359580D01* +X167495604Y-91357190D01* +X167493978Y-91356025D01* +X167494174Y-91354035D01* +X167495800Y-91353200D01* +X167552162Y-91353200D01* +X167552358Y-91353210D01* +G37* +G36* +X163652358Y-91353210D02* +G01* +X163670650Y-91355011D01* +X163671035Y-91355087D01* +X163682717Y-91358631D01* +X163683079Y-91358781D01* +X163693856Y-91364542D01* +X163694182Y-91364760D01* +X163707970Y-91376075D01* +X163708115Y-91376207D01* +X163717370Y-91385463D01* +X163737416Y-91398859D01* +X163759689Y-91408086D01* +X163783339Y-91412792D01* +X163807446Y-91412794D01* +X163831096Y-91408091D01* +X163853370Y-91398866D01* +X163873419Y-91385472D01* +X163882680Y-91376211D01* +X163882825Y-91376079D01* +X163896618Y-91364760D01* +X163896944Y-91364542D01* +X163907721Y-91358781D01* +X163908083Y-91358631D01* +X163919765Y-91355087D01* +X163920150Y-91355011D01* +X163938442Y-91353210D01* +X163938638Y-91353200D01* +X163995000Y-91353200D01* +X163996732Y-91354200D01* +X163996732Y-91356200D01* +X163995196Y-91357190D01* +X163970931Y-91359580D01* +X163947780Y-91366603D01* +X163926447Y-91378005D01* +X163907750Y-91393350D01* +X163892405Y-91412047D01* +X163881003Y-91433380D01* +X163873980Y-91456531D01* +X163871600Y-91480694D01* +X163871600Y-92806306D01* +X163873980Y-92830469D01* +X163881003Y-92853620D01* +X163892405Y-92874953D01* +X163907750Y-92893650D01* +X163926447Y-92908995D01* +X163947780Y-92920397D01* +X163970931Y-92927420D01* +X163995196Y-92929810D01* +X163996822Y-92930975D01* +X163996626Y-92932965D01* +X163995000Y-92933800D01* +X163938638Y-92933800D01* +X163938442Y-92933790D01* +X163920150Y-92931989D01* +X163919765Y-92931913D01* +X163908083Y-92928369D01* +X163907721Y-92928219D01* +X163896944Y-92922458D01* +X163896618Y-92922240D01* +X163882830Y-92910925D01* +X163882685Y-92910793D01* +X163873430Y-92901537D01* +X163853384Y-92888141D01* +X163831111Y-92878914D01* +X163807461Y-92874208D01* +X163783354Y-92874206D01* +X163759704Y-92878909D01* +X163737430Y-92888134D01* +X163717381Y-92901528D01* +X163708120Y-92910789D01* +X163707975Y-92910921D01* +X163694182Y-92922240D01* +X163693856Y-92922458D01* +X163683079Y-92928219D01* +X163682717Y-92928369D01* +X163671035Y-92931913D01* +X163670650Y-92931989D01* +X163652358Y-92933790D01* +X163652162Y-92933800D01* +X163595800Y-92933800D01* +X163594068Y-92932800D01* +X163594068Y-92930800D01* +X163595604Y-92929810D01* +X163619869Y-92927420D01* +X163643020Y-92920397D01* +X163664353Y-92908995D01* +X163683050Y-92893650D01* +X163698395Y-92874953D01* +X163709797Y-92853620D01* +X163716820Y-92830469D01* +X163719200Y-92806306D01* +X163719200Y-91480694D01* +X163716820Y-91456531D01* +X163709797Y-91433380D01* +X163698395Y-91412047D01* +X163683050Y-91393350D01* +X163664353Y-91378005D01* +X163643020Y-91366603D01* +X163619869Y-91359580D01* +X163595604Y-91357190D01* +X163593978Y-91356025D01* +X163594174Y-91354035D01* +X163595800Y-91353200D01* +X163652162Y-91353200D01* +X163652358Y-91353210D01* +G37* +G36* +X168852358Y-91353210D02* +G01* +X168870650Y-91355011D01* +X168871035Y-91355087D01* +X168882717Y-91358631D01* +X168883079Y-91358781D01* +X168893856Y-91364542D01* +X168894182Y-91364760D01* +X168907970Y-91376075D01* +X168908115Y-91376207D01* +X168917370Y-91385463D01* +X168937416Y-91398859D01* +X168959689Y-91408086D01* +X168983339Y-91412792D01* +X169007446Y-91412794D01* +X169031096Y-91408091D01* +X169053370Y-91398866D01* +X169073419Y-91385472D01* +X169082680Y-91376211D01* +X169082825Y-91376079D01* +X169096618Y-91364760D01* +X169096944Y-91364542D01* +X169107721Y-91358781D01* +X169108083Y-91358631D01* +X169119765Y-91355087D01* +X169120150Y-91355011D01* +X169138442Y-91353210D01* +X169138638Y-91353200D01* +X169195000Y-91353200D01* +X169196732Y-91354200D01* +X169196732Y-91356200D01* +X169195196Y-91357190D01* +X169170931Y-91359580D01* +X169147780Y-91366603D01* +X169126447Y-91378005D01* +X169107750Y-91393350D01* +X169092405Y-91412047D01* +X169081003Y-91433380D01* +X169073980Y-91456531D01* +X169071600Y-91480694D01* +X169071600Y-92806306D01* +X169073980Y-92830469D01* +X169081003Y-92853620D01* +X169092405Y-92874953D01* +X169107750Y-92893650D01* +X169126447Y-92908995D01* +X169147780Y-92920397D01* +X169170931Y-92927420D01* +X169195196Y-92929810D01* +X169196822Y-92930975D01* +X169196626Y-92932965D01* +X169195000Y-92933800D01* +X169138638Y-92933800D01* +X169138442Y-92933790D01* +X169120150Y-92931989D01* +X169119765Y-92931913D01* +X169108083Y-92928369D01* +X169107721Y-92928219D01* +X169096944Y-92922458D01* +X169096618Y-92922240D01* +X169082830Y-92910925D01* +X169082685Y-92910793D01* +X169073430Y-92901537D01* +X169053384Y-92888141D01* +X169031111Y-92878914D01* +X169007461Y-92874208D01* +X168983354Y-92874206D01* +X168959704Y-92878909D01* +X168937430Y-92888134D01* +X168917381Y-92901528D01* +X168908120Y-92910789D01* +X168907975Y-92910921D01* +X168894182Y-92922240D01* +X168893856Y-92922458D01* +X168883079Y-92928219D01* +X168882717Y-92928369D01* +X168871035Y-92931913D01* +X168870650Y-92931989D01* +X168852358Y-92933790D01* +X168852162Y-92933800D01* +X168795800Y-92933800D01* +X168794068Y-92932800D01* +X168794068Y-92930800D01* +X168795604Y-92929810D01* +X168819869Y-92927420D01* +X168843020Y-92920397D01* +X168864353Y-92908995D01* +X168883050Y-92893650D01* +X168898395Y-92874953D01* +X168909797Y-92853620D01* +X168916820Y-92830469D01* +X168919200Y-92806306D01* +X168919200Y-91480694D01* +X168916820Y-91456531D01* +X168909797Y-91433380D01* +X168898395Y-91412047D01* +X168883050Y-91393350D01* +X168864353Y-91378005D01* +X168843020Y-91366603D01* +X168819869Y-91359580D01* +X168795604Y-91357190D01* +X168793978Y-91356025D01* +X168794174Y-91354035D01* +X168795800Y-91353200D01* +X168852162Y-91353200D01* +X168852358Y-91353210D01* +G37* +G36* +X152692932Y-90675200D02* +G01* +X152693200Y-90676200D01* +X152693200Y-92027800D01* +X152692200Y-92029532D01* +X152691200Y-92029800D01* +X152592800Y-92029800D01* +X152591068Y-92028800D01* +X152590800Y-92027800D01* +X152590800Y-90678200D01* +X152193200Y-90678200D01* +X152193200Y-92027800D01* +X152192200Y-92029532D01* +X152191200Y-92029800D01* +X152092800Y-92029800D01* +X152091068Y-92028800D01* +X152090800Y-92027800D01* +X152090800Y-90678200D01* +X151693200Y-90678200D01* +X151693200Y-92027800D01* +X151692200Y-92029532D01* +X151691200Y-92029800D01* +X151592800Y-92029800D01* +X151591068Y-92028800D01* +X151590800Y-92027800D01* +X151590800Y-90678200D01* +X151193200Y-90678200D01* +X151193200Y-92027800D01* +X151192200Y-92029532D01* +X151191200Y-92029800D01* +X151092800Y-92029800D01* +X151091068Y-92028800D01* +X151090800Y-92027800D01* +X151090800Y-90678200D01* +X150693200Y-90678200D01* +X150693200Y-92027800D01* +X150692200Y-92029532D01* +X150691200Y-92029800D01* +X150592800Y-92029800D01* +X150591068Y-92028800D01* +X150590800Y-92027800D01* +X150590800Y-90678200D01* +X150193200Y-90678200D01* +X150193200Y-92027800D01* +X150192200Y-92029532D01* +X150191200Y-92029800D01* +X150092800Y-92029800D01* +X150091068Y-92028800D01* +X150090800Y-92027800D01* +X150090800Y-90678200D01* +X149693200Y-90678200D01* +X149693200Y-92027800D01* +X149692200Y-92029532D01* +X149691200Y-92029800D01* +X149592800Y-92029800D01* +X149591068Y-92028800D01* +X149590800Y-92027800D01* +X149590800Y-90678200D01* +X149193200Y-90678200D01* +X149193200Y-92027800D01* +X149192200Y-92029532D01* +X149191200Y-92029800D01* +X149092800Y-92029800D01* +X149091068Y-92028800D01* +X149090800Y-92027800D01* +X149090800Y-90678200D01* +X148693200Y-90678200D01* +X148693200Y-92027800D01* +X148692200Y-92029532D01* +X148691200Y-92029800D01* +X148592800Y-92029800D01* +X148591068Y-92028800D01* +X148590800Y-92027800D01* +X148590800Y-90678200D01* +X148193200Y-90678200D01* +X148193200Y-92027800D01* +X148192200Y-92029532D01* +X148191200Y-92029800D01* +X148092800Y-92029800D01* +X148091068Y-92028800D01* +X148090800Y-92027800D01* +X148090800Y-90678200D01* +X147693200Y-90678200D01* +X147693200Y-92027800D01* +X147692200Y-92029532D01* +X147691200Y-92029800D01* +X147592800Y-92029800D01* +X147591068Y-92028800D01* +X147590800Y-92027800D01* +X147590800Y-90678200D01* +X147193200Y-90678200D01* +X147193200Y-92027800D01* +X147192200Y-92029532D01* +X147191200Y-92029800D01* +X147092800Y-92029800D01* +X147091068Y-92028800D01* +X147090800Y-92027800D01* +X147090800Y-90678200D01* +X146693200Y-90678200D01* +X146693200Y-92027800D01* +X146692200Y-92029532D01* +X146691200Y-92029800D01* +X146592800Y-92029800D01* +X146591068Y-92028800D01* +X146590800Y-92027800D01* +X146590800Y-90678200D01* +X146193200Y-90678200D01* +X146193200Y-92027800D01* +X146192200Y-92029532D01* +X146191200Y-92029800D01* +X146092800Y-92029800D01* +X146091068Y-92028800D01* +X146090800Y-92027800D01* +X146090800Y-90678200D01* +X145693200Y-90678200D01* +X145693200Y-92027800D01* +X145692200Y-92029532D01* +X145691200Y-92029800D01* +X145592800Y-92029800D01* +X145591068Y-92028800D01* +X145590800Y-92027800D01* +X145590800Y-90678200D01* +X145193200Y-90678200D01* +X145193200Y-92027800D01* +X145192200Y-92029532D01* +X145191200Y-92029800D01* +X145092800Y-92029800D01* +X145091068Y-92028800D01* +X145090800Y-92027800D01* +X145090800Y-90678200D01* +X144693200Y-90678200D01* +X144693200Y-92027800D01* +X144692200Y-92029532D01* +X144691200Y-92029800D01* +X144592800Y-92029800D01* +X144591068Y-92028800D01* +X144590800Y-92027800D01* +X144590800Y-90678200D01* +X144193200Y-90678200D01* +X144193200Y-92027800D01* +X144192200Y-92029532D01* +X144191200Y-92029800D01* +X144092800Y-92029800D01* +X144091068Y-92028800D01* +X144090800Y-92027800D01* +X144090800Y-90678200D01* +X143693200Y-90678200D01* +X143693200Y-92027800D01* +X143692200Y-92029532D01* +X143691200Y-92029800D01* +X143592800Y-92029800D01* +X143591068Y-92028800D01* +X143590800Y-92027800D01* +X143590800Y-90678200D01* +X143193200Y-90678200D01* +X143193200Y-92027800D01* +X143192200Y-92029532D01* +X143191200Y-92029800D01* +X143092800Y-92029800D01* +X143091068Y-92028800D01* +X143090800Y-92027800D01* +X143090800Y-90678200D01* +X142693200Y-90678200D01* +X142693200Y-92027800D01* +X142692200Y-92029532D01* +X142691200Y-92029800D01* +X142592800Y-92029800D01* +X142591068Y-92028800D01* +X142590800Y-92027800D01* +X142590800Y-90678200D01* +X142193200Y-90678200D01* +X142193200Y-92027800D01* +X142192200Y-92029532D01* +X142191200Y-92029800D01* +X142092800Y-92029800D01* +X142091068Y-92028800D01* +X142090800Y-92027800D01* +X142090800Y-90678200D01* +X141693200Y-90678200D01* +X141693200Y-92027800D01* +X141692200Y-92029532D01* +X141691200Y-92029800D01* +X141592800Y-92029800D01* +X141591068Y-92028800D01* +X141590800Y-92027800D01* +X141590800Y-90678200D01* +X141193200Y-90678200D01* +X141193200Y-92027800D01* +X141192200Y-92029532D01* +X141191200Y-92029800D01* +X141092800Y-92029800D01* +X141091068Y-92028800D01* +X141090800Y-92027800D01* +X141090800Y-90678200D01* +X140693200Y-90678200D01* +X140693200Y-92027800D01* +X140692200Y-92029532D01* +X140691200Y-92029800D01* +X140592800Y-92029800D01* +X140591068Y-92028800D01* +X140590800Y-92027800D01* +X140590800Y-90678200D01* +X140193200Y-90678200D01* +X140193200Y-92027800D01* +X140192200Y-92029532D01* +X140191200Y-92029800D01* +X140092800Y-92029800D01* +X140091068Y-92028800D01* +X140090800Y-92027800D01* +X140090800Y-90678200D01* +X139693200Y-90678200D01* +X139693200Y-92027800D01* +X139692200Y-92029532D01* +X139691200Y-92029800D01* +X139592800Y-92029800D01* +X139591068Y-92028800D01* +X139590800Y-92027800D01* +X139590800Y-90678200D01* +X139193200Y-90678200D01* +X139193200Y-92027800D01* +X139192200Y-92029532D01* +X139191200Y-92029800D01* +X139092800Y-92029800D01* +X139091068Y-92028800D01* +X139090800Y-92027800D01* +X139090800Y-90678200D01* +X138693200Y-90678200D01* +X138693200Y-92027800D01* +X138692200Y-92029532D01* +X138691200Y-92029800D01* +X138592800Y-92029800D01* +X138591068Y-92028800D01* +X138590800Y-92027800D01* +X138590800Y-90676200D01* +X138591800Y-90674468D01* +X138592800Y-90674200D01* +X152691200Y-90674200D01* +X152692932Y-90675200D01* +G37* +G36* +X168202358Y-85628210D02* +G01* +X168220650Y-85630011D01* +X168221035Y-85630087D01* +X168232717Y-85633631D01* +X168233079Y-85633781D01* +X168243856Y-85639542D01* +X168244182Y-85639760D01* +X168257970Y-85651075D01* +X168258115Y-85651207D01* +X168267370Y-85660463D01* +X168287416Y-85673859D01* +X168309689Y-85683086D01* +X168333339Y-85687792D01* +X168357446Y-85687794D01* +X168381096Y-85683091D01* +X168403370Y-85673866D01* +X168423419Y-85660472D01* +X168432680Y-85651211D01* +X168432825Y-85651079D01* +X168446618Y-85639760D01* +X168446944Y-85639542D01* +X168457721Y-85633781D01* +X168458083Y-85633631D01* +X168469765Y-85630087D01* +X168470150Y-85630011D01* +X168488442Y-85628210D01* +X168488638Y-85628200D01* +X168545000Y-85628200D01* +X168546732Y-85629200D01* +X168546732Y-85631200D01* +X168545196Y-85632190D01* +X168520931Y-85634580D01* +X168497780Y-85641603D01* +X168476447Y-85653005D01* +X168457750Y-85668350D01* +X168442405Y-85687047D01* +X168431003Y-85708380D01* +X168423980Y-85731531D01* +X168421600Y-85755694D01* +X168421600Y-87081306D01* +X168423980Y-87105469D01* +X168431003Y-87128620D01* +X168442405Y-87149953D01* +X168457750Y-87168650D01* +X168476447Y-87183995D01* +X168497780Y-87195397D01* +X168520931Y-87202420D01* +X168545196Y-87204810D01* +X168546822Y-87205975D01* +X168546626Y-87207965D01* +X168545000Y-87208800D01* +X168488638Y-87208800D01* +X168488442Y-87208790D01* +X168470150Y-87206989D01* +X168469765Y-87206913D01* +X168458083Y-87203369D01* +X168457721Y-87203219D01* +X168446944Y-87197458D01* +X168446618Y-87197240D01* +X168432830Y-87185925D01* +X168432685Y-87185793D01* +X168423430Y-87176537D01* +X168403384Y-87163141D01* +X168381111Y-87153914D01* +X168357461Y-87149208D01* +X168333354Y-87149206D01* +X168309704Y-87153909D01* +X168287430Y-87163134D01* +X168267381Y-87176528D01* +X168258120Y-87185789D01* +X168257975Y-87185921D01* +X168244182Y-87197240D01* +X168243856Y-87197458D01* +X168233079Y-87203219D01* +X168232717Y-87203369D01* +X168221035Y-87206913D01* +X168220650Y-87206989D01* +X168202358Y-87208790D01* +X168202162Y-87208800D01* +X168145800Y-87208800D01* +X168144068Y-87207800D01* +X168144068Y-87205800D01* +X168145604Y-87204810D01* +X168169869Y-87202420D01* +X168193020Y-87195397D01* +X168214353Y-87183995D01* +X168233050Y-87168650D01* +X168248395Y-87149953D01* +X168259797Y-87128620D01* +X168266820Y-87105469D01* +X168269200Y-87081306D01* +X168269200Y-85755694D01* +X168266820Y-85731531D01* +X168259797Y-85708380D01* +X168248395Y-85687047D01* +X168233050Y-85668350D01* +X168214353Y-85653005D01* +X168193020Y-85641603D01* +X168169869Y-85634580D01* +X168145604Y-85632190D01* +X168143978Y-85631025D01* +X168144174Y-85629035D01* +X168145800Y-85628200D01* +X168202162Y-85628200D01* +X168202358Y-85628210D01* +G37* +G36* +X166252358Y-85628210D02* +G01* +X166270650Y-85630011D01* +X166271035Y-85630087D01* +X166282717Y-85633631D01* +X166283079Y-85633781D01* +X166293856Y-85639542D01* +X166294182Y-85639760D01* +X166307970Y-85651075D01* +X166308115Y-85651207D01* +X166317370Y-85660463D01* +X166337416Y-85673859D01* +X166359689Y-85683086D01* +X166383339Y-85687792D01* +X166407446Y-85687794D01* +X166431096Y-85683091D01* +X166453370Y-85673866D01* +X166473419Y-85660472D01* +X166482680Y-85651211D01* +X166482825Y-85651079D01* +X166496618Y-85639760D01* +X166496944Y-85639542D01* +X166507721Y-85633781D01* +X166508083Y-85633631D01* +X166519765Y-85630087D01* +X166520150Y-85630011D01* +X166538442Y-85628210D01* +X166538638Y-85628200D01* +X166595000Y-85628200D01* +X166596732Y-85629200D01* +X166596732Y-85631200D01* +X166595196Y-85632190D01* +X166570931Y-85634580D01* +X166547780Y-85641603D01* +X166526447Y-85653005D01* +X166507750Y-85668350D01* +X166492405Y-85687047D01* +X166481003Y-85708380D01* +X166473980Y-85731531D01* +X166471600Y-85755694D01* +X166471600Y-87081306D01* +X166473980Y-87105469D01* +X166481003Y-87128620D01* +X166492405Y-87149953D01* +X166507750Y-87168650D01* +X166526447Y-87183995D01* +X166547780Y-87195397D01* +X166570931Y-87202420D01* +X166595196Y-87204810D01* +X166596822Y-87205975D01* +X166596626Y-87207965D01* +X166595000Y-87208800D01* +X166538638Y-87208800D01* +X166538442Y-87208790D01* +X166520150Y-87206989D01* +X166519765Y-87206913D01* +X166508083Y-87203369D01* +X166507721Y-87203219D01* +X166496944Y-87197458D01* +X166496618Y-87197240D01* +X166482830Y-87185925D01* +X166482685Y-87185793D01* +X166473430Y-87176537D01* +X166453384Y-87163141D01* +X166431111Y-87153914D01* +X166407461Y-87149208D01* +X166383354Y-87149206D01* +X166359704Y-87153909D01* +X166337430Y-87163134D01* +X166317381Y-87176528D01* +X166308120Y-87185789D01* +X166307975Y-87185921D01* +X166294182Y-87197240D01* +X166293856Y-87197458D01* +X166283079Y-87203219D01* +X166282717Y-87203369D01* +X166271035Y-87206913D01* +X166270650Y-87206989D01* +X166252358Y-87208790D01* +X166252162Y-87208800D01* +X166195800Y-87208800D01* +X166194068Y-87207800D01* +X166194068Y-87205800D01* +X166195604Y-87204810D01* +X166219869Y-87202420D01* +X166243020Y-87195397D01* +X166264353Y-87183995D01* +X166283050Y-87168650D01* +X166298395Y-87149953D01* +X166309797Y-87128620D01* +X166316820Y-87105469D01* +X166319200Y-87081306D01* +X166319200Y-85755694D01* +X166316820Y-85731531D01* +X166309797Y-85708380D01* +X166298395Y-85687047D01* +X166283050Y-85668350D01* +X166264353Y-85653005D01* +X166243020Y-85641603D01* +X166219869Y-85634580D01* +X166195604Y-85632190D01* +X166193978Y-85631025D01* +X166194174Y-85629035D01* +X166195800Y-85628200D01* +X166252162Y-85628200D01* +X166252358Y-85628210D01* +G37* +G36* +X166902358Y-85628210D02* +G01* +X166920650Y-85630011D01* +X166921035Y-85630087D01* +X166932717Y-85633631D01* +X166933079Y-85633781D01* +X166943856Y-85639542D01* +X166944182Y-85639760D01* +X166957970Y-85651075D01* +X166958115Y-85651207D01* +X166967370Y-85660463D01* +X166987416Y-85673859D01* +X167009689Y-85683086D01* +X167033339Y-85687792D01* +X167057446Y-85687794D01* +X167081096Y-85683091D01* +X167103370Y-85673866D01* +X167123419Y-85660472D01* +X167132680Y-85651211D01* +X167132825Y-85651079D01* +X167146618Y-85639760D01* +X167146944Y-85639542D01* +X167157721Y-85633781D01* +X167158083Y-85633631D01* +X167169765Y-85630087D01* +X167170150Y-85630011D01* +X167188442Y-85628210D01* +X167188638Y-85628200D01* +X167245000Y-85628200D01* +X167246732Y-85629200D01* +X167246732Y-85631200D01* +X167245196Y-85632190D01* +X167220931Y-85634580D01* +X167197780Y-85641603D01* +X167176447Y-85653005D01* +X167157750Y-85668350D01* +X167142405Y-85687047D01* +X167131003Y-85708380D01* +X167123980Y-85731531D01* +X167121600Y-85755694D01* +X167121600Y-87081306D01* +X167123980Y-87105469D01* +X167131003Y-87128620D01* +X167142405Y-87149953D01* +X167157750Y-87168650D01* +X167176447Y-87183995D01* +X167197780Y-87195397D01* +X167220931Y-87202420D01* +X167245196Y-87204810D01* +X167246822Y-87205975D01* +X167246626Y-87207965D01* +X167245000Y-87208800D01* +X167188638Y-87208800D01* +X167188442Y-87208790D01* +X167170150Y-87206989D01* +X167169765Y-87206913D01* +X167158083Y-87203369D01* +X167157721Y-87203219D01* +X167146944Y-87197458D01* +X167146618Y-87197240D01* +X167132830Y-87185925D01* +X167132685Y-87185793D01* +X167123430Y-87176537D01* +X167103384Y-87163141D01* +X167081111Y-87153914D01* +X167057461Y-87149208D01* +X167033354Y-87149206D01* +X167009704Y-87153909D01* +X166987430Y-87163134D01* +X166967381Y-87176528D01* +X166958120Y-87185789D01* +X166957975Y-87185921D01* +X166944182Y-87197240D01* +X166943856Y-87197458D01* +X166933079Y-87203219D01* +X166932717Y-87203369D01* +X166921035Y-87206913D01* +X166920650Y-87206989D01* +X166902358Y-87208790D01* +X166902162Y-87208800D01* +X166845800Y-87208800D01* +X166844068Y-87207800D01* +X166844068Y-87205800D01* +X166845604Y-87204810D01* +X166869869Y-87202420D01* +X166893020Y-87195397D01* +X166914353Y-87183995D01* +X166933050Y-87168650D01* +X166948395Y-87149953D01* +X166959797Y-87128620D01* +X166966820Y-87105469D01* +X166969200Y-87081306D01* +X166969200Y-85755694D01* +X166966820Y-85731531D01* +X166959797Y-85708380D01* +X166948395Y-85687047D01* +X166933050Y-85668350D01* +X166914353Y-85653005D01* +X166893020Y-85641603D01* +X166869869Y-85634580D01* +X166845604Y-85632190D01* +X166843978Y-85631025D01* +X166844174Y-85629035D01* +X166845800Y-85628200D01* +X166902162Y-85628200D01* +X166902358Y-85628210D01* +G37* +G36* +X165602358Y-85628210D02* +G01* +X165620650Y-85630011D01* +X165621035Y-85630087D01* +X165632717Y-85633631D01* +X165633079Y-85633781D01* +X165643856Y-85639542D01* +X165644182Y-85639760D01* +X165657970Y-85651075D01* +X165658115Y-85651207D01* +X165667370Y-85660463D01* +X165687416Y-85673859D01* +X165709689Y-85683086D01* +X165733339Y-85687792D01* +X165757446Y-85687794D01* +X165781096Y-85683091D01* +X165803370Y-85673866D01* +X165823419Y-85660472D01* +X165832680Y-85651211D01* +X165832825Y-85651079D01* +X165846618Y-85639760D01* +X165846944Y-85639542D01* +X165857721Y-85633781D01* +X165858083Y-85633631D01* +X165869765Y-85630087D01* +X165870150Y-85630011D01* +X165888442Y-85628210D01* +X165888638Y-85628200D01* +X165945000Y-85628200D01* +X165946732Y-85629200D01* +X165946732Y-85631200D01* +X165945196Y-85632190D01* +X165920931Y-85634580D01* +X165897780Y-85641603D01* +X165876447Y-85653005D01* +X165857750Y-85668350D01* +X165842405Y-85687047D01* +X165831003Y-85708380D01* +X165823980Y-85731531D01* +X165821600Y-85755694D01* +X165821600Y-87081306D01* +X165823980Y-87105469D01* +X165831003Y-87128620D01* +X165842405Y-87149953D01* +X165857750Y-87168650D01* +X165876447Y-87183995D01* +X165897780Y-87195397D01* +X165920931Y-87202420D01* +X165945196Y-87204810D01* +X165946822Y-87205975D01* +X165946626Y-87207965D01* +X165945000Y-87208800D01* +X165888638Y-87208800D01* +X165888442Y-87208790D01* +X165870150Y-87206989D01* +X165869765Y-87206913D01* +X165858083Y-87203369D01* +X165857721Y-87203219D01* +X165846944Y-87197458D01* +X165846618Y-87197240D01* +X165832830Y-87185925D01* +X165832685Y-87185793D01* +X165823430Y-87176537D01* +X165803384Y-87163141D01* +X165781111Y-87153914D01* +X165757461Y-87149208D01* +X165733354Y-87149206D01* +X165709704Y-87153909D01* +X165687430Y-87163134D01* +X165667381Y-87176528D01* +X165658120Y-87185789D01* +X165657975Y-87185921D01* +X165644182Y-87197240D01* +X165643856Y-87197458D01* +X165633079Y-87203219D01* +X165632717Y-87203369D01* +X165621035Y-87206913D01* +X165620650Y-87206989D01* +X165602358Y-87208790D01* +X165602162Y-87208800D01* +X165545800Y-87208800D01* +X165544068Y-87207800D01* +X165544068Y-87205800D01* +X165545604Y-87204810D01* +X165569869Y-87202420D01* +X165593020Y-87195397D01* +X165614353Y-87183995D01* +X165633050Y-87168650D01* +X165648395Y-87149953D01* +X165659797Y-87128620D01* +X165666820Y-87105469D01* +X165669200Y-87081306D01* +X165669200Y-85755694D01* +X165666820Y-85731531D01* +X165659797Y-85708380D01* +X165648395Y-85687047D01* +X165633050Y-85668350D01* +X165614353Y-85653005D01* +X165593020Y-85641603D01* +X165569869Y-85634580D01* +X165545604Y-85632190D01* +X165543978Y-85631025D01* +X165544174Y-85629035D01* +X165545800Y-85628200D01* +X165602162Y-85628200D01* +X165602358Y-85628210D01* +G37* +G36* +X163652358Y-85628210D02* +G01* +X163670650Y-85630011D01* +X163671035Y-85630087D01* +X163682717Y-85633631D01* +X163683079Y-85633781D01* +X163693856Y-85639542D01* +X163694182Y-85639760D01* +X163707970Y-85651075D01* +X163708115Y-85651207D01* +X163717370Y-85660463D01* +X163737416Y-85673859D01* +X163759689Y-85683086D01* +X163783339Y-85687792D01* +X163807446Y-85687794D01* +X163831096Y-85683091D01* +X163853370Y-85673866D01* +X163873419Y-85660472D01* +X163882680Y-85651211D01* +X163882825Y-85651079D01* +X163896618Y-85639760D01* +X163896944Y-85639542D01* +X163907721Y-85633781D01* +X163908083Y-85633631D01* +X163919765Y-85630087D01* +X163920150Y-85630011D01* +X163938442Y-85628210D01* +X163938638Y-85628200D01* +X163995000Y-85628200D01* +X163996732Y-85629200D01* +X163996732Y-85631200D01* +X163995196Y-85632190D01* +X163970931Y-85634580D01* +X163947780Y-85641603D01* +X163926447Y-85653005D01* +X163907750Y-85668350D01* +X163892405Y-85687047D01* +X163881003Y-85708380D01* +X163873980Y-85731531D01* +X163871600Y-85755694D01* +X163871600Y-87081306D01* +X163873980Y-87105469D01* +X163881003Y-87128620D01* +X163892405Y-87149953D01* +X163907750Y-87168650D01* +X163926447Y-87183995D01* +X163947780Y-87195397D01* +X163970931Y-87202420D01* +X163995196Y-87204810D01* +X163996822Y-87205975D01* +X163996626Y-87207965D01* +X163995000Y-87208800D01* +X163938638Y-87208800D01* +X163938442Y-87208790D01* +X163920150Y-87206989D01* +X163919765Y-87206913D01* +X163908083Y-87203369D01* +X163907721Y-87203219D01* +X163896944Y-87197458D01* +X163896618Y-87197240D01* +X163882830Y-87185925D01* +X163882685Y-87185793D01* +X163873430Y-87176537D01* +X163853384Y-87163141D01* +X163831111Y-87153914D01* +X163807461Y-87149208D01* +X163783354Y-87149206D01* +X163759704Y-87153909D01* +X163737430Y-87163134D01* +X163717381Y-87176528D01* +X163708120Y-87185789D01* +X163707975Y-87185921D01* +X163694182Y-87197240D01* +X163693856Y-87197458D01* +X163683079Y-87203219D01* +X163682717Y-87203369D01* +X163671035Y-87206913D01* +X163670650Y-87206989D01* +X163652358Y-87208790D01* +X163652162Y-87208800D01* +X163595800Y-87208800D01* +X163594068Y-87207800D01* +X163594068Y-87205800D01* +X163595604Y-87204810D01* +X163619869Y-87202420D01* +X163643020Y-87195397D01* +X163664353Y-87183995D01* +X163683050Y-87168650D01* +X163698395Y-87149953D01* +X163709797Y-87128620D01* +X163716820Y-87105469D01* +X163719200Y-87081306D01* +X163719200Y-85755694D01* +X163716820Y-85731531D01* +X163709797Y-85708380D01* +X163698395Y-85687047D01* +X163683050Y-85668350D01* +X163664353Y-85653005D01* +X163643020Y-85641603D01* +X163619869Y-85634580D01* +X163595604Y-85632190D01* +X163593978Y-85631025D01* +X163594174Y-85629035D01* +X163595800Y-85628200D01* +X163652162Y-85628200D01* +X163652358Y-85628210D01* +G37* +G36* +X167552358Y-85628210D02* +G01* +X167570650Y-85630011D01* +X167571035Y-85630087D01* +X167582717Y-85633631D01* +X167583079Y-85633781D01* +X167593856Y-85639542D01* +X167594182Y-85639760D01* +X167607970Y-85651075D01* +X167608115Y-85651207D01* +X167617370Y-85660463D01* +X167637416Y-85673859D01* +X167659689Y-85683086D01* +X167683339Y-85687792D01* +X167707446Y-85687794D01* +X167731096Y-85683091D01* +X167753370Y-85673866D01* +X167773419Y-85660472D01* +X167782680Y-85651211D01* +X167782825Y-85651079D01* +X167796618Y-85639760D01* +X167796944Y-85639542D01* +X167807721Y-85633781D01* +X167808083Y-85633631D01* +X167819765Y-85630087D01* +X167820150Y-85630011D01* +X167838442Y-85628210D01* +X167838638Y-85628200D01* +X167895000Y-85628200D01* +X167896732Y-85629200D01* +X167896732Y-85631200D01* +X167895196Y-85632190D01* +X167870931Y-85634580D01* +X167847780Y-85641603D01* +X167826447Y-85653005D01* +X167807750Y-85668350D01* +X167792405Y-85687047D01* +X167781003Y-85708380D01* +X167773980Y-85731531D01* +X167771600Y-85755694D01* +X167771600Y-87081306D01* +X167773980Y-87105469D01* +X167781003Y-87128620D01* +X167792405Y-87149953D01* +X167807750Y-87168650D01* +X167826447Y-87183995D01* +X167847780Y-87195397D01* +X167870931Y-87202420D01* +X167895196Y-87204810D01* +X167896822Y-87205975D01* +X167896626Y-87207965D01* +X167895000Y-87208800D01* +X167838638Y-87208800D01* +X167838442Y-87208790D01* +X167820150Y-87206989D01* +X167819765Y-87206913D01* +X167808083Y-87203369D01* +X167807721Y-87203219D01* +X167796944Y-87197458D01* +X167796618Y-87197240D01* +X167782830Y-87185925D01* +X167782685Y-87185793D01* +X167773430Y-87176537D01* +X167753384Y-87163141D01* +X167731111Y-87153914D01* +X167707461Y-87149208D01* +X167683354Y-87149206D01* +X167659704Y-87153909D01* +X167637430Y-87163134D01* +X167617381Y-87176528D01* +X167608120Y-87185789D01* +X167607975Y-87185921D01* +X167594182Y-87197240D01* +X167593856Y-87197458D01* +X167583079Y-87203219D01* +X167582717Y-87203369D01* +X167571035Y-87206913D01* +X167570650Y-87206989D01* +X167552358Y-87208790D01* +X167552162Y-87208800D01* +X167495800Y-87208800D01* +X167494068Y-87207800D01* +X167494068Y-87205800D01* +X167495604Y-87204810D01* +X167519869Y-87202420D01* +X167543020Y-87195397D01* +X167564353Y-87183995D01* +X167583050Y-87168650D01* +X167598395Y-87149953D01* +X167609797Y-87128620D01* +X167616820Y-87105469D01* +X167619200Y-87081306D01* +X167619200Y-85755694D01* +X167616820Y-85731531D01* +X167609797Y-85708380D01* +X167598395Y-85687047D01* +X167583050Y-85668350D01* +X167564353Y-85653005D01* +X167543020Y-85641603D01* +X167519869Y-85634580D01* +X167495604Y-85632190D01* +X167493978Y-85631025D01* +X167494174Y-85629035D01* +X167495800Y-85628200D01* +X167552162Y-85628200D01* +X167552358Y-85628210D01* +G37* +G36* +X164302358Y-85628210D02* +G01* +X164320650Y-85630011D01* +X164321035Y-85630087D01* +X164332717Y-85633631D01* +X164333079Y-85633781D01* +X164343856Y-85639542D01* +X164344182Y-85639760D01* +X164357970Y-85651075D01* +X164358115Y-85651207D01* +X164367370Y-85660463D01* +X164387416Y-85673859D01* +X164409689Y-85683086D01* +X164433339Y-85687792D01* +X164457446Y-85687794D01* +X164481096Y-85683091D01* +X164503370Y-85673866D01* +X164523419Y-85660472D01* +X164532680Y-85651211D01* +X164532825Y-85651079D01* +X164546618Y-85639760D01* +X164546944Y-85639542D01* +X164557721Y-85633781D01* +X164558083Y-85633631D01* +X164569765Y-85630087D01* +X164570150Y-85630011D01* +X164588442Y-85628210D01* +X164588638Y-85628200D01* +X164645000Y-85628200D01* +X164646732Y-85629200D01* +X164646732Y-85631200D01* +X164645196Y-85632190D01* +X164620931Y-85634580D01* +X164597780Y-85641603D01* +X164576447Y-85653005D01* +X164557750Y-85668350D01* +X164542405Y-85687047D01* +X164531003Y-85708380D01* +X164523980Y-85731531D01* +X164521600Y-85755694D01* +X164521600Y-87081306D01* +X164523980Y-87105469D01* +X164531003Y-87128620D01* +X164542405Y-87149953D01* +X164557750Y-87168650D01* +X164576447Y-87183995D01* +X164597780Y-87195397D01* +X164620931Y-87202420D01* +X164645196Y-87204810D01* +X164646822Y-87205975D01* +X164646626Y-87207965D01* +X164645000Y-87208800D01* +X164588638Y-87208800D01* +X164588442Y-87208790D01* +X164570150Y-87206989D01* +X164569765Y-87206913D01* +X164558083Y-87203369D01* +X164557721Y-87203219D01* +X164546944Y-87197458D01* +X164546618Y-87197240D01* +X164532830Y-87185925D01* +X164532685Y-87185793D01* +X164523430Y-87176537D01* +X164503384Y-87163141D01* +X164481111Y-87153914D01* +X164457461Y-87149208D01* +X164433354Y-87149206D01* +X164409704Y-87153909D01* +X164387430Y-87163134D01* +X164367381Y-87176528D01* +X164358120Y-87185789D01* +X164357975Y-87185921D01* +X164344182Y-87197240D01* +X164343856Y-87197458D01* +X164333079Y-87203219D01* +X164332717Y-87203369D01* +X164321035Y-87206913D01* +X164320650Y-87206989D01* +X164302358Y-87208790D01* +X164302162Y-87208800D01* +X164245800Y-87208800D01* +X164244068Y-87207800D01* +X164244068Y-87205800D01* +X164245604Y-87204810D01* +X164269869Y-87202420D01* +X164293020Y-87195397D01* +X164314353Y-87183995D01* +X164333050Y-87168650D01* +X164348395Y-87149953D01* +X164359797Y-87128620D01* +X164366820Y-87105469D01* +X164369200Y-87081306D01* +X164369200Y-85755694D01* +X164366820Y-85731531D01* +X164359797Y-85708380D01* +X164348395Y-85687047D01* +X164333050Y-85668350D01* +X164314353Y-85653005D01* +X164293020Y-85641603D01* +X164269869Y-85634580D01* +X164245604Y-85632190D01* +X164243978Y-85631025D01* +X164244174Y-85629035D01* +X164245800Y-85628200D01* +X164302162Y-85628200D01* +X164302358Y-85628210D01* +G37* +G36* +X164952358Y-85628210D02* +G01* +X164970650Y-85630011D01* +X164971035Y-85630087D01* +X164982717Y-85633631D01* +X164983079Y-85633781D01* +X164993856Y-85639542D01* +X164994182Y-85639760D01* +X165007970Y-85651075D01* +X165008115Y-85651207D01* +X165017370Y-85660463D01* +X165037416Y-85673859D01* +X165059689Y-85683086D01* +X165083339Y-85687792D01* +X165107446Y-85687794D01* +X165131096Y-85683091D01* +X165153370Y-85673866D01* +X165173419Y-85660472D01* +X165182680Y-85651211D01* +X165182825Y-85651079D01* +X165196618Y-85639760D01* +X165196944Y-85639542D01* +X165207721Y-85633781D01* +X165208083Y-85633631D01* +X165219765Y-85630087D01* +X165220150Y-85630011D01* +X165238442Y-85628210D01* +X165238638Y-85628200D01* +X165295000Y-85628200D01* +X165296732Y-85629200D01* +X165296732Y-85631200D01* +X165295196Y-85632190D01* +X165270931Y-85634580D01* +X165247780Y-85641603D01* +X165226447Y-85653005D01* +X165207750Y-85668350D01* +X165192405Y-85687047D01* +X165181003Y-85708380D01* +X165173980Y-85731531D01* +X165171600Y-85755694D01* +X165171600Y-87081306D01* +X165173980Y-87105469D01* +X165181003Y-87128620D01* +X165192405Y-87149953D01* +X165207750Y-87168650D01* +X165226447Y-87183995D01* +X165247780Y-87195397D01* +X165270931Y-87202420D01* +X165295196Y-87204810D01* +X165296822Y-87205975D01* +X165296626Y-87207965D01* +X165295000Y-87208800D01* +X165238638Y-87208800D01* +X165238442Y-87208790D01* +X165220150Y-87206989D01* +X165219765Y-87206913D01* +X165208083Y-87203369D01* +X165207721Y-87203219D01* +X165196944Y-87197458D01* +X165196618Y-87197240D01* +X165182830Y-87185925D01* +X165182685Y-87185793D01* +X165173430Y-87176537D01* +X165153384Y-87163141D01* +X165131111Y-87153914D01* +X165107461Y-87149208D01* +X165083354Y-87149206D01* +X165059704Y-87153909D01* +X165037430Y-87163134D01* +X165017381Y-87176528D01* +X165008120Y-87185789D01* +X165007975Y-87185921D01* +X164994182Y-87197240D01* +X164993856Y-87197458D01* +X164983079Y-87203219D01* +X164982717Y-87203369D01* +X164971035Y-87206913D01* +X164970650Y-87206989D01* +X164952358Y-87208790D01* +X164952162Y-87208800D01* +X164895800Y-87208800D01* +X164894068Y-87207800D01* +X164894068Y-87205800D01* +X164895604Y-87204810D01* +X164919869Y-87202420D01* +X164943020Y-87195397D01* +X164964353Y-87183995D01* +X164983050Y-87168650D01* +X164998395Y-87149953D01* +X165009797Y-87128620D01* +X165016820Y-87105469D01* +X165019200Y-87081306D01* +X165019200Y-85755694D01* +X165016820Y-85731531D01* +X165009797Y-85708380D01* +X164998395Y-85687047D01* +X164983050Y-85668350D01* +X164964353Y-85653005D01* +X164943020Y-85641603D01* +X164919869Y-85634580D01* +X164895604Y-85632190D01* +X164893978Y-85631025D01* +X164894174Y-85629035D01* +X164895800Y-85628200D01* +X164952162Y-85628200D01* +X164952358Y-85628210D01* +G37* +G36* +X168852358Y-85628210D02* +G01* +X168870650Y-85630011D01* +X168871035Y-85630087D01* +X168882717Y-85633631D01* +X168883079Y-85633781D01* +X168893856Y-85639542D01* +X168894182Y-85639760D01* +X168907970Y-85651075D01* +X168908115Y-85651207D01* +X168917370Y-85660463D01* +X168937416Y-85673859D01* +X168959689Y-85683086D01* +X168983339Y-85687792D01* +X169007446Y-85687794D01* +X169031096Y-85683091D01* +X169053370Y-85673866D01* +X169073419Y-85660472D01* +X169082680Y-85651211D01* +X169082825Y-85651079D01* +X169096618Y-85639760D01* +X169096944Y-85639542D01* +X169107721Y-85633781D01* +X169108083Y-85633631D01* +X169119765Y-85630087D01* +X169120150Y-85630011D01* +X169138442Y-85628210D01* +X169138638Y-85628200D01* +X169195000Y-85628200D01* +X169196732Y-85629200D01* +X169196732Y-85631200D01* +X169195196Y-85632190D01* +X169170931Y-85634580D01* +X169147780Y-85641603D01* +X169126447Y-85653005D01* +X169107750Y-85668350D01* +X169092405Y-85687047D01* +X169081003Y-85708380D01* +X169073980Y-85731531D01* +X169071600Y-85755694D01* +X169071600Y-87081306D01* +X169073980Y-87105469D01* +X169081003Y-87128620D01* +X169092405Y-87149953D01* +X169107750Y-87168650D01* +X169126447Y-87183995D01* +X169147780Y-87195397D01* +X169170931Y-87202420D01* +X169195196Y-87204810D01* +X169196822Y-87205975D01* +X169196626Y-87207965D01* +X169195000Y-87208800D01* +X169138638Y-87208800D01* +X169138442Y-87208790D01* +X169120150Y-87206989D01* +X169119765Y-87206913D01* +X169108083Y-87203369D01* +X169107721Y-87203219D01* +X169096944Y-87197458D01* +X169096618Y-87197240D01* +X169082830Y-87185925D01* +X169082685Y-87185793D01* +X169073430Y-87176537D01* +X169053384Y-87163141D01* +X169031111Y-87153914D01* +X169007461Y-87149208D01* +X168983354Y-87149206D01* +X168959704Y-87153909D01* +X168937430Y-87163134D01* +X168917381Y-87176528D01* +X168908120Y-87185789D01* +X168907975Y-87185921D01* +X168894182Y-87197240D01* +X168893856Y-87197458D01* +X168883079Y-87203219D01* +X168882717Y-87203369D01* +X168871035Y-87206913D01* +X168870650Y-87206989D01* +X168852358Y-87208790D01* +X168852162Y-87208800D01* +X168795800Y-87208800D01* +X168794068Y-87207800D01* +X168794068Y-87205800D01* +X168795604Y-87204810D01* +X168819869Y-87202420D01* +X168843020Y-87195397D01* +X168864353Y-87183995D01* +X168883050Y-87168650D01* +X168898395Y-87149953D01* +X168909797Y-87128620D01* +X168916820Y-87105469D01* +X168919200Y-87081306D01* +X168919200Y-85755694D01* +X168916820Y-85731531D01* +X168909797Y-85708380D01* +X168898395Y-85687047D01* +X168883050Y-85668350D01* +X168864353Y-85653005D01* +X168843020Y-85641603D01* +X168819869Y-85634580D01* +X168795604Y-85632190D01* +X168793978Y-85631025D01* +X168794174Y-85629035D01* +X168795800Y-85628200D01* +X168852162Y-85628200D01* +X168852358Y-85628210D01* +G37* +M02* diff --git a/hw/v1/gerbers/v1-B_Paste.gbr b/hw/v1/gerbers/v1-B_Paste.gbr new file mode 100644 index 0000000..e7d4e95 --- /dev/null +++ b/hw/v1/gerbers/v1-B_Paste.gbr @@ -0,0 +1,1675 @@ +G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.8-0-10_14)* +G04 #@! TF.CreationDate,2021-03-05T16:46:23-05:00* +G04 #@! TF.ProjectId,v1,76312e6b-6963-4616-945f-706362585858,rev?* +G04 #@! TF.SameCoordinates,Original* +G04 #@! TF.FileFunction,Paste,Bot* +G04 #@! TF.FilePolarity,Positive* +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.8-0-10_14)) date 2021-03-05 16:46:23* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%ADD10R,3.760000X1.960000*% +%ADD11R,1.460000X1.960000*% +%ADD12R,1.160000X1.160000*% +%ADD13R,1.560000X1.460000*% +%ADD14R,0.760000X0.860000*% +%ADD15R,0.260000X1.210000*% +%ADD16R,1.960000X2.960000*% +%ADD17R,0.410000X0.560000*% +%ADD18R,2.260000X2.260000*% +%ADD19R,0.950600X1.509400*% +G04 APERTURE END LIST* +G36* +G01* +X161353800Y-90301000D02* +X161073800Y-90301000D01* +G75* +G02* +X160933800Y-90161000I0J140000D01* +G01* +X160933800Y-88531000D01* +G75* +G02* +X161073800Y-88391000I140000J0D01* +G01* +X161353800Y-88391000D01* +G75* +G02* +X161493800Y-88531000I0J-140000D01* +G01* +X161493800Y-90161000D01* +G75* +G02* +X161353800Y-90301000I-140000J0D01* +G01* +G37* +G36* +G01* +X160083800Y-90301000D02* +X159803800Y-90301000D01* +G75* +G02* +X159663800Y-90161000I0J140000D01* +G01* +X159663800Y-88531000D01* +G75* +G02* +X159803800Y-88391000I140000J0D01* +G01* +X160083800Y-88391000D01* +G75* +G02* +X160223800Y-88531000I0J-140000D01* +G01* +X160223800Y-90161000D01* +G75* +G02* +X160083800Y-90301000I-140000J0D01* +G01* +G37* +G36* +G01* +X158813800Y-90301000D02* +X158533800Y-90301000D01* +G75* +G02* +X158393800Y-90161000I0J140000D01* +G01* +X158393800Y-88531000D01* +G75* +G02* +X158533800Y-88391000I140000J0D01* +G01* +X158813800Y-88391000D01* +G75* +G02* +X158953800Y-88531000I0J-140000D01* +G01* +X158953800Y-90161000D01* +G75* +G02* +X158813800Y-90301000I-140000J0D01* +G01* +G37* +G36* +G01* +X157543800Y-90301000D02* +X157263800Y-90301000D01* +G75* +G02* +X157123800Y-90161000I0J140000D01* +G01* +X157123800Y-88531000D01* +G75* +G02* +X157263800Y-88391000I140000J0D01* +G01* +X157543800Y-88391000D01* +G75* +G02* +X157683800Y-88531000I0J-140000D01* +G01* +X157683800Y-90161000D01* +G75* +G02* +X157543800Y-90301000I-140000J0D01* +G01* +G37* +G36* +G01* +X157543800Y-95251000D02* +X157263800Y-95251000D01* +G75* +G02* +X157123800Y-95111000I0J140000D01* +G01* +X157123800Y-93481000D01* +G75* +G02* +X157263800Y-93341000I140000J0D01* +G01* +X157543800Y-93341000D01* +G75* +G02* +X157683800Y-93481000I0J-140000D01* +G01* +X157683800Y-95111000D01* +G75* +G02* +X157543800Y-95251000I-140000J0D01* +G01* +G37* +G36* +G01* +X158813800Y-95251000D02* +X158533800Y-95251000D01* +G75* +G02* +X158393800Y-95111000I0J140000D01* +G01* +X158393800Y-93481000D01* +G75* +G02* +X158533800Y-93341000I140000J0D01* +G01* +X158813800Y-93341000D01* +G75* +G02* +X158953800Y-93481000I0J-140000D01* +G01* +X158953800Y-95111000D01* +G75* +G02* +X158813800Y-95251000I-140000J0D01* +G01* +G37* +G36* +G01* +X160083800Y-95251000D02* +X159803800Y-95251000D01* +G75* +G02* +X159663800Y-95111000I0J140000D01* +G01* +X159663800Y-93481000D01* +G75* +G02* +X159803800Y-93341000I140000J0D01* +G01* +X160083800Y-93341000D01* +G75* +G02* +X160223800Y-93481000I0J-140000D01* +G01* +X160223800Y-95111000D01* +G75* +G02* +X160083800Y-95251000I-140000J0D01* +G01* +G37* +G36* +G01* +X161353800Y-95251000D02* +X161073800Y-95251000D01* +G75* +G02* +X160933800Y-95111000I0J140000D01* +G01* +X160933800Y-93481000D01* +G75* +G02* +X161073800Y-93341000I140000J0D01* +G01* +X161353800Y-93341000D01* +G75* +G02* +X161493800Y-93481000I0J-140000D01* +G01* +X161493800Y-95111000D01* +G75* +G02* +X161353800Y-95251000I-140000J0D01* +G01* +G37* +D10* +X137718800Y-94716200D03* +D11* +X137718800Y-101016200D03* +X135418800Y-101016200D03* +X140018800Y-101016200D03* +G36* +G01* +X169410400Y-87136000D02* +X169230400Y-87136000D01* +G75* +G02* +X169140400Y-87046000I0J90000D01* +G01* +X169140400Y-85791000D01* +G75* +G02* +X169230400Y-85701000I90000J0D01* +G01* +X169410400Y-85701000D01* +G75* +G02* +X169500400Y-85791000I0J-90000D01* +G01* +X169500400Y-87046000D01* +G75* +G02* +X169410400Y-87136000I-90000J0D01* +G01* +G37* +G36* +G01* +X168760400Y-87136000D02* +X168580400Y-87136000D01* +G75* +G02* +X168490400Y-87046000I0J90000D01* +G01* +X168490400Y-85791000D01* +G75* +G02* +X168580400Y-85701000I90000J0D01* +G01* +X168760400Y-85701000D01* +G75* +G02* +X168850400Y-85791000I0J-90000D01* +G01* +X168850400Y-87046000D01* +G75* +G02* +X168760400Y-87136000I-90000J0D01* +G01* +G37* +G36* +G01* +X168110400Y-87136000D02* +X167930400Y-87136000D01* +G75* +G02* +X167840400Y-87046000I0J90000D01* +G01* +X167840400Y-85791000D01* +G75* +G02* +X167930400Y-85701000I90000J0D01* +G01* +X168110400Y-85701000D01* +G75* +G02* +X168200400Y-85791000I0J-90000D01* +G01* +X168200400Y-87046000D01* +G75* +G02* +X168110400Y-87136000I-90000J0D01* +G01* +G37* +G36* +G01* +X167460400Y-87136000D02* +X167280400Y-87136000D01* +G75* +G02* +X167190400Y-87046000I0J90000D01* +G01* +X167190400Y-85791000D01* +G75* +G02* +X167280400Y-85701000I90000J0D01* +G01* +X167460400Y-85701000D01* +G75* +G02* +X167550400Y-85791000I0J-90000D01* +G01* +X167550400Y-87046000D01* +G75* +G02* +X167460400Y-87136000I-90000J0D01* +G01* +G37* +G36* +G01* +X166810400Y-87136000D02* +X166630400Y-87136000D01* +G75* +G02* +X166540400Y-87046000I0J90000D01* +G01* +X166540400Y-85791000D01* +G75* +G02* +X166630400Y-85701000I90000J0D01* +G01* +X166810400Y-85701000D01* +G75* +G02* +X166900400Y-85791000I0J-90000D01* +G01* +X166900400Y-87046000D01* +G75* +G02* +X166810400Y-87136000I-90000J0D01* +G01* +G37* +G36* +G01* +X166160400Y-87136000D02* +X165980400Y-87136000D01* +G75* +G02* +X165890400Y-87046000I0J90000D01* +G01* +X165890400Y-85791000D01* +G75* +G02* +X165980400Y-85701000I90000J0D01* +G01* +X166160400Y-85701000D01* +G75* +G02* +X166250400Y-85791000I0J-90000D01* +G01* +X166250400Y-87046000D01* +G75* +G02* +X166160400Y-87136000I-90000J0D01* +G01* +G37* +G36* +G01* +X165510400Y-87136000D02* +X165330400Y-87136000D01* +G75* +G02* +X165240400Y-87046000I0J90000D01* +G01* +X165240400Y-85791000D01* +G75* +G02* +X165330400Y-85701000I90000J0D01* +G01* +X165510400Y-85701000D01* +G75* +G02* +X165600400Y-85791000I0J-90000D01* +G01* +X165600400Y-87046000D01* +G75* +G02* +X165510400Y-87136000I-90000J0D01* +G01* +G37* +G36* +G01* +X164860400Y-87136000D02* +X164680400Y-87136000D01* +G75* +G02* +X164590400Y-87046000I0J90000D01* +G01* +X164590400Y-85791000D01* +G75* +G02* +X164680400Y-85701000I90000J0D01* +G01* +X164860400Y-85701000D01* +G75* +G02* +X164950400Y-85791000I0J-90000D01* +G01* +X164950400Y-87046000D01* +G75* +G02* +X164860400Y-87136000I-90000J0D01* +G01* +G37* +G36* +G01* +X164210400Y-87136000D02* +X164030400Y-87136000D01* +G75* +G02* +X163940400Y-87046000I0J90000D01* +G01* +X163940400Y-85791000D01* +G75* +G02* +X164030400Y-85701000I90000J0D01* +G01* +X164210400Y-85701000D01* +G75* +G02* +X164300400Y-85791000I0J-90000D01* +G01* +X164300400Y-87046000D01* +G75* +G02* +X164210400Y-87136000I-90000J0D01* +G01* +G37* +G36* +G01* +X163560400Y-87136000D02* +X163380400Y-87136000D01* +G75* +G02* +X163290400Y-87046000I0J90000D01* +G01* +X163290400Y-85791000D01* +G75* +G02* +X163380400Y-85701000I90000J0D01* +G01* +X163560400Y-85701000D01* +G75* +G02* +X163650400Y-85791000I0J-90000D01* +G01* +X163650400Y-87046000D01* +G75* +G02* +X163560400Y-87136000I-90000J0D01* +G01* +G37* +G36* +G01* +X163560400Y-92861000D02* +X163380400Y-92861000D01* +G75* +G02* +X163290400Y-92771000I0J90000D01* +G01* +X163290400Y-91516000D01* +G75* +G02* +X163380400Y-91426000I90000J0D01* +G01* +X163560400Y-91426000D01* +G75* +G02* +X163650400Y-91516000I0J-90000D01* +G01* +X163650400Y-92771000D01* +G75* +G02* +X163560400Y-92861000I-90000J0D01* +G01* +G37* +G36* +G01* +X164210400Y-92861000D02* +X164030400Y-92861000D01* +G75* +G02* +X163940400Y-92771000I0J90000D01* +G01* +X163940400Y-91516000D01* +G75* +G02* +X164030400Y-91426000I90000J0D01* +G01* +X164210400Y-91426000D01* +G75* +G02* +X164300400Y-91516000I0J-90000D01* +G01* +X164300400Y-92771000D01* +G75* +G02* +X164210400Y-92861000I-90000J0D01* +G01* +G37* +G36* +G01* +X164860400Y-92861000D02* +X164680400Y-92861000D01* +G75* +G02* +X164590400Y-92771000I0J90000D01* +G01* +X164590400Y-91516000D01* +G75* +G02* +X164680400Y-91426000I90000J0D01* +G01* +X164860400Y-91426000D01* +G75* +G02* +X164950400Y-91516000I0J-90000D01* +G01* +X164950400Y-92771000D01* +G75* +G02* +X164860400Y-92861000I-90000J0D01* +G01* +G37* +G36* +G01* +X165510400Y-92861000D02* +X165330400Y-92861000D01* +G75* +G02* +X165240400Y-92771000I0J90000D01* +G01* +X165240400Y-91516000D01* +G75* +G02* +X165330400Y-91426000I90000J0D01* +G01* +X165510400Y-91426000D01* +G75* +G02* +X165600400Y-91516000I0J-90000D01* +G01* +X165600400Y-92771000D01* +G75* +G02* +X165510400Y-92861000I-90000J0D01* +G01* +G37* +G36* +G01* +X166160400Y-92861000D02* +X165980400Y-92861000D01* +G75* +G02* +X165890400Y-92771000I0J90000D01* +G01* +X165890400Y-91516000D01* +G75* +G02* +X165980400Y-91426000I90000J0D01* +G01* +X166160400Y-91426000D01* +G75* +G02* +X166250400Y-91516000I0J-90000D01* +G01* +X166250400Y-92771000D01* +G75* +G02* +X166160400Y-92861000I-90000J0D01* +G01* +G37* +G36* +G01* +X166810400Y-92861000D02* +X166630400Y-92861000D01* +G75* +G02* +X166540400Y-92771000I0J90000D01* +G01* +X166540400Y-91516000D01* +G75* +G02* +X166630400Y-91426000I90000J0D01* +G01* +X166810400Y-91426000D01* +G75* +G02* +X166900400Y-91516000I0J-90000D01* +G01* +X166900400Y-92771000D01* +G75* +G02* +X166810400Y-92861000I-90000J0D01* +G01* +G37* +G36* +G01* +X167460400Y-92861000D02* +X167280400Y-92861000D01* +G75* +G02* +X167190400Y-92771000I0J90000D01* +G01* +X167190400Y-91516000D01* +G75* +G02* +X167280400Y-91426000I90000J0D01* +G01* +X167460400Y-91426000D01* +G75* +G02* +X167550400Y-91516000I0J-90000D01* +G01* +X167550400Y-92771000D01* +G75* +G02* +X167460400Y-92861000I-90000J0D01* +G01* +G37* +G36* +G01* +X168110400Y-92861000D02* +X167930400Y-92861000D01* +G75* +G02* +X167840400Y-92771000I0J90000D01* +G01* +X167840400Y-91516000D01* +G75* +G02* +X167930400Y-91426000I90000J0D01* +G01* +X168110400Y-91426000D01* +G75* +G02* +X168200400Y-91516000I0J-90000D01* +G01* +X168200400Y-92771000D01* +G75* +G02* +X168110400Y-92861000I-90000J0D01* +G01* +G37* +G36* +G01* +X168760400Y-92861000D02* +X168580400Y-92861000D01* +G75* +G02* +X168490400Y-92771000I0J90000D01* +G01* +X168490400Y-91516000D01* +G75* +G02* +X168580400Y-91426000I90000J0D01* +G01* +X168760400Y-91426000D01* +G75* +G02* +X168850400Y-91516000I0J-90000D01* +G01* +X168850400Y-92771000D01* +G75* +G02* +X168760400Y-92861000I-90000J0D01* +G01* +G37* +G36* +G01* +X169410400Y-92861000D02* +X169230400Y-92861000D01* +G75* +G02* +X169140400Y-92771000I0J90000D01* +G01* +X169140400Y-91516000D01* +G75* +G02* +X169230400Y-91426000I90000J0D01* +G01* +X169410400Y-91426000D01* +G75* +G02* +X169500400Y-91516000I0J-90000D01* +G01* +X169500400Y-92771000D01* +G75* +G02* +X169410400Y-92861000I-90000J0D01* +G01* +G37* +D12* +X152155400Y-101215600D03* +X150155400Y-101215600D03* +D13* +X151155400Y-97965600D03* +G36* +G01* +X157945200Y-81538742D02* +X157945200Y-82418258D01* +G75* +G02* +X157704958Y-82658500I-240242J0D01* +G01* +X157200442Y-82658500D01* +G75* +G02* +X156960200Y-82418258I0J240242D01* +G01* +X156960200Y-81538742D01* +G75* +G02* +X157200442Y-81298500I240242J0D01* +G01* +X157704958Y-81298500D01* +G75* +G02* +X157945200Y-81538742I0J-240242D01* +G01* +G37* +G36* +G01* +X156120200Y-81538742D02* +X156120200Y-82418258D01* +G75* +G02* +X155879958Y-82658500I-240242J0D01* +G01* +X155375442Y-82658500D01* +G75* +G02* +X155135200Y-82418258I0J240242D01* +G01* +X155135200Y-81538742D01* +G75* +G02* +X155375442Y-81298500I240242J0D01* +G01* +X155879958Y-81298500D01* +G75* +G02* +X156120200Y-81538742I0J-240242D01* +G01* +G37* +G36* +G01* +X136736158Y-83599400D02* +X135856642Y-83599400D01* +G75* +G02* +X135616400Y-83359158I0J240242D01* +G01* +X135616400Y-82854642D01* +G75* +G02* +X135856642Y-82614400I240242J0D01* +G01* +X136736158Y-82614400D01* +G75* +G02* +X136976400Y-82854642I0J-240242D01* +G01* +X136976400Y-83359158D01* +G75* +G02* +X136736158Y-83599400I-240242J0D01* +G01* +G37* +G36* +G01* +X136736158Y-81774400D02* +X135856642Y-81774400D01* +G75* +G02* +X135616400Y-81534158I0J240242D01* +G01* +X135616400Y-81029642D01* +G75* +G02* +X135856642Y-80789400I240242J0D01* +G01* +X136736158Y-80789400D01* +G75* +G02* +X136976400Y-81029642I0J-240242D01* +G01* +X136976400Y-81534158D01* +G75* +G02* +X136736158Y-81774400I-240242J0D01* +G01* +G37* +G36* +G01* +X145629400Y-98178958D02* +X145629400Y-97299442D01* +G75* +G02* +X145869642Y-97059200I240242J0D01* +G01* +X146374158Y-97059200D01* +G75* +G02* +X146614400Y-97299442I0J-240242D01* +G01* +X146614400Y-98178958D01* +G75* +G02* +X146374158Y-98419200I-240242J0D01* +G01* +X145869642Y-98419200D01* +G75* +G02* +X145629400Y-98178958I0J240242D01* +G01* +G37* +G36* +G01* +X147454400Y-98178958D02* +X147454400Y-97299442D01* +G75* +G02* +X147694642Y-97059200I240242J0D01* +G01* +X148199158Y-97059200D01* +G75* +G02* +X148439400Y-97299442I0J-240242D01* +G01* +X148439400Y-98178958D01* +G75* +G02* +X148199158Y-98419200I-240242J0D01* +G01* +X147694642Y-98419200D01* +G75* +G02* +X147454400Y-98178958I0J240242D01* +G01* +G37* +G36* +G01* +X141895600Y-98170492D02* +X141895600Y-97290976D01* +G75* +G02* +X142135842Y-97050734I240242J0D01* +G01* +X142640358Y-97050734D01* +G75* +G02* +X142880600Y-97290976I0J-240242D01* +G01* +X142880600Y-98170492D01* +G75* +G02* +X142640358Y-98410734I-240242J0D01* +G01* +X142135842Y-98410734D01* +G75* +G02* +X141895600Y-98170492I0J240242D01* +G01* +G37* +G36* +G01* +X143720600Y-98170492D02* +X143720600Y-97290976D01* +G75* +G02* +X143960842Y-97050734I240242J0D01* +G01* +X144465358Y-97050734D01* +G75* +G02* +X144705600Y-97290976I0J-240242D01* +G01* +X144705600Y-98170492D01* +G75* +G02* +X144465358Y-98410734I-240242J0D01* +G01* +X143960842Y-98410734D01* +G75* +G02* +X143720600Y-98170492I0J240242D01* +G01* +G37* +G36* +G01* +X159377042Y-101308800D02* +X160256558Y-101308800D01* +G75* +G02* +X160496800Y-101549042I0J-240242D01* +G01* +X160496800Y-102053558D01* +G75* +G02* +X160256558Y-102293800I-240242J0D01* +G01* +X159377042Y-102293800D01* +G75* +G02* +X159136800Y-102053558I0J240242D01* +G01* +X159136800Y-101549042D01* +G75* +G02* +X159377042Y-101308800I240242J0D01* +G01* +G37* +G36* +G01* +X159377042Y-99483800D02* +X160256558Y-99483800D01* +G75* +G02* +X160496800Y-99724042I0J-240242D01* +G01* +X160496800Y-100228558D01* +G75* +G02* +X160256558Y-100468800I-240242J0D01* +G01* +X159377042Y-100468800D01* +G75* +G02* +X159136800Y-100228558I0J240242D01* +G01* +X159136800Y-99724042D01* +G75* +G02* +X159377042Y-99483800I240242J0D01* +G01* +G37* +G36* +G01* +X172171058Y-82614500D02* +X171291542Y-82614500D01* +G75* +G02* +X171051300Y-82374258I0J240242D01* +G01* +X171051300Y-81869742D01* +G75* +G02* +X171291542Y-81629500I240242J0D01* +G01* +X172171058Y-81629500D01* +G75* +G02* +X172411300Y-81869742I0J-240242D01* +G01* +X172411300Y-82374258D01* +G75* +G02* +X172171058Y-82614500I-240242J0D01* +G01* +G37* +G36* +G01* +X172171058Y-84439500D02* +X171291542Y-84439500D01* +G75* +G02* +X171051300Y-84199258I0J240242D01* +G01* +X171051300Y-83694742D01* +G75* +G02* +X171291542Y-83454500I240242J0D01* +G01* +X172171058Y-83454500D01* +G75* +G02* +X172411300Y-83694742I0J-240242D01* +G01* +X172411300Y-84199258D01* +G75* +G02* +X172171058Y-84439500I-240242J0D01* +G01* +G37* +G36* +G01* +X150106000Y-96146958D02* +X150106000Y-95267442D01* +G75* +G02* +X150346242Y-95027200I240242J0D01* +G01* +X150850758Y-95027200D01* +G75* +G02* +X151091000Y-95267442I0J-240242D01* +G01* +X151091000Y-96146958D01* +G75* +G02* +X150850758Y-96387200I-240242J0D01* +G01* +X150346242Y-96387200D01* +G75* +G02* +X150106000Y-96146958I0J240242D01* +G01* +G37* +G36* +G01* +X151931000Y-96146958D02* +X151931000Y-95267442D01* +G75* +G02* +X152171242Y-95027200I240242J0D01* +G01* +X152675758Y-95027200D01* +G75* +G02* +X152916000Y-95267442I0J-240242D01* +G01* +X152916000Y-96146958D01* +G75* +G02* +X152675758Y-96387200I-240242J0D01* +G01* +X152171242Y-96387200D01* +G75* +G02* +X151931000Y-96146958I0J240242D01* +G01* +G37* +G36* +G01* +X172143758Y-88249500D02* +X171264242Y-88249500D01* +G75* +G02* +X171024000Y-88009258I0J240242D01* +G01* +X171024000Y-87504742D01* +G75* +G02* +X171264242Y-87264500I240242J0D01* +G01* +X172143758Y-87264500D01* +G75* +G02* +X172384000Y-87504742I0J-240242D01* +G01* +X172384000Y-88009258D01* +G75* +G02* +X172143758Y-88249500I-240242J0D01* +G01* +G37* +G36* +G01* +X172143758Y-90074500D02* +X171264242Y-90074500D01* +G75* +G02* +X171024000Y-89834258I0J240242D01* +G01* +X171024000Y-89329742D01* +G75* +G02* +X171264242Y-89089500I240242J0D01* +G01* +X172143758Y-89089500D01* +G75* +G02* +X172384000Y-89329742I0J-240242D01* +G01* +X172384000Y-89834258D01* +G75* +G02* +X172143758Y-90074500I-240242J0D01* +G01* +G37* +G36* +G01* +X131487800Y-91295558D02* +X131487800Y-90416042D01* +G75* +G02* +X131728042Y-90175800I240242J0D01* +G01* +X132232558Y-90175800D01* +G75* +G02* +X132472800Y-90416042I0J-240242D01* +G01* +X132472800Y-91295558D01* +G75* +G02* +X132232558Y-91535800I-240242J0D01* +G01* +X131728042Y-91535800D01* +G75* +G02* +X131487800Y-91295558I0J240242D01* +G01* +G37* +G36* +G01* +X133312800Y-91295558D02* +X133312800Y-90416042D01* +G75* +G02* +X133553042Y-90175800I240242J0D01* +G01* +X134057558Y-90175800D01* +G75* +G02* +X134297800Y-90416042I0J-240242D01* +G01* +X134297800Y-91295558D01* +G75* +G02* +X134057558Y-91535800I-240242J0D01* +G01* +X133553042Y-91535800D01* +G75* +G02* +X133312800Y-91295558I0J240242D01* +G01* +G37* +D14* +X146014400Y-99592468D03* +X147914400Y-99592468D03* +X146964400Y-101592468D03* +X142280600Y-99584000D03* +X144180600Y-99584000D03* +X143230600Y-101584000D03* +D15* +X138392000Y-91352000D03* +D16* +X136852000Y-89027000D03* +X154432000Y-89027000D03* +D15* +X138892000Y-91352000D03* +X139392000Y-91352000D03* +X139892000Y-91352000D03* +X140392000Y-91352000D03* +X140892000Y-91352000D03* +X141392000Y-91352000D03* +X141892000Y-91352000D03* +X142392000Y-91352000D03* +X142892000Y-91352000D03* +X143392000Y-91352000D03* +X143892000Y-91352000D03* +X144392000Y-91352000D03* +X144892000Y-91352000D03* +X145392000Y-91352000D03* +X145892000Y-91352000D03* +X146392000Y-91352000D03* +X146892000Y-91352000D03* +X147392000Y-91352000D03* +X147892000Y-91352000D03* +X148392000Y-91352000D03* +X148892000Y-91352000D03* +X149392000Y-91352000D03* +X149892000Y-91352000D03* +X150392000Y-91352000D03* +X150892000Y-91352000D03* +X151392000Y-91352000D03* +X151892000Y-91352000D03* +X152392000Y-91352000D03* +X152892000Y-91352000D03* +D17* +X161899600Y-101286600D03* +X161899600Y-103386600D03* +G36* +G01* +X154856000Y-93058000D02* +X155786000Y-93058000D01* +G75* +G02* +X156026000Y-93298000I0J-240000D01* +G01* +X156026000Y-93778000D01* +G75* +G02* +X155786000Y-94018000I-240000J0D01* +G01* +X154856000Y-94018000D01* +G75* +G02* +X154616000Y-93778000I0J240000D01* +G01* +X154616000Y-93298000D01* +G75* +G02* +X154856000Y-93058000I240000J0D01* +G01* +G37* +G36* +G01* +X154856000Y-94958000D02* +X155786000Y-94958000D01* +G75* +G02* +X156026000Y-95198000I0J-240000D01* +G01* +X156026000Y-95678000D01* +G75* +G02* +X155786000Y-95918000I-240000J0D01* +G01* +X154856000Y-95918000D01* +G75* +G02* +X154616000Y-95678000I0J240000D01* +G01* +X154616000Y-95198000D01* +G75* +G02* +X154856000Y-94958000I240000J0D01* +G01* +G37* +G36* +G01* +X158473000Y-97579000D02* +X158473000Y-98509000D01* +G75* +G02* +X158233000Y-98749000I-240000J0D01* +G01* +X157753000Y-98749000D01* +G75* +G02* +X157513000Y-98509000I0J240000D01* +G01* +X157513000Y-97579000D01* +G75* +G02* +X157753000Y-97339000I240000J0D01* +G01* +X158233000Y-97339000D01* +G75* +G02* +X158473000Y-97579000I0J-240000D01* +G01* +G37* +G36* +G01* +X160373000Y-97579000D02* +X160373000Y-98509000D01* +G75* +G02* +X160133000Y-98749000I-240000J0D01* +G01* +X159653000Y-98749000D01* +G75* +G02* +X159413000Y-98509000I0J240000D01* +G01* +X159413000Y-97579000D01* +G75* +G02* +X159653000Y-97339000I240000J0D01* +G01* +X160133000Y-97339000D01* +G75* +G02* +X160373000Y-97579000I0J-240000D01* +G01* +G37* +G36* +G01* +X132480391Y-93781200D02* +X133305209Y-93781200D01* +G75* +G02* +X133547800Y-94023791I0J-242591D01* +G01* +X133547800Y-94898609D01* +G75* +G02* +X133305209Y-95141200I-242591J0D01* +G01* +X132480391Y-95141200D01* +G75* +G02* +X132237800Y-94898609I0J242591D01* +G01* +X132237800Y-94023791D01* +G75* +G02* +X132480391Y-93781200I242591J0D01* +G01* +G37* +G36* +G01* +X132480391Y-96481200D02* +X133305209Y-96481200D01* +G75* +G02* +X133547800Y-96723791I0J-242591D01* +G01* +X133547800Y-97598609D01* +G75* +G02* +X133305209Y-97841200I-242591J0D01* +G01* +X132480391Y-97841200D01* +G75* +G02* +X132237800Y-97598609I0J242591D01* +G01* +X132237800Y-96723791D01* +G75* +G02* +X132480391Y-96481200I242591J0D01* +G01* +G37* +G36* +G01* +X132497800Y-99136200D02* +X133427800Y-99136200D01* +G75* +G02* +X133667800Y-99376200I0J-240000D01* +G01* +X133667800Y-99856200D01* +G75* +G02* +X133427800Y-100096200I-240000J0D01* +G01* +X132497800Y-100096200D01* +G75* +G02* +X132257800Y-99856200I0J240000D01* +G01* +X132257800Y-99376200D01* +G75* +G02* +X132497800Y-99136200I240000J0D01* +G01* +G37* +G36* +G01* +X132497800Y-101036200D02* +X133427800Y-101036200D01* +G75* +G02* +X133667800Y-101276200I0J-240000D01* +G01* +X133667800Y-101756200D01* +G75* +G02* +X133427800Y-101996200I-240000J0D01* +G01* +X132497800Y-101996200D01* +G75* +G02* +X132257800Y-101756200I0J240000D01* +G01* +X132257800Y-101276200D01* +G75* +G02* +X132497800Y-101036200I240000J0D01* +G01* +G37* +G36* +G01* +X164183000Y-93896000D02* +X164183000Y-94826000D01* +G75* +G02* +X163943000Y-95066000I-240000J0D01* +G01* +X163463000Y-95066000D01* +G75* +G02* +X163223000Y-94826000I0J240000D01* +G01* +X163223000Y-93896000D01* +G75* +G02* +X163463000Y-93656000I240000J0D01* +G01* +X163943000Y-93656000D01* +G75* +G02* +X164183000Y-93896000I0J-240000D01* +G01* +G37* +G36* +G01* +X166083000Y-93896000D02* +X166083000Y-94826000D01* +G75* +G02* +X165843000Y-95066000I-240000J0D01* +G01* +X165363000Y-95066000D01* +G75* +G02* +X165123000Y-94826000I0J240000D01* +G01* +X165123000Y-93896000D01* +G75* +G02* +X165363000Y-93656000I240000J0D01* +G01* +X165843000Y-93656000D01* +G75* +G02* +X166083000Y-93896000I0J-240000D01* +G01* +G37* +G36* +G01* +X162364600Y-98310600D02* +X161434600Y-98310600D01* +G75* +G02* +X161194600Y-98070600I0J240000D01* +G01* +X161194600Y-97590600D01* +G75* +G02* +X161434600Y-97350600I240000J0D01* +G01* +X162364600Y-97350600D01* +G75* +G02* +X162604600Y-97590600I0J-240000D01* +G01* +X162604600Y-98070600D01* +G75* +G02* +X162364600Y-98310600I-240000J0D01* +G01* +G37* +G36* +G01* +X162364600Y-100210600D02* +X161434600Y-100210600D01* +G75* +G02* +X161194600Y-99970600I0J240000D01* +G01* +X161194600Y-99490600D01* +G75* +G02* +X161434600Y-99250600I240000J0D01* +G01* +X162364600Y-99250600D01* +G75* +G02* +X162604600Y-99490600I0J-240000D01* +G01* +X162604600Y-99970600D01* +G75* +G02* +X162364600Y-100210600I-240000J0D01* +G01* +G37* +G36* +G01* +X145752800Y-95191400D02* +X145752800Y-96121400D01* +G75* +G02* +X145512800Y-96361400I-240000J0D01* +G01* +X145032800Y-96361400D01* +G75* +G02* +X144792800Y-96121400I0J240000D01* +G01* +X144792800Y-95191400D01* +G75* +G02* +X145032800Y-94951400I240000J0D01* +G01* +X145512800Y-94951400D01* +G75* +G02* +X145752800Y-95191400I0J-240000D01* +G01* +G37* +G36* +G01* +X143852800Y-95191400D02* +X143852800Y-96121400D01* +G75* +G02* +X143612800Y-96361400I-240000J0D01* +G01* +X143132800Y-96361400D01* +G75* +G02* +X142892800Y-96121400I0J240000D01* +G01* +X142892800Y-95191400D01* +G75* +G02* +X143132800Y-94951400I240000J0D01* +G01* +X143612800Y-94951400D01* +G75* +G02* +X143852800Y-95191400I0J-240000D01* +G01* +G37* +G36* +G01* +X146499600Y-96146800D02* +X146499600Y-95216800D01* +G75* +G02* +X146739600Y-94976800I240000J0D01* +G01* +X147219600Y-94976800D01* +G75* +G02* +X147459600Y-95216800I0J-240000D01* +G01* +X147459600Y-96146800D01* +G75* +G02* +X147219600Y-96386800I-240000J0D01* +G01* +X146739600Y-96386800D01* +G75* +G02* +X146499600Y-96146800I0J240000D01* +G01* +G37* +G36* +G01* +X148399600Y-96146800D02* +X148399600Y-95216800D01* +G75* +G02* +X148639600Y-94976800I240000J0D01* +G01* +X149119600Y-94976800D01* +G75* +G02* +X149359600Y-95216800I0J-240000D01* +G01* +X149359600Y-96146800D01* +G75* +G02* +X149119600Y-96386800I-240000J0D01* +G01* +X148639600Y-96386800D01* +G75* +G02* +X148399600Y-96146800I0J240000D01* +G01* +G37* +G36* +G01* +X172169000Y-92047000D02* +X171239000Y-92047000D01* +G75* +G02* +X170999000Y-91807000I0J240000D01* +G01* +X170999000Y-91327000D01* +G75* +G02* +X171239000Y-91087000I240000J0D01* +G01* +X172169000Y-91087000D01* +G75* +G02* +X172409000Y-91327000I0J-240000D01* +G01* +X172409000Y-91807000D01* +G75* +G02* +X172169000Y-92047000I-240000J0D01* +G01* +G37* +G36* +G01* +X172169000Y-93947000D02* +X171239000Y-93947000D01* +G75* +G02* +X170999000Y-93707000I0J240000D01* +G01* +X170999000Y-93227000D01* +G75* +G02* +X171239000Y-92987000I240000J0D01* +G01* +X172169000Y-92987000D01* +G75* +G02* +X172409000Y-93227000I0J-240000D01* +G01* +X172409000Y-93707000D01* +G75* +G02* +X172169000Y-93947000I-240000J0D01* +G01* +G37* +G36* +G01* +X134342800Y-88358800D02* +X134342800Y-89288800D01* +G75* +G02* +X134102800Y-89528800I-240000J0D01* +G01* +X133622800Y-89528800D01* +G75* +G02* +X133382800Y-89288800I0J240000D01* +G01* +X133382800Y-88358800D01* +G75* +G02* +X133622800Y-88118800I240000J0D01* +G01* +X134102800Y-88118800D01* +G75* +G02* +X134342800Y-88358800I0J-240000D01* +G01* +G37* +G36* +G01* +X132442800Y-88358800D02* +X132442800Y-89288800D01* +G75* +G02* +X132202800Y-89528800I-240000J0D01* +G01* +X131722800Y-89528800D01* +G75* +G02* +X131482800Y-89288800I0J240000D01* +G01* +X131482800Y-88358800D01* +G75* +G02* +X131722800Y-88118800I240000J0D01* +G01* +X132202800Y-88118800D01* +G75* +G02* +X132442800Y-88358800I0J-240000D01* +G01* +G37* +D18* +X164496400Y-104013000D03* +X164496400Y-96913000D03* +X171596400Y-96913000D03* +X171596400Y-104013000D03* +D19* +X133896100Y-81394300D03* +X133896100Y-86652100D03* +X132143500Y-81394300D03* +X132143500Y-86652100D03* +M02* diff --git a/hw/v1/gerbers/v1-B_SilkS.gbr b/hw/v1/gerbers/v1-B_SilkS.gbr new file mode 100644 index 0000000..2042af1 --- /dev/null +++ b/hw/v1/gerbers/v1-B_SilkS.gbr @@ -0,0 +1,1117 @@ +G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.8-0-10_14)* +G04 #@! TF.CreationDate,2021-03-05T16:46:23-05:00* +G04 #@! TF.ProjectId,v1,76312e6b-6963-4616-945f-706362585858,rev?* +G04 #@! TF.SameCoordinates,Original* +G04 #@! TF.FileFunction,Legend,Bot* +G04 #@! TF.FilePolarity,Positive* +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.8-0-10_14)) date 2021-03-05 16:46:23* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%ADD10C,0.120000*% +%ADD11C,0.150000*% +%ADD12C,0.050000*% +%ADD13C,0.127000*% +%ADD14C,0.112500*% +%ADD15C,0.000100*% +%ADD16C,0.000120*% +G04 APERTURE END LIST* +D10* +X161868800Y-91821000D02* +X161868800Y-95271000D01* +X161868800Y-91821000D02* +X161868800Y-89871000D01* +X156748800Y-91821000D02* +X156748800Y-93771000D01* +X156748800Y-91821000D02* +X156748800Y-89871000D01* +X134308800Y-95956200D02* +X135568800Y-95956200D01* +X141128800Y-95956200D02* +X139868800Y-95956200D01* +X134308800Y-99716200D02* +X134308800Y-95956200D01* +X141128800Y-101966200D02* +X141128800Y-95956200D01* +X169780400Y-89281000D02* +X169780400Y-92881000D01* +X169780400Y-89281000D02* +X169780400Y-87081000D01* +X163010400Y-89281000D02* +X163010400Y-91481000D01* +X163010400Y-89281000D02* +X163010400Y-87081000D01* +X152955400Y-102015600D02* +X152255400Y-102015600D01* +X152955400Y-101315600D02* +X152955400Y-102015600D01* +X149555400Y-97515600D02* +X150155400Y-97515600D01* +X149555400Y-100415600D02* +X149555400Y-97515600D01* +X152755400Y-97515600D02* +X152155400Y-97515600D01* +X152755400Y-100415600D02* +X152755400Y-97515600D01* +X151355400Y-101515600D02* +X150955400Y-101515600D01* +X156767264Y-81243500D02* +X156313136Y-81243500D01* +X156767264Y-82713500D02* +X156313136Y-82713500D01* +X137031400Y-82421464D02* +X137031400Y-81967336D01* +X135561400Y-82421464D02* +X135561400Y-81967336D01* +X146807336Y-98474200D02* +X147261464Y-98474200D01* +X146807336Y-97004200D02* +X147261464Y-97004200D01* +X143073536Y-98465734D02* +X143527664Y-98465734D01* +X143073536Y-96995734D02* +X143527664Y-96995734D01* +X160551800Y-100661736D02* +X160551800Y-101115864D01* +X159081800Y-100661736D02* +X159081800Y-101115864D01* +X170996300Y-83261564D02* +X170996300Y-82807436D01* +X172466300Y-83261564D02* +X172466300Y-82807436D01* +X151283936Y-96442200D02* +X151738064Y-96442200D01* +X151283936Y-94972200D02* +X151738064Y-94972200D01* +X170969000Y-88896564D02* +X170969000Y-88442436D01* +X172439000Y-88896564D02* +X172439000Y-88442436D01* +X132665736Y-91590800D02* +X133119864Y-91590800D01* +X132665736Y-90120800D02* +X133119864Y-90120800D01* +X148544400Y-101352468D02* +X147614400Y-101352468D01* +X145384400Y-101352468D02* +X146314400Y-101352468D01* +X145384400Y-101352468D02* +X145384400Y-99192468D01* +X148544400Y-101352468D02* +X148544400Y-99892468D01* +X144810600Y-101344000D02* +X143880600Y-101344000D01* +X141650600Y-101344000D02* +X142580600Y-101344000D01* +X141650600Y-101344000D02* +X141650600Y-99184000D01* +X144810600Y-101344000D02* +X144810600Y-99884000D01* +X131154100Y-109884700D02* +X154914100Y-109884700D01* +X154914100Y-109884700D02* +X154914100Y-102484700D01* +X154914100Y-102484700D02* +X131154100Y-102484700D01* +X131154100Y-102484700D02* +X131154100Y-109884700D01* +D11* +X134892000Y-90352000D02* +X134892000Y-90352000D01* +X134892000Y-92352000D02* +X134892000Y-90352000D01* +X136892000Y-92352000D02* +X136892000Y-92352000D01* +X134892000Y-92352000D02* +X136892000Y-92352000D01* +X134892000Y-87852000D02* +X134892000Y-87852000D01* +X134892000Y-85852000D02* +X134892000Y-87852000D01* +X136892000Y-85852000D02* +X136892000Y-85852000D01* +X134892000Y-85852000D02* +X136892000Y-85852000D01* +X154392000Y-85852000D02* +X154392000Y-85852000D01* +X156392000Y-85852000D02* +X154392000Y-85852000D01* +X156392000Y-87852000D02* +X156392000Y-87852000D01* +X156392000Y-85852000D02* +X156392000Y-87852000D01* +X156392000Y-90352000D02* +X156392000Y-90352000D01* +X156392000Y-92352000D02* +X156392000Y-90352000D01* +D12* +X154392000Y-92352000D02* +X154392000Y-92352000D01* +D11* +X156392000Y-92352000D02* +X154392000Y-92352000D01* +D10* +X162749600Y-103836600D02* +X162749600Y-101286600D01* +X161049600Y-103836600D02* +X161049600Y-101286600D01* +X162749600Y-103836600D02* +X161049600Y-103836600D01* +X154586000Y-94226748D02* +X154586000Y-94749252D01* +X156056000Y-94226748D02* +X156056000Y-94749252D01* +X159204252Y-98779000D02* +X158681748Y-98779000D01* +X159204252Y-97309000D02* +X158681748Y-97309000D01* +X131957800Y-97411200D02* +X131957800Y-93501200D01* +X131957800Y-93501200D02* +X133827800Y-93501200D01* +X133827800Y-93501200D02* +X133827800Y-97411200D01* +X132227800Y-100304948D02* +X132227800Y-100827452D01* +X133697800Y-100304948D02* +X133697800Y-100827452D01* +X164914252Y-95096000D02* +X164391748Y-95096000D01* +X164914252Y-93626000D02* +X164391748Y-93626000D01* +X161164600Y-99041852D02* +X161164600Y-98519348D01* +X162634600Y-99041852D02* +X162634600Y-98519348D01* +X144584052Y-94921400D02* +X144061548Y-94921400D01* +X144584052Y-96391400D02* +X144061548Y-96391400D01* +X147668348Y-96416800D02* +X148190852Y-96416800D01* +X147668348Y-94946800D02* +X148190852Y-94946800D01* +X170969000Y-92778252D02* +X170969000Y-92255748D01* +X172439000Y-92778252D02* +X172439000Y-92255748D01* +X133174052Y-88088800D02* +X132651548Y-88088800D01* +X133174052Y-89558800D02* +X132651548Y-89558800D01* +X170046400Y-104813000D02* +X166046400Y-104813000D01* +X163696400Y-102463000D02* +X163696400Y-98463000D01* +X166046400Y-96113000D02* +X170046400Y-96113000D01* +X172396400Y-98463000D02* +X172396400Y-102463000D01* +D13* +X132384800Y-82753200D02* +X134289800Y-82753200D01* +X132384800Y-85293200D02* +X132384800Y-82753200D01* +X134289800Y-85293200D02* +X132384800Y-85293200D01* +X134772400Y-81673700D02* +X134772400Y-86372700D01* +X131267200Y-81673700D02* +X134772400Y-81673700D01* +X131267200Y-86372700D02* +X131267200Y-81673700D01* +X134772400Y-86372700D02* +X131267200Y-86372700D01* +D14* +X161175657Y-92184171D02* +X161175657Y-92548457D01* +X161154228Y-92591314D01* +X161132800Y-92612742D01* +X161089942Y-92634171D01* +X161004228Y-92634171D01* +X160961371Y-92612742D01* +X160939942Y-92591314D01* +X160918514Y-92548457D01* +X160918514Y-92184171D01* +X160747085Y-92184171D02* +X160468514Y-92184171D01* +X160618514Y-92355600D01* +X160554228Y-92355600D01* +X160511371Y-92377028D01* +X160489942Y-92398457D01* +X160468514Y-92441314D01* +X160468514Y-92548457D01* +X160489942Y-92591314D01* +X160511371Y-92612742D01* +X160554228Y-92634171D01* +X160682800Y-92634171D01* +X160725657Y-92612742D01* +X160747085Y-92591314D01* +X138061657Y-97619771D02* +X138061657Y-97984057D01* +X138040228Y-98026914D01* +X138018800Y-98048342D01* +X137975942Y-98069771D01* +X137890228Y-98069771D01* +X137847371Y-98048342D01* +X137825942Y-98026914D01* +X137804514Y-97984057D01* +X137804514Y-97619771D01* +X137611657Y-97662628D02* +X137590228Y-97641200D01* +X137547371Y-97619771D01* +X137440228Y-97619771D01* +X137397371Y-97641200D01* +X137375942Y-97662628D01* +X137354514Y-97705485D01* +X137354514Y-97748342D01* +X137375942Y-97812628D01* +X137633085Y-98069771D01* +X137354514Y-98069771D01* +X168638771Y-89885642D02* +X169003057Y-89885642D01* +X169045914Y-89907071D01* +X169067342Y-89928500D01* +X169088771Y-89971357D01* +X169088771Y-90057071D01* +X169067342Y-90099928D01* +X169045914Y-90121357D01* +X169003057Y-90142785D01* +X168638771Y-90142785D01* +X169088771Y-90592785D02* +X169088771Y-90335642D01* +X169088771Y-90464214D02* +X168638771Y-90464214D01* +X168703057Y-90421357D01* +X168745914Y-90378500D01* +X168767342Y-90335642D01* +X151372457Y-99860471D02* +X151522457Y-99646185D01* +X151629600Y-99860471D02* +X151629600Y-99410471D01* +X151458171Y-99410471D01* +X151415314Y-99431900D01* +X151393885Y-99453328D01* +X151372457Y-99496185D01* +X151372457Y-99560471D01* +X151393885Y-99603328D01* +X151415314Y-99624757D01* +X151458171Y-99646185D01* +X151629600Y-99646185D01* +X151243885Y-99410471D02* +X151093885Y-99860471D01* +X150943885Y-99410471D01* +X150558171Y-99860471D02* +X150815314Y-99860471D01* +X150686742Y-99860471D02* +X150686742Y-99410471D01* +X150729600Y-99474757D01* +X150772457Y-99517614D01* +X150815314Y-99539042D01* +X156731071Y-81882000D02* +X156516785Y-81732000D01* +X156731071Y-81624857D02* +X156281071Y-81624857D01* +X156281071Y-81796285D01* +X156302500Y-81839142D01* +X156323928Y-81860571D01* +X156366785Y-81882000D01* +X156431071Y-81882000D01* +X156473928Y-81860571D01* +X156495357Y-81839142D01* +X156516785Y-81796285D01* +X156516785Y-81624857D01* +X156731071Y-82096285D02* +X156731071Y-82182000D01* +X156709642Y-82224857D01* +X156688214Y-82246285D01* +X156623928Y-82289142D01* +X156538214Y-82310571D01* +X156366785Y-82310571D01* +X156323928Y-82289142D01* +X156302500Y-82267714D01* +X156281071Y-82224857D01* +X156281071Y-82139142D01* +X156302500Y-82096285D01* +X156323928Y-82074857D01* +X156366785Y-82053428D01* +X156473928Y-82053428D01* +X156516785Y-82074857D01* +X156538214Y-82096285D01* +X156559642Y-82139142D01* +X156559642Y-82224857D01* +X156538214Y-82267714D01* +X156516785Y-82289142D01* +X156473928Y-82310571D01* +X136346000Y-82363646D02* +X136496000Y-82149360D01* +X136603142Y-82363646D02* +X136603142Y-81913646D01* +X136431714Y-81913646D01* +X136388857Y-81935075D01* +X136367428Y-81956503D01* +X136346000Y-81999360D01* +X136346000Y-82063646D01* +X136367428Y-82106503D01* +X136388857Y-82127932D01* +X136431714Y-82149360D01* +X136603142Y-82149360D01* +X136088857Y-82106503D02* +X136131714Y-82085075D01* +X136153142Y-82063646D01* +X136174571Y-82020789D01* +X136174571Y-81999360D01* +X136153142Y-81956503D01* +X136131714Y-81935075D01* +X136088857Y-81913646D01* +X136003142Y-81913646D01* +X135960285Y-81935075D01* +X135938857Y-81956503D01* +X135917428Y-81999360D01* +X135917428Y-82020789D01* +X135938857Y-82063646D01* +X135960285Y-82085075D01* +X136003142Y-82106503D01* +X136088857Y-82106503D01* +X136131714Y-82127932D01* +X136153142Y-82149360D01* +X136174571Y-82192217D01* +X136174571Y-82277932D01* +X136153142Y-82320789D01* +X136131714Y-82342217D01* +X136088857Y-82363646D01* +X136003142Y-82363646D01* +X135960285Y-82342217D01* +X135938857Y-82320789D01* +X135917428Y-82277932D01* +X135917428Y-82192217D01* +X135938857Y-82149360D01* +X135960285Y-82127932D01* +X136003142Y-82106503D01* +X146780028Y-97839600D02* +X146994314Y-97989600D01* +X146780028Y-98096742D02* +X147230028Y-98096742D01* +X147230028Y-97925314D01* +X147208600Y-97882457D01* +X147187171Y-97861028D01* +X147144314Y-97839600D01* +X147080028Y-97839600D01* +X147037171Y-97861028D01* +X147015742Y-97882457D01* +X146994314Y-97925314D01* +X146994314Y-98096742D01* +X147230028Y-97689600D02* +X147230028Y-97389600D01* +X146780028Y-97582457D01* +X143097028Y-97805734D02* +X143311314Y-97955734D01* +X143097028Y-98062876D02* +X143547028Y-98062876D01* +X143547028Y-97891448D01* +X143525600Y-97848591D01* +X143504171Y-97827162D01* +X143461314Y-97805734D01* +X143397028Y-97805734D01* +X143354171Y-97827162D01* +X143332742Y-97848591D01* +X143311314Y-97891448D01* +X143311314Y-98062876D01* +X143547028Y-97420019D02* +X143547028Y-97505734D01* +X143525600Y-97548591D01* +X143504171Y-97570019D01* +X143439885Y-97612876D01* +X143354171Y-97634305D01* +X143182742Y-97634305D01* +X143139885Y-97612876D01* +X143118457Y-97591448D01* +X143097028Y-97548591D01* +X143097028Y-97462876D01* +X143118457Y-97420019D01* +X143139885Y-97398591D01* +X143182742Y-97377162D01* +X143289885Y-97377162D01* +X143332742Y-97398591D01* +X143354171Y-97420019D01* +X143375600Y-97462876D01* +X143375600Y-97548591D01* +X143354171Y-97591448D01* +X143332742Y-97612876D01* +X143289885Y-97634305D01* +X159917200Y-101092371D02* +X160067200Y-100878085D01* +X160174342Y-101092371D02* +X160174342Y-100642371D01* +X160002914Y-100642371D01* +X159960057Y-100663800D01* +X159938628Y-100685228D01* +X159917200Y-100728085D01* +X159917200Y-100792371D01* +X159938628Y-100835228D01* +X159960057Y-100856657D01* +X160002914Y-100878085D01* +X160174342Y-100878085D01* +X159510057Y-100642371D02* +X159724342Y-100642371D01* +X159745771Y-100856657D01* +X159724342Y-100835228D01* +X159681485Y-100813800D01* +X159574342Y-100813800D01* +X159531485Y-100835228D01* +X159510057Y-100856657D01* +X159488628Y-100899514D01* +X159488628Y-101006657D01* +X159510057Y-101049514D01* +X159531485Y-101070942D01* +X159574342Y-101092371D01* +X159681485Y-101092371D01* +X159724342Y-101070942D01* +X159745771Y-101049514D01* +X171806300Y-83288871D02* +X171956300Y-83074585D01* +X172063442Y-83288871D02* +X172063442Y-82838871D01* +X171892014Y-82838871D01* +X171849157Y-82860300D01* +X171827728Y-82881728D01* +X171806300Y-82924585D01* +X171806300Y-82988871D01* +X171827728Y-83031728D01* +X171849157Y-83053157D01* +X171892014Y-83074585D01* +X172063442Y-83074585D01* +X171420585Y-82988871D02* +X171420585Y-83288871D01* +X171527728Y-82817442D02* +X171634871Y-83138871D01* +X171356300Y-83138871D01* +X151330928Y-95756800D02* +X151545214Y-95906800D01* +X151330928Y-96013942D02* +X151780928Y-96013942D01* +X151780928Y-95842514D01* +X151759500Y-95799657D01* +X151738071Y-95778228D01* +X151695214Y-95756800D01* +X151630928Y-95756800D01* +X151588071Y-95778228D01* +X151566642Y-95799657D01* +X151545214Y-95842514D01* +X151545214Y-96013942D01* +X151780928Y-95606800D02* +X151780928Y-95328228D01* +X151609500Y-95478228D01* +X151609500Y-95413942D01* +X151588071Y-95371085D01* +X151566642Y-95349657D01* +X151523785Y-95328228D01* +X151416642Y-95328228D01* +X151373785Y-95349657D01* +X151352357Y-95371085D01* +X151330928Y-95413942D01* +X151330928Y-95542514D01* +X151352357Y-95585371D01* +X151373785Y-95606800D01* +X171753600Y-88898471D02* +X171903600Y-88684185D01* +X172010742Y-88898471D02* +X172010742Y-88448471D01* +X171839314Y-88448471D01* +X171796457Y-88469900D01* +X171775028Y-88491328D01* +X171753600Y-88534185D01* +X171753600Y-88598471D01* +X171775028Y-88641328D01* +X171796457Y-88662757D01* +X171839314Y-88684185D01* +X172010742Y-88684185D01* +X171582171Y-88491328D02* +X171560742Y-88469900D01* +X171517885Y-88448471D01* +X171410742Y-88448471D01* +X171367885Y-88469900D01* +X171346457Y-88491328D01* +X171325028Y-88534185D01* +X171325028Y-88577042D01* +X171346457Y-88641328D01* +X171603600Y-88898471D01* +X171325028Y-88898471D01* +X133096371Y-90780800D02* +X132882085Y-90630800D01* +X133096371Y-90523657D02* +X132646371Y-90523657D01* +X132646371Y-90695085D01* +X132667800Y-90737942D01* +X132689228Y-90759371D01* +X132732085Y-90780800D01* +X132796371Y-90780800D01* +X132839228Y-90759371D01* +X132860657Y-90737942D01* +X132882085Y-90695085D01* +X132882085Y-90523657D01* +X133096371Y-91209371D02* +X133096371Y-90952228D01* +X133096371Y-91080800D02* +X132646371Y-91080800D01* +X132710657Y-91037942D01* +X132753514Y-90995085D01* +X132774942Y-90952228D01* +X147073257Y-100753296D02* +X147116114Y-100731868D01* +X147158971Y-100689010D01* +X147223257Y-100624725D01* +X147266114Y-100603296D01* +X147308971Y-100603296D01* +X147287542Y-100710439D02* +X147330400Y-100689010D01* +X147373257Y-100646153D01* +X147394685Y-100560439D01* +X147394685Y-100410439D01* +X147373257Y-100324725D01* +X147330400Y-100281868D01* +X147287542Y-100260439D01* +X147201828Y-100260439D01* +X147158971Y-100281868D01* +X147116114Y-100324725D01* +X147094685Y-100410439D01* +X147094685Y-100560439D01* +X147116114Y-100646153D01* +X147158971Y-100689010D01* +X147201828Y-100710439D01* +X147287542Y-100710439D01* +X146923257Y-100303296D02* +X146901828Y-100281868D01* +X146858971Y-100260439D01* +X146751828Y-100260439D01* +X146708971Y-100281868D01* +X146687542Y-100303296D01* +X146666114Y-100346153D01* +X146666114Y-100389010D01* +X146687542Y-100453296D01* +X146944685Y-100710439D01* +X146666114Y-100710439D01* +X143222657Y-100763628D02* +X143265514Y-100742200D01* +X143308371Y-100699342D01* +X143372657Y-100635057D01* +X143415514Y-100613628D01* +X143458371Y-100613628D01* +X143436942Y-100720771D02* +X143479800Y-100699342D01* +X143522657Y-100656485D01* +X143544085Y-100570771D01* +X143544085Y-100420771D01* +X143522657Y-100335057D01* +X143479800Y-100292200D01* +X143436942Y-100270771D01* +X143351228Y-100270771D01* +X143308371Y-100292200D01* +X143265514Y-100335057D01* +X143244085Y-100420771D01* +X143244085Y-100570771D01* +X143265514Y-100656485D01* +X143308371Y-100699342D01* +X143351228Y-100720771D01* +X143436942Y-100720771D01* +X142815514Y-100720771D02* +X143072657Y-100720771D01* +X142944085Y-100720771D02* +X142944085Y-100270771D01* +X142986942Y-100335057D01* +X143029800Y-100377914D01* +X143072657Y-100399342D01* +X132585600Y-108897371D02* +X132585600Y-109218800D01* +X132607028Y-109283085D01* +X132649885Y-109325942D01* +X132714171Y-109347371D01* +X132757028Y-109347371D01* +X132392742Y-108940228D02* +X132371314Y-108918800D01* +X132328457Y-108897371D01* +X132221314Y-108897371D01* +X132178457Y-108918800D01* +X132157028Y-108940228D01* +X132135600Y-108983085D01* +X132135600Y-109025942D01* +X132157028Y-109090228D01* +X132414171Y-109347371D01* +X132135600Y-109347371D01* +X152448400Y-89440971D02* +X152448400Y-89762400D01* +X152469828Y-89826685D01* +X152512685Y-89869542D01* +X152576971Y-89890971D01* +X152619828Y-89890971D01* +X151998400Y-89890971D02* +X152255542Y-89890971D01* +X152126971Y-89890971D02* +X152126971Y-89440971D01* +X152169828Y-89505257D01* +X152212685Y-89548114D01* +X152255542Y-89569542D01* +X162231742Y-102565571D02* +X162231742Y-102115571D01* +X162124600Y-102115571D01* +X162060314Y-102137000D01* +X162017457Y-102179857D01* +X161996028Y-102222714D01* +X161974600Y-102308428D01* +X161974600Y-102372714D01* +X161996028Y-102458428D01* +X162017457Y-102501285D01* +X162060314Y-102544142D01* +X162124600Y-102565571D01* +X162231742Y-102565571D01* +X161546028Y-102565571D02* +X161803171Y-102565571D01* +X161674600Y-102565571D02* +X161674600Y-102115571D01* +X161717457Y-102179857D01* +X161760314Y-102222714D01* +X161803171Y-102244142D01* +X155610285Y-94597914D02* +X155631714Y-94619342D01* +X155696000Y-94640771D01* +X155738857Y-94640771D01* +X155803142Y-94619342D01* +X155846000Y-94576485D01* +X155867428Y-94533628D01* +X155888857Y-94447914D01* +X155888857Y-94383628D01* +X155867428Y-94297914D01* +X155846000Y-94255057D01* +X155803142Y-94212200D01* +X155738857Y-94190771D01* +X155696000Y-94190771D01* +X155631714Y-94212200D01* +X155610285Y-94233628D01* +X155181714Y-94640771D02* +X155438857Y-94640771D01* +X155310285Y-94640771D02* +X155310285Y-94190771D01* +X155353142Y-94255057D01* +X155396000Y-94297914D01* +X155438857Y-94319342D01* +X154903142Y-94190771D02* +X154860285Y-94190771D01* +X154817428Y-94212200D01* +X154796000Y-94233628D01* +X154774571Y-94276485D01* +X154753142Y-94362200D01* +X154753142Y-94469342D01* +X154774571Y-94555057D01* +X154796000Y-94597914D01* +X154817428Y-94619342D01* +X154860285Y-94640771D01* +X154903142Y-94640771D01* +X154946000Y-94619342D01* +X154967428Y-94597914D01* +X154988857Y-94555057D01* +X155010285Y-94469342D01* +X155010285Y-94362200D01* +X154988857Y-94276485D01* +X154967428Y-94233628D01* +X154946000Y-94212200D01* +X154903142Y-94190771D01* +X159068114Y-97943600D02* +X159089542Y-97922171D01* +X159110971Y-97857885D01* +X159110971Y-97815028D01* +X159089542Y-97750742D01* +X159046685Y-97707885D01* +X159003828Y-97686457D01* +X158918114Y-97665028D01* +X158853828Y-97665028D01* +X158768114Y-97686457D01* +X158725257Y-97707885D01* +X158682400Y-97750742D01* +X158660971Y-97815028D01* +X158660971Y-97857885D01* +X158682400Y-97922171D01* +X158703828Y-97943600D01* +X159110971Y-98157885D02* +X159110971Y-98243600D01* +X159089542Y-98286457D01* +X159068114Y-98307885D01* +X159003828Y-98350742D01* +X158918114Y-98372171D01* +X158746685Y-98372171D01* +X158703828Y-98350742D01* +X158682400Y-98329314D01* +X158660971Y-98286457D01* +X158660971Y-98200742D01* +X158682400Y-98157885D01* +X158703828Y-98136457D01* +X158746685Y-98115028D01* +X158853828Y-98115028D01* +X158896685Y-98136457D01* +X158918114Y-98157885D01* +X158939542Y-98200742D01* +X158939542Y-98286457D01* +X158918114Y-98329314D01* +X158896685Y-98350742D01* +X158853828Y-98372171D01* +X132993200Y-95950314D02* +X133014628Y-95971742D01* +X133078914Y-95993171D01* +X133121771Y-95993171D01* +X133186057Y-95971742D01* +X133228914Y-95928885D01* +X133250342Y-95886028D01* +X133271771Y-95800314D01* +X133271771Y-95736028D01* +X133250342Y-95650314D01* +X133228914Y-95607457D01* +X133186057Y-95564600D01* +X133121771Y-95543171D01* +X133078914Y-95543171D01* +X133014628Y-95564600D01* +X132993200Y-95586028D01* +X132736057Y-95736028D02* +X132778914Y-95714600D01* +X132800342Y-95693171D01* +X132821771Y-95650314D01* +X132821771Y-95628885D01* +X132800342Y-95586028D01* +X132778914Y-95564600D01* +X132736057Y-95543171D01* +X132650342Y-95543171D01* +X132607485Y-95564600D01* +X132586057Y-95586028D01* +X132564628Y-95628885D01* +X132564628Y-95650314D01* +X132586057Y-95693171D01* +X132607485Y-95714600D01* +X132650342Y-95736028D01* +X132736057Y-95736028D01* +X132778914Y-95757457D01* +X132800342Y-95778885D01* +X132821771Y-95821742D01* +X132821771Y-95907457D01* +X132800342Y-95950314D01* +X132778914Y-95971742D01* +X132736057Y-95993171D01* +X132650342Y-95993171D01* +X132607485Y-95971742D01* +X132586057Y-95950314D01* +X132564628Y-95907457D01* +X132564628Y-95821742D01* +X132586057Y-95778885D01* +X132607485Y-95757457D01* +X132650342Y-95736028D01* +X133037800Y-100726914D02* +X133059228Y-100748342D01* +X133123514Y-100769771D01* +X133166371Y-100769771D01* +X133230657Y-100748342D01* +X133273514Y-100705485D01* +X133294942Y-100662628D01* +X133316371Y-100576914D01* +X133316371Y-100512628D01* +X133294942Y-100426914D01* +X133273514Y-100384057D01* +X133230657Y-100341200D01* +X133166371Y-100319771D01* +X133123514Y-100319771D01* +X133059228Y-100341200D01* +X133037800Y-100362628D01* +X132887800Y-100319771D02* +X132587800Y-100319771D01* +X132780657Y-100769771D01* +X164788314Y-94260600D02* +X164809742Y-94239171D01* +X164831171Y-94174885D01* +X164831171Y-94132028D01* +X164809742Y-94067742D01* +X164766885Y-94024885D01* +X164724028Y-94003457D01* +X164638314Y-93982028D01* +X164574028Y-93982028D01* +X164488314Y-94003457D01* +X164445457Y-94024885D01* +X164402600Y-94067742D01* +X164381171Y-94132028D01* +X164381171Y-94174885D01* +X164402600Y-94239171D01* +X164424028Y-94260600D01* +X164381171Y-94646314D02* +X164381171Y-94560600D01* +X164402600Y-94517742D01* +X164424028Y-94496314D01* +X164488314Y-94453457D01* +X164574028Y-94432028D01* +X164745457Y-94432028D01* +X164788314Y-94453457D01* +X164809742Y-94474885D01* +X164831171Y-94517742D01* +X164831171Y-94603457D01* +X164809742Y-94646314D01* +X164788314Y-94667742D01* +X164745457Y-94689171D01* +X164638314Y-94689171D01* +X164595457Y-94667742D01* +X164574028Y-94646314D01* +X164552600Y-94603457D01* +X164552600Y-94517742D01* +X164574028Y-94474885D01* +X164595457Y-94453457D01* +X164638314Y-94432028D01* +X162000000Y-98890514D02* +X162021428Y-98911942D01* +X162085714Y-98933371D01* +X162128571Y-98933371D01* +X162192857Y-98911942D01* +X162235714Y-98869085D01* +X162257142Y-98826228D01* +X162278571Y-98740514D01* +X162278571Y-98676228D01* +X162257142Y-98590514D01* +X162235714Y-98547657D01* +X162192857Y-98504800D01* +X162128571Y-98483371D01* +X162085714Y-98483371D01* +X162021428Y-98504800D01* +X162000000Y-98526228D01* +X161592857Y-98483371D02* +X161807142Y-98483371D01* +X161828571Y-98697657D01* +X161807142Y-98676228D01* +X161764285Y-98654800D01* +X161657142Y-98654800D01* +X161614285Y-98676228D01* +X161592857Y-98697657D01* +X161571428Y-98740514D01* +X161571428Y-98847657D01* +X161592857Y-98890514D01* +X161614285Y-98911942D01* +X161657142Y-98933371D01* +X161764285Y-98933371D01* +X161807142Y-98911942D01* +X161828571Y-98890514D01* +X144493714Y-95606800D02* +X144515142Y-95585371D01* +X144536571Y-95521085D01* +X144536571Y-95478228D01* +X144515142Y-95413942D01* +X144472285Y-95371085D01* +X144429428Y-95349657D01* +X144343714Y-95328228D01* +X144279428Y-95328228D01* +X144193714Y-95349657D01* +X144150857Y-95371085D01* +X144108000Y-95413942D01* +X144086571Y-95478228D01* +X144086571Y-95521085D01* +X144108000Y-95585371D01* +X144129428Y-95606800D01* +X144236571Y-95992514D02* +X144536571Y-95992514D01* +X144065142Y-95885371D02* +X144386571Y-95778228D01* +X144386571Y-96056800D01* +X148075114Y-95606800D02* +X148096542Y-95585371D01* +X148117971Y-95521085D01* +X148117971Y-95478228D01* +X148096542Y-95413942D01* +X148053685Y-95371085D01* +X148010828Y-95349657D01* +X147925114Y-95328228D01* +X147860828Y-95328228D01* +X147775114Y-95349657D01* +X147732257Y-95371085D01* +X147689400Y-95413942D01* +X147667971Y-95478228D01* +X147667971Y-95521085D01* +X147689400Y-95585371D01* +X147710828Y-95606800D01* +X147667971Y-95756800D02* +X147667971Y-96035371D01* +X147839400Y-95885371D01* +X147839400Y-95949657D01* +X147860828Y-95992514D01* +X147882257Y-96013942D01* +X147925114Y-96035371D01* +X148032257Y-96035371D01* +X148075114Y-96013942D01* +X148096542Y-95992514D01* +X148117971Y-95949657D01* +X148117971Y-95821085D01* +X148096542Y-95778228D01* +X148075114Y-95756800D01* +X171779000Y-92677714D02* +X171800428Y-92699142D01* +X171864714Y-92720571D01* +X171907571Y-92720571D01* +X171971857Y-92699142D01* +X172014714Y-92656285D01* +X172036142Y-92613428D01* +X172057571Y-92527714D01* +X172057571Y-92463428D01* +X172036142Y-92377714D01* +X172014714Y-92334857D01* +X171971857Y-92292000D01* +X171907571Y-92270571D01* +X171864714Y-92270571D01* +X171800428Y-92292000D01* +X171779000Y-92313428D01* +X171607571Y-92313428D02* +X171586142Y-92292000D01* +X171543285Y-92270571D01* +X171436142Y-92270571D01* +X171393285Y-92292000D01* +X171371857Y-92313428D01* +X171350428Y-92356285D01* +X171350428Y-92399142D01* +X171371857Y-92463428D01* +X171629000Y-92720571D01* +X171350428Y-92720571D01* +X133083714Y-88748800D02* +X133105142Y-88727371D01* +X133126571Y-88663085D01* +X133126571Y-88620228D01* +X133105142Y-88555942D01* +X133062285Y-88513085D01* +X133019428Y-88491657D01* +X132933714Y-88470228D01* +X132869428Y-88470228D01* +X132783714Y-88491657D01* +X132740857Y-88513085D01* +X132698000Y-88555942D01* +X132676571Y-88620228D01* +X132676571Y-88663085D01* +X132698000Y-88727371D01* +X132719428Y-88748800D01* +X133126571Y-89177371D02* +X133126571Y-88920228D01* +X133126571Y-89048800D02* +X132676571Y-89048800D01* +X132740857Y-89005942D01* +X132783714Y-88963085D01* +X132805142Y-88920228D01* +X168642828Y-100233657D02* +X168578542Y-100255085D01* +X168557114Y-100276514D01* +X168535685Y-100319371D01* +X168535685Y-100383657D01* +X168557114Y-100426514D01* +X168578542Y-100447942D01* +X168621400Y-100469371D01* +X168792828Y-100469371D01* +X168792828Y-100019371D01* +X168642828Y-100019371D01* +X168599971Y-100040800D01* +X168578542Y-100062228D01* +X168557114Y-100105085D01* +X168557114Y-100147942D01* +X168578542Y-100190800D01* +X168599971Y-100212228D01* +X168642828Y-100233657D01* +X168792828Y-100233657D01* +X168385685Y-100019371D02* +X168085685Y-100019371D01* +X168385685Y-100469371D01* +X168085685Y-100469371D01* +X167678542Y-100469371D02* +X167935685Y-100469371D01* +X167807114Y-100469371D02* +X167807114Y-100019371D01* +X167849971Y-100083657D01* +X167892828Y-100126514D01* +X167935685Y-100147942D01* +D11* +X166474971Y-104093952D02* +X166474971Y-103332047D01* +X166094019Y-103713000D02* +X166855923Y-103713000D01* +D15* +X133019961Y-84022666D02* +X133019980Y-84022723D01* +X133019980Y-84022819D01* +X133019961Y-84022857D01* +X133019942Y-84022876D01* +X133019904Y-84022895D01* +X133019866Y-84022895D01* +X133019828Y-84022876D01* +X133019809Y-84022857D01* +X133019790Y-84022819D01* +X133019771Y-84022742D01* +X133019752Y-84022704D01* +X133019733Y-84022685D01* +X133019695Y-84022666D01* +X133019657Y-84022666D01* +X133019619Y-84022685D01* +X133019600Y-84022704D01* +X133019580Y-84022742D01* +X133019580Y-84022838D01* +X133019600Y-84022895D01* +X133019580Y-84023028D02* +X133019980Y-84023123D01* +X133019695Y-84023200D01* +X133019980Y-84023276D01* +X133019580Y-84023371D01* +X133019980Y-84023733D02* +X133019980Y-84023504D01* +X133019980Y-84023619D02* +X133019580Y-84023619D01* +X133019638Y-84023580D01* +X133019676Y-84023542D01* +X133019695Y-84023504D01* +D16* +D15* +X133019980Y-84022619D02* +X133019790Y-84022485D01* +X133019980Y-84022390D02* +X133019580Y-84022390D01* +X133019580Y-84022542D01* +X133019600Y-84022580D01* +X133019619Y-84022600D01* +X133019657Y-84022619D01* +X133019714Y-84022619D01* +X133019752Y-84022600D01* +X133019771Y-84022580D01* +X133019790Y-84022542D01* +X133019790Y-84022390D01* +X133019771Y-84022790D02* +X133019771Y-84022923D01* +X133019980Y-84022980D02* +X133019980Y-84022790D01* +X133019580Y-84022790D01* +X133019580Y-84022980D01* +X133019961Y-84023133D02* +X133019980Y-84023190D01* +X133019980Y-84023285D01* +X133019961Y-84023323D01* +X133019942Y-84023342D01* +X133019904Y-84023361D01* +X133019866Y-84023361D01* +X133019828Y-84023342D01* +X133019809Y-84023323D01* +X133019790Y-84023285D01* +X133019771Y-84023209D01* +X133019752Y-84023171D01* +X133019733Y-84023152D01* +X133019695Y-84023133D01* +X133019657Y-84023133D01* +X133019619Y-84023152D01* +X133019600Y-84023171D01* +X133019580Y-84023209D01* +X133019580Y-84023304D01* +X133019600Y-84023361D01* +X133019771Y-84023533D02* +X133019771Y-84023666D01* +X133019980Y-84023723D02* +X133019980Y-84023533D01* +X133019580Y-84023533D01* +X133019580Y-84023723D01* +X133019580Y-84023838D02* +X133019580Y-84024066D01* +X133019980Y-84023952D02* +X133019580Y-84023952D01* +D16* +M02* diff --git a/hw/v1/gerbers/v1-Edge_Cuts.gbr b/hw/v1/gerbers/v1-Edge_Cuts.gbr new file mode 100644 index 0000000..c7d3b78 --- /dev/null +++ b/hw/v1/gerbers/v1-Edge_Cuts.gbr @@ -0,0 +1,26 @@ +G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.8-0-10_14)* +G04 #@! TF.CreationDate,2021-03-05T16:46:23-05:00* +G04 #@! TF.ProjectId,v1,76312e6b-6963-4616-945f-706362585858,rev?* +G04 #@! TF.SameCoordinates,Original* +G04 #@! TF.FileFunction,Profile,NP* +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.8-0-10_14)) date 2021-03-05 16:46:23* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +G04 #@! TA.AperFunction,Profile* +%ADD10C,0.050000*% +G04 #@! TD* +G04 APERTURE END LIST* +D10* +X173863000Y-110000000D02* +X130936000Y-110000000D01* +X130936000Y-80100000D02* +X173863000Y-80100000D01* +X130936000Y-80100000D02* +X130936000Y-110000000D01* +X173863000Y-110000000D02* +X173863000Y-80100000D01* +M02* diff --git a/hw/v1/gerbers/v1-F_Cu.gbr b/hw/v1/gerbers/v1-F_Cu.gbr new file mode 100644 index 0000000..9b73842 --- /dev/null +++ b/hw/v1/gerbers/v1-F_Cu.gbr @@ -0,0 +1,2667 @@ +G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.8-0-10_14)* +G04 #@! TF.CreationDate,2021-03-05T16:46:23-05:00* +G04 #@! TF.ProjectId,v1,76312e6b-6963-4616-945f-706362585858,rev?* +G04 #@! TF.SameCoordinates,Original* +G04 #@! TF.FileFunction,Copper,L1,Top* +G04 #@! TF.FilePolarity,Positive* +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.8-0-10_14)) date 2021-03-05 16:46:23* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +G04 #@! TA.AperFunction,SMDPad,CuDef* +%ADD10R,1.500000X2.800000*% +G04 #@! TD* +G04 #@! TA.AperFunction,SMDPad,CuDef* +%ADD11R,1.400000X1.600000*% +G04 #@! TD* +G04 #@! TA.AperFunction,ComponentPad* +%ADD12O,1.700000X1.700000*% +G04 #@! TD* +G04 #@! TA.AperFunction,ComponentPad* +%ADD13R,1.700000X1.700000*% +G04 #@! TD* +G04 #@! TA.AperFunction,ComponentPad* +%ADD14O,3.160000X4.100000*% +G04 #@! TD* +G04 #@! TA.AperFunction,ComponentPad* +%ADD15C,0.762000*% +G04 #@! TD* +G04 #@! TA.AperFunction,ViaPad* +%ADD16C,0.508000*% +G04 #@! TD* +G04 #@! TA.AperFunction,Conductor* +%ADD17C,0.304000*% +G04 #@! TD* +G04 #@! TA.AperFunction,Conductor* +%ADD18C,0.152400*% +G04 #@! TD* +G04 #@! TA.AperFunction,Conductor* +%ADD19C,0.254000*% +G04 #@! TD* +G04 #@! TA.AperFunction,Conductor* +%ADD20C,0.100000*% +G04 #@! TD* +G04 APERTURE END LIST* +D10* +X159258000Y-108204000D03* +X161798000Y-108204000D03* +X164338000Y-108204000D03* +X166878000Y-108204000D03* +X169418000Y-108204000D03* +D11* +X170595400Y-95747400D03* +X170595400Y-91247400D03* +X162195400Y-91247400D03* +X162195400Y-95747400D03* +D12* +X163499800Y-81978500D03* +X166039800Y-81978500D03* +D13* +X168579800Y-81978500D03* +G04 #@! TA.AperFunction,ComponentPad* +G36* +G01* +X131554100Y-107444700D02* +X131554100Y-104924700D01* +G75* +G02* +X132344100Y-104134700I790000J0D01* +G01* +X133924100Y-104134700D01* +G75* +G02* +X134714100Y-104924700I0J-790000D01* +G01* +X134714100Y-107444700D01* +G75* +G02* +X133924100Y-108234700I-790000J0D01* +G01* +X132344100Y-108234700D01* +G75* +G02* +X131554100Y-107444700I0J790000D01* +G01* +G37* +G04 #@! TD.AperFunction* +D14* +X137094100Y-106184700D03* +X141054100Y-106184700D03* +X144934100Y-106184700D03* +X148974100Y-106184700D03* +X152934100Y-106184700D03* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X135929075Y-81543750D02* +X135929075Y-82456250D01* +G75* +G02* +X135685325Y-82700000I-243750J0D01* +G01* +X135197825Y-82700000D01* +G75* +G02* +X134954075Y-82456250I0J243750D01* +G01* +X134954075Y-81543750D01* +G75* +G02* +X135197825Y-81300000I243750J0D01* +G01* +X135685325Y-81300000D01* +G75* +G02* +X135929075Y-81543750I0J-243750D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X134054075Y-81543750D02* +X134054075Y-82456250D01* +G75* +G02* +X133810325Y-82700000I-243750J0D01* +G01* +X133322825Y-82700000D01* +G75* +G02* +X133079075Y-82456250I0J243750D01* +G01* +X133079075Y-81543750D01* +G75* +G02* +X133322825Y-81300000I243750J0D01* +G01* +X133810325Y-81300000D01* +G75* +G02* +X134054075Y-81543750I0J-243750D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X157945200Y-81522250D02* +X157945200Y-82434750D01* +G75* +G02* +X157701450Y-82678500I-243750J0D01* +G01* +X157213950Y-82678500D01* +G75* +G02* +X156970200Y-82434750I0J243750D01* +G01* +X156970200Y-81522250D01* +G75* +G02* +X157213950Y-81278500I243750J0D01* +G01* +X157701450Y-81278500D01* +G75* +G02* +X157945200Y-81522250I0J-243750D01* +G01* +G37* +G04 #@! TD.AperFunction* +G04 #@! TA.AperFunction,SMDPad,CuDef* +G36* +G01* +X156070200Y-81522250D02* +X156070200Y-82434750D01* +G75* +G02* +X155826450Y-82678500I-243750J0D01* +G01* +X155338950Y-82678500D01* +G75* +G02* +X155095200Y-82434750I0J243750D01* +G01* +X155095200Y-81522250D01* +G75* +G02* +X155338950Y-81278500I243750J0D01* +G01* +X155826450Y-81278500D01* +G75* +G02* +X156070200Y-81522250I0J-243750D01* +G01* +G37* +G04 #@! TD.AperFunction* +D15* +X131658360Y-84038440D03* +X134411720Y-84040980D03* +D16* +X134874000Y-86614000D03* +X134874000Y-88773000D03* +X137668000Y-83058000D03* +X132715000Y-98552000D03* +X139954000Y-102616000D03* +X143383000Y-99568000D03* +X155321000Y-96520000D03* +X162195400Y-95747400D03* +X171704000Y-84963000D03* +X148844000Y-89154000D03* +X147066000Y-99568000D03* +X164338000Y-108204000D03* +X161798000Y-106172000D03* +X164496400Y-96913000D03* +X170180000Y-94361000D03* +X172085000Y-94615000D03* +X137718800Y-94716200D03* +X159258000Y-108204000D03* +X153924000Y-100203000D03* +X169164000Y-100965000D03* +X164496400Y-104013000D03* +X167386000Y-106172000D03* +X163957000Y-87630000D03* +X170595400Y-91247400D03* +X159004000Y-86487000D03* +X154178000Y-81915000D03* +X137668000Y-81280000D03* +X145923000Y-89408000D03* +X165608000Y-89789000D03* +X146409400Y-90043000D03* +X157734000Y-91313000D03* +X166183313Y-88840313D03* +X166751000Y-101981000D03* +X164719000Y-87757000D03* +D17* +X170595400Y-94776400D02* +X170180000Y-94361000D01* +X170595400Y-95747400D02* +X170595400Y-94776400D01* +X133566575Y-90563975D02* +X137718800Y-94716200D01* +X133566575Y-82000000D02* +X133566575Y-90563975D01* +X159258000Y-105537000D02* +X159258000Y-108204000D01* +X153924000Y-100203000D02* +X159258000Y-105537000D01* +X164782899Y-80721599D02* +X166039800Y-81978500D01* +X134844976Y-80721599D02* +X164782899Y-80721599D01* +X133566575Y-82000000D02* +X134844976Y-80721599D01* +D18* +X164496400Y-103521350D02* +X164496400Y-104013000D01* +X167052750Y-100965000D02* +X164496400Y-103521350D01* +X169164000Y-100965000D02* +X167052750Y-100965000D01* +X166878000Y-106680000D02* +X166878000Y-108204000D01* +X167386000Y-106172000D02* +X166878000Y-106680000D01* +X162195400Y-91247400D02* +X170595400Y-91247400D01* +X167705712Y-88357712D02* +X170595400Y-91247400D01* +X163957000Y-87989210D02* +X164325502Y-88357712D01* +X164325502Y-88357712D02* +X167705712Y-88357712D01* +X163957000Y-87630000D02* +X163957000Y-87989210D01* +X157457700Y-84940700D02* +X159004000Y-86487000D01* +X157457700Y-81978500D02* +X157457700Y-84940700D01* +X154241500Y-81978500D02* +X154178000Y-81915000D01* +X155582700Y-81978500D02* +X154241500Y-81978500D01* +X136948000Y-82000000D02* +X135441575Y-82000000D01* +X137668000Y-81280000D02* +X136948000Y-82000000D01* +X146869650Y-89789000D02* +X165608000Y-89789000D01* +X146488650Y-89408000D02* +X146869650Y-89789000D01* +X145923000Y-89408000D02* +X146488650Y-89408000D01* +X147679400Y-91313000D02* +X157734000Y-91313000D01* +X146409400Y-90043000D02* +X147679400Y-91313000D01* +X161266799Y-107672799D02* +X161798000Y-108204000D01* +X161266799Y-90264519D02* +X161266799Y-107672799D01* +X161312519Y-90218799D02* +X161266799Y-90264519D01* +X163078281Y-90218799D02* +X161312519Y-90218799D01* +X163131083Y-90271601D02* +X163078281Y-90218799D01* +X165839649Y-90271601D02* +X163131083Y-90271601D01* +X166183313Y-89927937D02* +X165839649Y-90271601D01* +X166183313Y-88840313D02* +X166183313Y-89927937D01* +X169418000Y-104648000D02* +X169418000Y-108204000D01* +X166751000Y-101981000D02* +X169418000Y-104648000D01* +X168579800Y-83896200D02* +X168579800Y-81978500D01* +X164719000Y-87757000D02* +X168579800Y-83896200D01* +D19* +X133887993Y-80924807D02* +X133810325Y-80917157D01* +X133322825Y-80917157D01* +X133200583Y-80929197D01* +X133083038Y-80964854D01* +X132974709Y-81022757D01* +X132879757Y-81100682D01* +X132801832Y-81195634D01* +X132743929Y-81303963D01* +X132708272Y-81421508D01* +X132696232Y-81543750D01* +X132696232Y-82456250D01* +X132708272Y-82578492D01* +X132743929Y-82696037D01* +X132801832Y-82804366D01* +X132879757Y-82899318D01* +X132974709Y-82977243D01* +X133033575Y-83008708D01* +X133033576Y-90537790D01* +X133030997Y-90563975D01* +X133041288Y-90668461D01* +X133060263Y-90731012D01* +X133071766Y-90768932D01* +X133121259Y-90861526D01* +X133187865Y-90942686D01* +X133208197Y-90959372D01* +X137097763Y-94848939D01* +X137108203Y-94901423D01* +X137156071Y-95016985D01* +X137225564Y-95120989D01* +X137314011Y-95209436D01* +X137418015Y-95278929D01* +X137533577Y-95326797D01* +X137656258Y-95351200D01* +X137781342Y-95351200D01* +X137904023Y-95326797D01* +X138019585Y-95278929D01* +X138123589Y-95209436D01* +X138212036Y-95120989D01* +X138281529Y-95016985D01* +X138329397Y-94901423D01* +X138353800Y-94778742D01* +X138353800Y-94653658D01* +X138329397Y-94530977D01* +X138281529Y-94415415D01* +X138212036Y-94311411D01* +X138123589Y-94222964D01* +X138019585Y-94153471D01* +X137904023Y-94105603D01* +X137851539Y-94095163D01* +X134099575Y-90343200D01* +X134099575Y-84736468D01* +X134189453Y-84773697D01* +X134336670Y-84802980D01* +X134486770Y-84802980D01* +X134633987Y-84773697D01* +X134772662Y-84716256D01* +X134897467Y-84632864D01* +X135003604Y-84526727D01* +X135086996Y-84401922D01* +X135144437Y-84263247D01* +X135173720Y-84116030D01* +X135173720Y-83965930D01* +X135144437Y-83818713D01* +X135086996Y-83680038D01* +X135003604Y-83555233D01* +X134897467Y-83449096D01* +X134772662Y-83365704D01* +X134633987Y-83308263D01* +X134486770Y-83278980D01* +X134336670Y-83278980D01* +X134189453Y-83308263D01* +X134099575Y-83345492D01* +X134099575Y-83008708D01* +X134158441Y-82977243D01* +X134253393Y-82899318D01* +X134331318Y-82804366D01* +X134389221Y-82696037D01* +X134424878Y-82578492D01* +X134436918Y-82456250D01* +X134436918Y-81883432D01* +X134571232Y-81749118D01* +X134571232Y-82456250D01* +X134583272Y-82578492D01* +X134618929Y-82696037D01* +X134676832Y-82804366D01* +X134754757Y-82899318D01* +X134849709Y-82977243D01* +X134958038Y-83035146D01* +X135075583Y-83070803D01* +X135197825Y-83082843D01* +X135685325Y-83082843D01* +X135807567Y-83070803D01* +X135925112Y-83035146D01* +X136033441Y-82977243D01* +X136128393Y-82899318D01* +X136206318Y-82804366D01* +X136264221Y-82696037D01* +X136299878Y-82578492D01* +X136311824Y-82457200D01* +X136925550Y-82457200D01* +X136948000Y-82459411D01* +X136970450Y-82457200D01* +X136970460Y-82457200D01* +X137037627Y-82450585D01* +X137123809Y-82424441D01* +X137203236Y-82381987D01* +X137272853Y-82324853D01* +X137287174Y-82307403D01* +X137679578Y-81915000D01* +X137730542Y-81915000D01* +X137853223Y-81890597D01* +X137968785Y-81842729D01* +X138072789Y-81773236D01* +X138161236Y-81684789D01* +X138230729Y-81580785D01* +X138278597Y-81465223D01* +X138303000Y-81342542D01* +X138303000Y-81254599D01* +X154774948Y-81254599D01* +X154760054Y-81282463D01* +X154724397Y-81400008D01* +X154712451Y-81521300D01* +X154678645Y-81521300D01* +X154671236Y-81510211D01* +X154582789Y-81421764D01* +X154478785Y-81352271D01* +X154363223Y-81304403D01* +X154240542Y-81280000D01* +X154115458Y-81280000D01* +X153992777Y-81304403D01* +X153877215Y-81352271D01* +X153773211Y-81421764D01* +X153684764Y-81510211D01* +X153615271Y-81614215D01* +X153567403Y-81729777D01* +X153543000Y-81852458D01* +X153543000Y-81977542D01* +X153567403Y-82100223D01* +X153615271Y-82215785D01* +X153684764Y-82319789D01* +X153773211Y-82408236D01* +X153877215Y-82477729D01* +X153992777Y-82525597D01* +X154115458Y-82550000D01* +X154240542Y-82550000D01* +X154363223Y-82525597D01* +X154478785Y-82477729D01* +X154541686Y-82435700D01* +X154712451Y-82435700D01* +X154724397Y-82556992D01* +X154760054Y-82674537D01* +X154817957Y-82782866D01* +X154895882Y-82877818D01* +X154990834Y-82955743D01* +X155099163Y-83013646D01* +X155216708Y-83049303D01* +X155338950Y-83061343D01* +X155826450Y-83061343D01* +X155948692Y-83049303D01* +X156066237Y-83013646D01* +X156174566Y-82955743D01* +X156269518Y-82877818D01* +X156347443Y-82782866D01* +X156405346Y-82674537D01* +X156441003Y-82556992D01* +X156453043Y-82434750D01* +X156453043Y-81522250D01* +X156441003Y-81400008D01* +X156405346Y-81282463D01* +X156390452Y-81254599D01* +X156649948Y-81254599D01* +X156635054Y-81282463D01* +X156599397Y-81400008D01* +X156587357Y-81522250D01* +X156587357Y-82434750D01* +X156599397Y-82556992D01* +X156635054Y-82674537D01* +X156692957Y-82782866D01* +X156770882Y-82877818D01* +X156865834Y-82955743D01* +X156974163Y-83013646D01* +X157000500Y-83021635D01* +X157000501Y-84918240D01* +X156998289Y-84940700D01* +X157000501Y-84963160D01* +X157007116Y-85030327D01* +X157033260Y-85116509D01* +X157075714Y-85195936D01* +X157132848Y-85265553D01* +X157150293Y-85279870D01* +X158369000Y-86498578D01* +X158369000Y-86549542D01* +X158393403Y-86672223D01* +X158441271Y-86787785D01* +X158510764Y-86891789D01* +X158599211Y-86980236D01* +X158703215Y-87049729D01* +X158818777Y-87097597D01* +X158941458Y-87122000D01* +X159066542Y-87122000D01* +X159189223Y-87097597D01* +X159304785Y-87049729D01* +X159408789Y-86980236D01* +X159497236Y-86891789D01* +X159566729Y-86787785D01* +X159614597Y-86672223D01* +X159639000Y-86549542D01* +X159639000Y-86424458D01* +X159614597Y-86301777D01* +X159566729Y-86186215D01* +X159497236Y-86082211D01* +X159408789Y-85993764D01* +X159304785Y-85924271D01* +X159189223Y-85876403D01* +X159066542Y-85852000D01* +X159015578Y-85852000D01* +X157914900Y-84751323D01* +X157914900Y-83021635D01* +X157941237Y-83013646D01* +X158049566Y-82955743D01* +X158144518Y-82877818D01* +X158222443Y-82782866D01* +X158280346Y-82674537D01* +X158316003Y-82556992D01* +X158328043Y-82434750D01* +X158328043Y-82335391D01* +X162058319Y-82335391D01* +X162155643Y-82609752D01* +X162304622Y-82859855D01* +X162499531Y-83076088D01* +X162732880Y-83250141D01* +X162995701Y-83375325D01* +X163142910Y-83419976D01* +X163372800Y-83298655D01* +X163372800Y-82105500D01* +X162178986Y-82105500D01* +X162058319Y-82335391D01* +X158328043Y-82335391D01* +X158328043Y-81522250D01* +X158316003Y-81400008D01* +X158280346Y-81282463D01* +X158265452Y-81254599D01* +X162210831Y-81254599D01* +X162155643Y-81347248D01* +X162058319Y-81621609D01* +X162178986Y-81851500D01* +X163372800Y-81851500D01* +X163372800Y-81831500D01* +X163626800Y-81831500D01* +X163626800Y-81851500D01* +X163646800Y-81851500D01* +X163646800Y-82105500D01* +X163626800Y-82105500D01* +X163626800Y-83298655D01* +X163856690Y-83419976D01* +X164003899Y-83375325D01* +X164266720Y-83250141D01* +X164500069Y-83076088D01* +X164694978Y-82859855D01* +X164843957Y-82609752D01* +X164901572Y-82447332D01* +X164948902Y-82561597D01* +X165083620Y-82763217D01* +X165255083Y-82934680D01* +X165456703Y-83069398D01* +X165680731Y-83162193D01* +X165918557Y-83209500D01* +X166161043Y-83209500D01* +X166398869Y-83162193D01* +X166622897Y-83069398D01* +X166824517Y-82934680D01* +X166995980Y-82763217D01* +X167130698Y-82561597D01* +X167223493Y-82337569D01* +X167270800Y-82099743D01* +X167270800Y-81857257D01* +X167223493Y-81619431D01* +X167130698Y-81395403D01* +X166995980Y-81193783D01* +X166824517Y-81022320D01* +X166622897Y-80887602D01* +X166398869Y-80794807D01* +X166161043Y-80747500D01* +X165918557Y-80747500D01* +X165680731Y-80794807D01* +X165630633Y-80815558D01* +X165321075Y-80506000D01* +X173457001Y-80506000D01* +X173457000Y-106798897D01* +X173403374Y-106669432D01* +X173224881Y-106402298D01* +X172997702Y-106175119D01* +X172730568Y-105996626D01* +X172433745Y-105873678D01* +X172118640Y-105811000D01* +X171797360Y-105811000D01* +X171482255Y-105873678D01* +X171185432Y-105996626D01* +X170918298Y-106175119D01* +X170691119Y-106402298D01* +X170521213Y-106656580D01* +X170486322Y-106591304D01* +X170438711Y-106533289D01* +X170380696Y-106485678D01* +X170314508Y-106450299D01* +X170242689Y-106428513D01* +X170168000Y-106421157D01* +X169875200Y-106421157D01* +X169875200Y-104670452D01* +X169877411Y-104648000D01* +X169875200Y-104625548D01* +X169875200Y-104625540D01* +X169868585Y-104558373D01* +X169842508Y-104472412D01* +X169842441Y-104472190D01* +X169799987Y-104392764D01* +X169757171Y-104340592D01* +X169757165Y-104340586D01* +X169742853Y-104323147D01* +X169725415Y-104308836D01* +X167386000Y-101969423D01* +X167386000Y-101918458D01* +X167361597Y-101795777D01* +X167313729Y-101680215D01* +X167244236Y-101576211D01* +X167166176Y-101498151D01* +X167242128Y-101422200D01* +X168723175Y-101422200D01* +X168759211Y-101458236D01* +X168863215Y-101527729D01* +X168978777Y-101575597D01* +X169101458Y-101600000D01* +X169226542Y-101600000D01* +X169349223Y-101575597D01* +X169464785Y-101527729D01* +X169568789Y-101458236D01* +X169657236Y-101369789D01* +X169726729Y-101265785D01* +X169774597Y-101150223D01* +X169799000Y-101027542D01* +X169799000Y-100902458D01* +X169774597Y-100779777D01* +X169726729Y-100664215D01* +X169657236Y-100560211D01* +X169568789Y-100471764D01* +X169464785Y-100402271D01* +X169349223Y-100354403D01* +X169226542Y-100330000D01* +X169101458Y-100330000D01* +X168978777Y-100354403D01* +X168863215Y-100402271D01* +X168759211Y-100471764D01* +X168723175Y-100507800D01* +X167075200Y-100507800D01* +X167052750Y-100505589D01* +X167030300Y-100507800D01* +X167030290Y-100507800D01* +X166963123Y-100514415D01* +X166876941Y-100540559D01* +X166797514Y-100583013D01* +X166727897Y-100640147D01* +X166713580Y-100657592D01* +X164188997Y-103182176D01* +X164171547Y-103196497D01* +X164114413Y-103266115D01* +X164071959Y-103345542D01* +X164045815Y-103431724D01* +X164039200Y-103498891D01* +X164039200Y-103498900D01* +X164036989Y-103521350D01* +X164039200Y-103543801D01* +X164039200Y-103572175D01* +X164003164Y-103608211D01* +X163933671Y-103712215D01* +X163885803Y-103827777D01* +X163861400Y-103950458D01* +X163861400Y-104075542D01* +X163885803Y-104198223D01* +X163933671Y-104313785D01* +X164003164Y-104417789D01* +X164091611Y-104506236D01* +X164195615Y-104575729D01* +X164311177Y-104623597D01* +X164433858Y-104648000D01* +X164558942Y-104648000D01* +X164681623Y-104623597D01* +X164797185Y-104575729D01* +X164901189Y-104506236D01* +X164989636Y-104417789D01* +X165059129Y-104313785D01* +X165106997Y-104198223D01* +X165131400Y-104075542D01* +X165131400Y-103950458D01* +X165106997Y-103827777D01* +X165059129Y-103712215D01* +X165016264Y-103648063D01* +X166268151Y-102396176D01* +X166346211Y-102474236D01* +X166450215Y-102543729D01* +X166565777Y-102591597D01* +X166688458Y-102616000D01* +X166739423Y-102616000D01* +X168960800Y-104837379D01* +X168960800Y-106421157D01* +X168668000Y-106421157D01* +X168593311Y-106428513D01* +X168521492Y-106450299D01* +X168455304Y-106485678D01* +X168397289Y-106533289D01* +X168349678Y-106591304D01* +X168314299Y-106657492D01* +X168292513Y-106729311D01* +X168285157Y-106804000D01* +X168285157Y-109594000D01* +X168010843Y-109594000D01* +X168010843Y-106804000D01* +X168003487Y-106729311D01* +X167981701Y-106657492D01* +X167946322Y-106591304D01* +X167903997Y-106539731D01* +X167948729Y-106472785D01* +X167996597Y-106357223D01* +X168021000Y-106234542D01* +X168021000Y-106109458D01* +X167996597Y-105986777D01* +X167948729Y-105871215D01* +X167879236Y-105767211D01* +X167790789Y-105678764D01* +X167686785Y-105609271D01* +X167571223Y-105561403D01* +X167448542Y-105537000D01* +X167323458Y-105537000D01* +X167200777Y-105561403D01* +X167085215Y-105609271D01* +X166981211Y-105678764D01* +X166892764Y-105767211D01* +X166823271Y-105871215D01* +X166775403Y-105986777D01* +X166751000Y-106109458D01* +X166751000Y-106160423D01* +X166570597Y-106340826D01* +X166553147Y-106355147D01* +X166498974Y-106421157D01* +X166128000Y-106421157D01* +X166053311Y-106428513D01* +X165981492Y-106450299D01* +X165915304Y-106485678D01* +X165857289Y-106533289D01* +X165809678Y-106591304D01* +X165774299Y-106657492D01* +X165752513Y-106729311D01* +X165745157Y-106804000D01* +X165745157Y-109594000D01* +X165726044Y-109594000D01* +X165723000Y-108489750D01* +X165564250Y-108331000D01* +X164465000Y-108331000D01* +X164465000Y-108351000D01* +X164211000Y-108351000D01* +X164211000Y-108331000D01* +X163111750Y-108331000D01* +X162953000Y-108489750D01* +X162949956Y-109594000D01* +X162930843Y-109594000D01* +X162930843Y-106804000D01* +X162949928Y-106804000D01* +X162953000Y-107918250D01* +X163111750Y-108077000D01* +X164211000Y-108077000D01* +X164211000Y-106327750D01* +X164465000Y-106327750D01* +X164465000Y-108077000D01* +X165564250Y-108077000D01* +X165723000Y-107918250D01* +X165726072Y-106804000D01* +X165713812Y-106679518D01* +X165677502Y-106559820D01* +X165618537Y-106449506D01* +X165539185Y-106352815D01* +X165442494Y-106273463D01* +X165332180Y-106214498D01* +X165212482Y-106178188D01* +X165088000Y-106165928D01* +X164623750Y-106169000D01* +X164465000Y-106327750D01* +X164211000Y-106327750D01* +X164052250Y-106169000D01* +X163588000Y-106165928D01* +X163463518Y-106178188D01* +X163343820Y-106214498D01* +X163233506Y-106273463D01* +X163136815Y-106352815D01* +X163057463Y-106449506D01* +X162998498Y-106559820D01* +X162962188Y-106679518D01* +X162949928Y-106804000D01* +X162930843Y-106804000D01* +X162923487Y-106729311D01* +X162901701Y-106657492D01* +X162866322Y-106591304D01* +X162818711Y-106533289D01* +X162760696Y-106485678D01* +X162694508Y-106450299D01* +X162622689Y-106428513D01* +X162548000Y-106421157D01* +X161723999Y-106421157D01* +X161723999Y-97183777D01* +X161909650Y-97182400D01* +X162068400Y-97023650D01* +X162068400Y-95874400D01* +X162322400Y-95874400D01* +X162322400Y-97023650D01* +X162481150Y-97182400D01* +X162895400Y-97185472D01* +X163019882Y-97173212D01* +X163139580Y-97136902D01* +X163249894Y-97077937D01* +X163346585Y-96998585D01* +X163425937Y-96901894D01* +X163484902Y-96791580D01* +X163521212Y-96671882D01* +X163533472Y-96547400D01* +X169257328Y-96547400D01* +X169269588Y-96671882D01* +X169305898Y-96791580D01* +X169364863Y-96901894D01* +X169444215Y-96998585D01* +X169540906Y-97077937D01* +X169651220Y-97136902D01* +X169770918Y-97173212D01* +X169895400Y-97185472D01* +X170309650Y-97182400D01* +X170468400Y-97023650D01* +X170468400Y-95874400D01* +X170722400Y-95874400D01* +X170722400Y-97023650D01* +X170881150Y-97182400D01* +X171295400Y-97185472D01* +X171419882Y-97173212D01* +X171539580Y-97136902D01* +X171649894Y-97077937D01* +X171746585Y-96998585D01* +X171825937Y-96901894D01* +X171884902Y-96791580D01* +X171921212Y-96671882D01* +X171933472Y-96547400D01* +X171930400Y-96033150D01* +X171771650Y-95874400D01* +X170722400Y-95874400D01* +X170468400Y-95874400D01* +X169419150Y-95874400D01* +X169260400Y-96033150D01* +X169257328Y-96547400D01* +X163533472Y-96547400D01* +X163530400Y-96033150D01* +X163371650Y-95874400D01* +X162322400Y-95874400D01* +X162068400Y-95874400D01* +X162048400Y-95874400D01* +X162048400Y-95620400D01* +X162068400Y-95620400D01* +X162068400Y-94471150D01* +X162322400Y-94471150D01* +X162322400Y-95620400D01* +X163371650Y-95620400D01* +X163530400Y-95461650D01* +X163533472Y-94947400D01* +X169257328Y-94947400D01* +X169260400Y-95461650D01* +X169419150Y-95620400D01* +X170468400Y-95620400D01* +X170468400Y-94471150D01* +X170722400Y-94471150D01* +X170722400Y-95620400D01* +X171771650Y-95620400D01* +X171930400Y-95461650D01* +X171933472Y-94947400D01* +X171921212Y-94822918D01* +X171884902Y-94703220D01* +X171825937Y-94592906D01* +X171746585Y-94496215D01* +X171649894Y-94416863D01* +X171539580Y-94357898D01* +X171419882Y-94321588D01* +X171295400Y-94309328D01* +X170881150Y-94312400D01* +X170722400Y-94471150D01* +X170468400Y-94471150D01* +X170309650Y-94312400D01* +X169895400Y-94309328D01* +X169770918Y-94321588D01* +X169651220Y-94357898D01* +X169540906Y-94416863D01* +X169444215Y-94496215D01* +X169364863Y-94592906D01* +X169305898Y-94703220D01* +X169269588Y-94822918D01* +X169257328Y-94947400D01* +X163533472Y-94947400D01* +X163521212Y-94822918D01* +X163484902Y-94703220D01* +X163425937Y-94592906D01* +X163346585Y-94496215D01* +X163249894Y-94416863D01* +X163139580Y-94357898D01* +X163019882Y-94321588D01* +X162895400Y-94309328D01* +X162481150Y-94312400D01* +X162322400Y-94471150D01* +X162068400Y-94471150D01* +X161909650Y-94312400D01* +X161723999Y-94311023D01* +X161723999Y-92430243D01* +X162895400Y-92430243D01* +X162970089Y-92422887D01* +X163041908Y-92401101D01* +X163108096Y-92365722D01* +X163166111Y-92318111D01* +X163213722Y-92260096D01* +X163249101Y-92193908D01* +X163270887Y-92122089D01* +X163278243Y-92047400D01* +X163278243Y-91704600D01* +X169512557Y-91704600D01* +X169512557Y-92047400D01* +X169519913Y-92122089D01* +X169541699Y-92193908D01* +X169577078Y-92260096D01* +X169624689Y-92318111D01* +X169682704Y-92365722D01* +X169748892Y-92401101D01* +X169820711Y-92422887D01* +X169895400Y-92430243D01* +X171295400Y-92430243D01* +X171370089Y-92422887D01* +X171441908Y-92401101D01* +X171508096Y-92365722D01* +X171566111Y-92318111D01* +X171613722Y-92260096D01* +X171649101Y-92193908D01* +X171670887Y-92122089D01* +X171678243Y-92047400D01* +X171678243Y-90447400D01* +X171670887Y-90372711D01* +X171649101Y-90300892D01* +X171613722Y-90234704D01* +X171566111Y-90176689D01* +X171508096Y-90129078D01* +X171441908Y-90093699D01* +X171370089Y-90071913D01* +X171295400Y-90064557D01* +X170059135Y-90064557D01* +X168044886Y-88050309D01* +X168030565Y-88032859D01* +X167960948Y-87975725D01* +X167881521Y-87933271D01* +X167795339Y-87907127D01* +X167728172Y-87900512D01* +X167728162Y-87900512D01* +X167705712Y-87898301D01* +X167683262Y-87900512D01* +X165337894Y-87900512D01* +X165354000Y-87819542D01* +X165354000Y-87768577D01* +X168887215Y-84235364D01* +X168904653Y-84221053D01* +X168918965Y-84203614D01* +X168918971Y-84203608D01* +X168961787Y-84151436D01* +X169004241Y-84072010D01* +X169010326Y-84051951D01* +X169030385Y-83985827D01* +X169037000Y-83918660D01* +X169037000Y-83918650D01* +X169039211Y-83896200D01* +X169037000Y-83873750D01* +X169037000Y-83211343D01* +X169429800Y-83211343D01* +X169504489Y-83203987D01* +X169576308Y-83182201D01* +X169642496Y-83146822D01* +X169700511Y-83099211D01* +X169748122Y-83041196D01* +X169783501Y-82975008D01* +X169805287Y-82903189D01* +X169812643Y-82828500D01* +X169812643Y-81128500D01* +X169805287Y-81053811D01* +X169783501Y-80981992D01* +X169748122Y-80915804D01* +X169700511Y-80857789D01* +X169642496Y-80810178D01* +X169576308Y-80774799D01* +X169504489Y-80753013D01* +X169429800Y-80745657D01* +X167729800Y-80745657D01* +X167655111Y-80753013D01* +X167583292Y-80774799D01* +X167517104Y-80810178D01* +X167459089Y-80857789D01* +X167411478Y-80915804D01* +X167376099Y-80981992D01* +X167354313Y-81053811D01* +X167346957Y-81128500D01* +X167346957Y-82828500D01* +X167354313Y-82903189D01* +X167376099Y-82975008D01* +X167411478Y-83041196D01* +X167459089Y-83099211D01* +X167517104Y-83146822D01* +X167583292Y-83182201D01* +X167655111Y-83203987D01* +X167729800Y-83211343D01* +X168122600Y-83211343D01* +X168122600Y-83706821D01* +X164707423Y-87122000D01* +X164656458Y-87122000D01* +X164533777Y-87146403D01* +X164418979Y-87193954D01* +X164361789Y-87136764D01* +X164257785Y-87067271D01* +X164142223Y-87019403D01* +X164019542Y-86995000D01* +X163894458Y-86995000D01* +X163771777Y-87019403D01* +X163656215Y-87067271D01* +X163552211Y-87136764D01* +X163463764Y-87225211D01* +X163394271Y-87329215D01* +X163346403Y-87444777D01* +X163322000Y-87567458D01* +X163322000Y-87692542D01* +X163346403Y-87815223D01* +X163394271Y-87930785D01* +X163463764Y-88034789D01* +X163506262Y-88077287D01* +X163506415Y-88078837D01* +X163524663Y-88138987D01* +X163532560Y-88165019D01* +X163572957Y-88240597D01* +X163575014Y-88244446D01* +X163632148Y-88314063D01* +X163649592Y-88328379D01* +X163986336Y-88665125D01* +X164000649Y-88682565D01* +X164018088Y-88696877D01* +X164018094Y-88696883D01* +X164070266Y-88739699D01* +X164149692Y-88782153D01* +X164235875Y-88808297D01* +X164303042Y-88814912D01* +X164303050Y-88814912D01* +X164325502Y-88817123D01* +X164347954Y-88814912D01* +X165548313Y-88814912D01* +X165548313Y-88902855D01* +X165572716Y-89025536D01* +X165620584Y-89141098D01* +X165629205Y-89154000D01* +X165545458Y-89154000D01* +X165422777Y-89178403D01* +X165307215Y-89226271D01* +X165203211Y-89295764D01* +X165167175Y-89331800D01* +X147059028Y-89331800D01* +X146827824Y-89100597D01* +X146813503Y-89083147D01* +X146743886Y-89026013D01* +X146664459Y-88983559D01* +X146578277Y-88957415D01* +X146511110Y-88950800D01* +X146511100Y-88950800D01* +X146488650Y-88948589D01* +X146466200Y-88950800D01* +X146363825Y-88950800D01* +X146327789Y-88914764D01* +X146223785Y-88845271D01* +X146108223Y-88797403D01* +X145985542Y-88773000D01* +X145860458Y-88773000D01* +X145737777Y-88797403D01* +X145622215Y-88845271D01* +X145518211Y-88914764D01* +X145429764Y-89003211D01* +X145360271Y-89107215D01* +X145312403Y-89222777D01* +X145288000Y-89345458D01* +X145288000Y-89470542D01* +X145312403Y-89593223D01* +X145360271Y-89708785D01* +X145429764Y-89812789D01* +X145518211Y-89901236D01* +X145622215Y-89970729D01* +X145737777Y-90018597D01* +X145774400Y-90025882D01* +X145774400Y-90105542D01* +X145798803Y-90228223D01* +X145846671Y-90343785D01* +X145916164Y-90447789D01* +X146004611Y-90536236D01* +X146108615Y-90605729D01* +X146224177Y-90653597D01* +X146346858Y-90678000D01* +X146397823Y-90678000D01* +X147340230Y-91620408D01* +X147354547Y-91637853D01* +X147371992Y-91652170D01* +X147424163Y-91694987D01* +X147446285Y-91706811D01* +X147503591Y-91737441D01* +X147589773Y-91763585D01* +X147656940Y-91770200D01* +X147656949Y-91770200D01* +X147679399Y-91772411D01* +X147701849Y-91770200D01* +X157293175Y-91770200D01* +X157329211Y-91806236D01* +X157433215Y-91875729D01* +X157548777Y-91923597D01* +X157671458Y-91948000D01* +X157796542Y-91948000D01* +X157919223Y-91923597D01* +X158034785Y-91875729D01* +X158138789Y-91806236D01* +X158227236Y-91717789D01* +X158296729Y-91613785D01* +X158344597Y-91498223D01* +X158369000Y-91375542D01* +X158369000Y-91250458D01* +X158344597Y-91127777D01* +X158296729Y-91012215D01* +X158227236Y-90908211D01* +X158138789Y-90819764D01* +X158034785Y-90750271D01* +X157919223Y-90702403D01* +X157796542Y-90678000D01* +X157671458Y-90678000D01* +X157548777Y-90702403D01* +X157433215Y-90750271D01* +X157329211Y-90819764D01* +X157293175Y-90855800D01* +X147868778Y-90855800D01* +X147259177Y-90246200D01* +X160809192Y-90246200D01* +X160807388Y-90264519D01* +X160809599Y-90286969D01* +X160809600Y-106506772D01* +X160777289Y-106533289D01* +X160729678Y-106591304D01* +X160694299Y-106657492D01* +X160672513Y-106729311D01* +X160665157Y-106804000D01* +X160665157Y-109594000D01* +X160390843Y-109594000D01* +X160390843Y-106804000D01* +X160383487Y-106729311D01* +X160361701Y-106657492D01* +X160326322Y-106591304D01* +X160278711Y-106533289D01* +X160220696Y-106485678D01* +X160154508Y-106450299D01* +X160082689Y-106428513D01* +X160008000Y-106421157D01* +X159791000Y-106421157D01* +X159791000Y-105563172D01* +X159793578Y-105536999D01* +X159791000Y-105510825D01* +X159783287Y-105432514D01* +X159752810Y-105332043D01* +X159703317Y-105239449D01* +X159636711Y-105158289D01* +X159616379Y-105141603D01* +X154545037Y-100070262D01* +X154534597Y-100017777D01* +X154486729Y-99902215D01* +X154417236Y-99798211D01* +X154328789Y-99709764D01* +X154224785Y-99640271D01* +X154109223Y-99592403D01* +X153986542Y-99568000D01* +X153861458Y-99568000D01* +X153738777Y-99592403D01* +X153623215Y-99640271D01* +X153519211Y-99709764D01* +X153430764Y-99798211D01* +X153361271Y-99902215D01* +X153313403Y-100017777D01* +X153289000Y-100140458D01* +X153289000Y-100265542D01* +X153313403Y-100388223D01* +X153361271Y-100503785D01* +X153430764Y-100607789D01* +X153519211Y-100696236D01* +X153623215Y-100765729D01* +X153738777Y-100813597D01* +X153791262Y-100824037D01* +X158725000Y-105757776D01* +X158725000Y-106421157D01* +X158508000Y-106421157D01* +X158433311Y-106428513D01* +X158361492Y-106450299D01* +X158295304Y-106485678D01* +X158237289Y-106533289D01* +X158189678Y-106591304D01* +X158154787Y-106656580D01* +X157984881Y-106402298D01* +X157757702Y-106175119D01* +X157490568Y-105996626D01* +X157193745Y-105873678D01* +X156878640Y-105811000D01* +X156557360Y-105811000D01* +X156242255Y-105873678D01* +X155945432Y-105996626D01* +X155678298Y-106175119D01* +X155451119Y-106402298D01* +X155272626Y-106669432D01* +X155149678Y-106966255D01* +X155087000Y-107281360D01* +X155087000Y-107602640D01* +X155149678Y-107917745D01* +X155272626Y-108214568D01* +X155451119Y-108481702D01* +X155678298Y-108708881D01* +X155945432Y-108887374D01* +X156242255Y-109010322D01* +X156557360Y-109073000D01* +X156878640Y-109073000D01* +X157193745Y-109010322D01* +X157490568Y-108887374D01* +X157757702Y-108708881D01* +X157984881Y-108481702D01* +X158125157Y-108271764D01* +X158125157Y-109594000D01* +X131342000Y-109594000D01* +X131342000Y-108045939D01* +X131368917Y-108096297D01* +X131514775Y-108274025D01* +X131692503Y-108419883D01* +X131895272Y-108528266D01* +X132115290Y-108595007D01* +X132344100Y-108617543D01* +X133924100Y-108617543D01* +X134152910Y-108595007D01* +X134372928Y-108528266D01* +X134575697Y-108419883D01* +X134753425Y-108274025D01* +X134899283Y-108096297D01* +X135007666Y-107893528D01* +X135074407Y-107673510D01* +X135083221Y-107584023D01* +X135096308Y-107619677D01* +X135322953Y-107990885D01* +X135617662Y-108310744D01* +X135969109Y-108566962D01* +X136363789Y-108749693D01* +X136622731Y-108818963D01* +X136967100Y-108707024D01* +X136967100Y-106311700D01* +X136947100Y-106311700D01* +X136947100Y-106057700D01* +X136967100Y-106057700D01* +X136967100Y-103662376D01* +X137221100Y-103662376D01* +X137221100Y-106057700D01* +X137241100Y-106057700D01* +X137241100Y-106311700D01* +X137221100Y-106311700D01* +X137221100Y-108707024D01* +X137565469Y-108818963D01* +X137824411Y-108749693D01* +X138219091Y-108566962D01* +X138570538Y-108310744D01* +X138865247Y-107990885D01* +X139091892Y-107619677D01* +X139204513Y-107312865D01* +X139233606Y-107408773D01* +X139415700Y-107749444D01* +X139660756Y-108048045D01* +X139959357Y-108293101D01* +X140300028Y-108475194D01* +X140669678Y-108587326D01* +X141054100Y-108625188D01* +X141438523Y-108587326D01* +X141808173Y-108475194D01* +X142148844Y-108293101D01* +X142447445Y-108048045D01* +X142692501Y-107749444D01* +X142874594Y-107408773D01* +X142986726Y-107039122D01* +X142994100Y-106964252D01* +X143001474Y-107039123D01* +X143113606Y-107408773D01* +X143295700Y-107749444D01* +X143540756Y-108048045D01* +X143839357Y-108293101D01* +X144180028Y-108475194D01* +X144549678Y-108587326D01* +X144934100Y-108625188D01* +X145318523Y-108587326D01* +X145688173Y-108475194D01* +X146028844Y-108293101D01* +X146327445Y-108048045D01* +X146572501Y-107749444D01* +X146754594Y-107408773D01* +X146866726Y-107039122D01* +X146895100Y-106751033D01* +X146895100Y-105618367D01* +X147013100Y-105618367D01* +X147013100Y-106751034D01* +X147041474Y-107039123D01* +X147153606Y-107408773D01* +X147335700Y-107749444D01* +X147580756Y-108048045D01* +X147879357Y-108293101D01* +X148220028Y-108475194D01* +X148589678Y-108587326D01* +X148974100Y-108625188D01* +X149358523Y-108587326D01* +X149728173Y-108475194D01* +X150068844Y-108293101D01* +X150367445Y-108048045D01* +X150612501Y-107749444D01* +X150794594Y-107408773D01* +X150906726Y-107039122D01* +X150935100Y-106751033D01* +X150935100Y-105618367D01* +X150973100Y-105618367D01* +X150973100Y-106751034D01* +X151001474Y-107039123D01* +X151113606Y-107408773D01* +X151295700Y-107749444D01* +X151540756Y-108048045D01* +X151839357Y-108293101D01* +X152180028Y-108475194D01* +X152549678Y-108587326D01* +X152934100Y-108625188D01* +X153318523Y-108587326D01* +X153688173Y-108475194D01* +X154028844Y-108293101D01* +X154327445Y-108048045D01* +X154572501Y-107749444D01* +X154754594Y-107408773D01* +X154866726Y-107039122D01* +X154895100Y-106751033D01* +X154895100Y-105618366D01* +X154866726Y-105330277D01* +X154754594Y-104960627D01* +X154572501Y-104619956D01* +X154327445Y-104321355D01* +X154028844Y-104076299D01* +X153688172Y-103894206D01* +X153318522Y-103782074D01* +X152934100Y-103744212D01* +X152549677Y-103782074D01* +X152180027Y-103894206D01* +X151839356Y-104076299D01* +X151540755Y-104321355D01* +X151295699Y-104619956D01* +X151113606Y-104960628D01* +X151001474Y-105330278D01* +X150973100Y-105618367D01* +X150935100Y-105618367D01* +X150935100Y-105618366D01* +X150906726Y-105330277D01* +X150794594Y-104960627D01* +X150612501Y-104619956D01* +X150367445Y-104321355D01* +X150068844Y-104076299D01* +X149728172Y-103894206D01* +X149358522Y-103782074D01* +X148974100Y-103744212D01* +X148589677Y-103782074D01* +X148220027Y-103894206D01* +X147879356Y-104076299D01* +X147580755Y-104321355D01* +X147335699Y-104619956D01* +X147153606Y-104960628D01* +X147041474Y-105330278D01* +X147013100Y-105618367D01* +X146895100Y-105618367D01* +X146895100Y-105618366D01* +X146866726Y-105330277D01* +X146754594Y-104960627D01* +X146572501Y-104619956D01* +X146327445Y-104321355D01* +X146028844Y-104076299D01* +X145688172Y-103894206D01* +X145318522Y-103782074D01* +X144934100Y-103744212D01* +X144549677Y-103782074D01* +X144180027Y-103894206D01* +X143839356Y-104076299D01* +X143540755Y-104321355D01* +X143295699Y-104619956D01* +X143113606Y-104960628D01* +X143001474Y-105330278D01* +X142994100Y-105405148D01* +X142986726Y-105330277D01* +X142874594Y-104960627D01* +X142692501Y-104619956D01* +X142447445Y-104321355D01* +X142148844Y-104076299D01* +X141808172Y-103894206D01* +X141438522Y-103782074D01* +X141054100Y-103744212D01* +X140669677Y-103782074D01* +X140300027Y-103894206D01* +X139959356Y-104076299D01* +X139660755Y-104321355D01* +X139415699Y-104619956D01* +X139233606Y-104960628D01* +X139204513Y-105056535D01* +X139091892Y-104749723D01* +X138865247Y-104378515D01* +X138570538Y-104058656D01* +X138219091Y-103802438D01* +X137824411Y-103619707D01* +X137565469Y-103550437D01* +X137221100Y-103662376D01* +X136967100Y-103662376D01* +X136622731Y-103550437D01* +X136363789Y-103619707D01* +X135969109Y-103802438D01* +X135617662Y-104058656D01* +X135322953Y-104378515D01* +X135096308Y-104749723D01* +X135083221Y-104785377D01* +X135074407Y-104695890D01* +X135007666Y-104475872D01* +X134899283Y-104273103D01* +X134753425Y-104095375D01* +X134575697Y-103949517D01* +X134372928Y-103841134D01* +X134152910Y-103774393D01* +X133924100Y-103751857D01* +X132344100Y-103751857D01* +X132115290Y-103774393D01* +X131895272Y-103841134D01* +X131692503Y-103949517D01* +X131514775Y-104095375D01* +X131368917Y-104273103D01* +X131342000Y-104323461D01* +X131342000Y-84732182D01* +X131436093Y-84771157D01* +X131583310Y-84800440D01* +X131733410Y-84800440D01* +X131880627Y-84771157D01* +X132019302Y-84713716D01* +X132144107Y-84630324D01* +X132250244Y-84524187D01* +X132333636Y-84399382D01* +X132391077Y-84260707D01* +X132420360Y-84113490D01* +X132420360Y-83963390D01* +X132391077Y-83816173D01* +X132333636Y-83677498D01* +X132250244Y-83552693D01* +X132144107Y-83446556D01* +X132019302Y-83363164D01* +X131880627Y-83305723D01* +X131733410Y-83276440D01* +X131583310Y-83276440D01* +X131436093Y-83305723D01* +X131342000Y-83344698D01* +X131342000Y-80506000D01* +X134306799Y-80506000D01* +X133887993Y-80924807D01* +G04 #@! TA.AperFunction,Conductor* +D20* +G36* +X133887993Y-80924807D02* +G01* +X133810325Y-80917157D01* +X133322825Y-80917157D01* +X133200583Y-80929197D01* +X133083038Y-80964854D01* +X132974709Y-81022757D01* +X132879757Y-81100682D01* +X132801832Y-81195634D01* +X132743929Y-81303963D01* +X132708272Y-81421508D01* +X132696232Y-81543750D01* +X132696232Y-82456250D01* +X132708272Y-82578492D01* +X132743929Y-82696037D01* +X132801832Y-82804366D01* +X132879757Y-82899318D01* +X132974709Y-82977243D01* +X133033575Y-83008708D01* +X133033576Y-90537790D01* +X133030997Y-90563975D01* +X133041288Y-90668461D01* +X133060263Y-90731012D01* +X133071766Y-90768932D01* +X133121259Y-90861526D01* +X133187865Y-90942686D01* +X133208197Y-90959372D01* +X137097763Y-94848939D01* +X137108203Y-94901423D01* +X137156071Y-95016985D01* +X137225564Y-95120989D01* +X137314011Y-95209436D01* +X137418015Y-95278929D01* +X137533577Y-95326797D01* +X137656258Y-95351200D01* +X137781342Y-95351200D01* +X137904023Y-95326797D01* +X138019585Y-95278929D01* +X138123589Y-95209436D01* +X138212036Y-95120989D01* +X138281529Y-95016985D01* +X138329397Y-94901423D01* +X138353800Y-94778742D01* +X138353800Y-94653658D01* +X138329397Y-94530977D01* +X138281529Y-94415415D01* +X138212036Y-94311411D01* +X138123589Y-94222964D01* +X138019585Y-94153471D01* +X137904023Y-94105603D01* +X137851539Y-94095163D01* +X134099575Y-90343200D01* +X134099575Y-84736468D01* +X134189453Y-84773697D01* +X134336670Y-84802980D01* +X134486770Y-84802980D01* +X134633987Y-84773697D01* +X134772662Y-84716256D01* +X134897467Y-84632864D01* +X135003604Y-84526727D01* +X135086996Y-84401922D01* +X135144437Y-84263247D01* +X135173720Y-84116030D01* +X135173720Y-83965930D01* +X135144437Y-83818713D01* +X135086996Y-83680038D01* +X135003604Y-83555233D01* +X134897467Y-83449096D01* +X134772662Y-83365704D01* +X134633987Y-83308263D01* +X134486770Y-83278980D01* +X134336670Y-83278980D01* +X134189453Y-83308263D01* +X134099575Y-83345492D01* +X134099575Y-83008708D01* +X134158441Y-82977243D01* +X134253393Y-82899318D01* +X134331318Y-82804366D01* +X134389221Y-82696037D01* +X134424878Y-82578492D01* +X134436918Y-82456250D01* +X134436918Y-81883432D01* +X134571232Y-81749118D01* +X134571232Y-82456250D01* +X134583272Y-82578492D01* +X134618929Y-82696037D01* +X134676832Y-82804366D01* +X134754757Y-82899318D01* +X134849709Y-82977243D01* +X134958038Y-83035146D01* +X135075583Y-83070803D01* +X135197825Y-83082843D01* +X135685325Y-83082843D01* +X135807567Y-83070803D01* +X135925112Y-83035146D01* +X136033441Y-82977243D01* +X136128393Y-82899318D01* +X136206318Y-82804366D01* +X136264221Y-82696037D01* +X136299878Y-82578492D01* +X136311824Y-82457200D01* +X136925550Y-82457200D01* +X136948000Y-82459411D01* +X136970450Y-82457200D01* +X136970460Y-82457200D01* +X137037627Y-82450585D01* +X137123809Y-82424441D01* +X137203236Y-82381987D01* +X137272853Y-82324853D01* +X137287174Y-82307403D01* +X137679578Y-81915000D01* +X137730542Y-81915000D01* +X137853223Y-81890597D01* +X137968785Y-81842729D01* +X138072789Y-81773236D01* +X138161236Y-81684789D01* +X138230729Y-81580785D01* +X138278597Y-81465223D01* +X138303000Y-81342542D01* +X138303000Y-81254599D01* +X154774948Y-81254599D01* +X154760054Y-81282463D01* +X154724397Y-81400008D01* +X154712451Y-81521300D01* +X154678645Y-81521300D01* +X154671236Y-81510211D01* +X154582789Y-81421764D01* +X154478785Y-81352271D01* +X154363223Y-81304403D01* +X154240542Y-81280000D01* +X154115458Y-81280000D01* +X153992777Y-81304403D01* +X153877215Y-81352271D01* +X153773211Y-81421764D01* +X153684764Y-81510211D01* +X153615271Y-81614215D01* +X153567403Y-81729777D01* +X153543000Y-81852458D01* +X153543000Y-81977542D01* +X153567403Y-82100223D01* +X153615271Y-82215785D01* +X153684764Y-82319789D01* +X153773211Y-82408236D01* +X153877215Y-82477729D01* +X153992777Y-82525597D01* +X154115458Y-82550000D01* +X154240542Y-82550000D01* +X154363223Y-82525597D01* +X154478785Y-82477729D01* +X154541686Y-82435700D01* +X154712451Y-82435700D01* +X154724397Y-82556992D01* +X154760054Y-82674537D01* +X154817957Y-82782866D01* +X154895882Y-82877818D01* +X154990834Y-82955743D01* +X155099163Y-83013646D01* +X155216708Y-83049303D01* +X155338950Y-83061343D01* +X155826450Y-83061343D01* +X155948692Y-83049303D01* +X156066237Y-83013646D01* +X156174566Y-82955743D01* +X156269518Y-82877818D01* +X156347443Y-82782866D01* +X156405346Y-82674537D01* +X156441003Y-82556992D01* +X156453043Y-82434750D01* +X156453043Y-81522250D01* +X156441003Y-81400008D01* +X156405346Y-81282463D01* +X156390452Y-81254599D01* +X156649948Y-81254599D01* +X156635054Y-81282463D01* +X156599397Y-81400008D01* +X156587357Y-81522250D01* +X156587357Y-82434750D01* +X156599397Y-82556992D01* +X156635054Y-82674537D01* +X156692957Y-82782866D01* +X156770882Y-82877818D01* +X156865834Y-82955743D01* +X156974163Y-83013646D01* +X157000500Y-83021635D01* +X157000501Y-84918240D01* +X156998289Y-84940700D01* +X157000501Y-84963160D01* +X157007116Y-85030327D01* +X157033260Y-85116509D01* +X157075714Y-85195936D01* +X157132848Y-85265553D01* +X157150293Y-85279870D01* +X158369000Y-86498578D01* +X158369000Y-86549542D01* +X158393403Y-86672223D01* +X158441271Y-86787785D01* +X158510764Y-86891789D01* +X158599211Y-86980236D01* +X158703215Y-87049729D01* +X158818777Y-87097597D01* +X158941458Y-87122000D01* +X159066542Y-87122000D01* +X159189223Y-87097597D01* +X159304785Y-87049729D01* +X159408789Y-86980236D01* +X159497236Y-86891789D01* +X159566729Y-86787785D01* +X159614597Y-86672223D01* +X159639000Y-86549542D01* +X159639000Y-86424458D01* +X159614597Y-86301777D01* +X159566729Y-86186215D01* +X159497236Y-86082211D01* +X159408789Y-85993764D01* +X159304785Y-85924271D01* +X159189223Y-85876403D01* +X159066542Y-85852000D01* +X159015578Y-85852000D01* +X157914900Y-84751323D01* +X157914900Y-83021635D01* +X157941237Y-83013646D01* +X158049566Y-82955743D01* +X158144518Y-82877818D01* +X158222443Y-82782866D01* +X158280346Y-82674537D01* +X158316003Y-82556992D01* +X158328043Y-82434750D01* +X158328043Y-82335391D01* +X162058319Y-82335391D01* +X162155643Y-82609752D01* +X162304622Y-82859855D01* +X162499531Y-83076088D01* +X162732880Y-83250141D01* +X162995701Y-83375325D01* +X163142910Y-83419976D01* +X163372800Y-83298655D01* +X163372800Y-82105500D01* +X162178986Y-82105500D01* +X162058319Y-82335391D01* +X158328043Y-82335391D01* +X158328043Y-81522250D01* +X158316003Y-81400008D01* +X158280346Y-81282463D01* +X158265452Y-81254599D01* +X162210831Y-81254599D01* +X162155643Y-81347248D01* +X162058319Y-81621609D01* +X162178986Y-81851500D01* +X163372800Y-81851500D01* +X163372800Y-81831500D01* +X163626800Y-81831500D01* +X163626800Y-81851500D01* +X163646800Y-81851500D01* +X163646800Y-82105500D01* +X163626800Y-82105500D01* +X163626800Y-83298655D01* +X163856690Y-83419976D01* +X164003899Y-83375325D01* +X164266720Y-83250141D01* +X164500069Y-83076088D01* +X164694978Y-82859855D01* +X164843957Y-82609752D01* +X164901572Y-82447332D01* +X164948902Y-82561597D01* +X165083620Y-82763217D01* +X165255083Y-82934680D01* +X165456703Y-83069398D01* +X165680731Y-83162193D01* +X165918557Y-83209500D01* +X166161043Y-83209500D01* +X166398869Y-83162193D01* +X166622897Y-83069398D01* +X166824517Y-82934680D01* +X166995980Y-82763217D01* +X167130698Y-82561597D01* +X167223493Y-82337569D01* +X167270800Y-82099743D01* +X167270800Y-81857257D01* +X167223493Y-81619431D01* +X167130698Y-81395403D01* +X166995980Y-81193783D01* +X166824517Y-81022320D01* +X166622897Y-80887602D01* +X166398869Y-80794807D01* +X166161043Y-80747500D01* +X165918557Y-80747500D01* +X165680731Y-80794807D01* +X165630633Y-80815558D01* +X165321075Y-80506000D01* +X173457001Y-80506000D01* +X173457000Y-106798897D01* +X173403374Y-106669432D01* +X173224881Y-106402298D01* +X172997702Y-106175119D01* +X172730568Y-105996626D01* +X172433745Y-105873678D01* +X172118640Y-105811000D01* +X171797360Y-105811000D01* +X171482255Y-105873678D01* +X171185432Y-105996626D01* +X170918298Y-106175119D01* +X170691119Y-106402298D01* +X170521213Y-106656580D01* +X170486322Y-106591304D01* +X170438711Y-106533289D01* +X170380696Y-106485678D01* +X170314508Y-106450299D01* +X170242689Y-106428513D01* +X170168000Y-106421157D01* +X169875200Y-106421157D01* +X169875200Y-104670452D01* +X169877411Y-104648000D01* +X169875200Y-104625548D01* +X169875200Y-104625540D01* +X169868585Y-104558373D01* +X169842508Y-104472412D01* +X169842441Y-104472190D01* +X169799987Y-104392764D01* +X169757171Y-104340592D01* +X169757165Y-104340586D01* +X169742853Y-104323147D01* +X169725415Y-104308836D01* +X167386000Y-101969423D01* +X167386000Y-101918458D01* +X167361597Y-101795777D01* +X167313729Y-101680215D01* +X167244236Y-101576211D01* +X167166176Y-101498151D01* +X167242128Y-101422200D01* +X168723175Y-101422200D01* +X168759211Y-101458236D01* +X168863215Y-101527729D01* +X168978777Y-101575597D01* +X169101458Y-101600000D01* +X169226542Y-101600000D01* +X169349223Y-101575597D01* +X169464785Y-101527729D01* +X169568789Y-101458236D01* +X169657236Y-101369789D01* +X169726729Y-101265785D01* +X169774597Y-101150223D01* +X169799000Y-101027542D01* +X169799000Y-100902458D01* +X169774597Y-100779777D01* +X169726729Y-100664215D01* +X169657236Y-100560211D01* +X169568789Y-100471764D01* +X169464785Y-100402271D01* +X169349223Y-100354403D01* +X169226542Y-100330000D01* +X169101458Y-100330000D01* +X168978777Y-100354403D01* +X168863215Y-100402271D01* +X168759211Y-100471764D01* +X168723175Y-100507800D01* +X167075200Y-100507800D01* +X167052750Y-100505589D01* +X167030300Y-100507800D01* +X167030290Y-100507800D01* +X166963123Y-100514415D01* +X166876941Y-100540559D01* +X166797514Y-100583013D01* +X166727897Y-100640147D01* +X166713580Y-100657592D01* +X164188997Y-103182176D01* +X164171547Y-103196497D01* +X164114413Y-103266115D01* +X164071959Y-103345542D01* +X164045815Y-103431724D01* +X164039200Y-103498891D01* +X164039200Y-103498900D01* +X164036989Y-103521350D01* +X164039200Y-103543801D01* +X164039200Y-103572175D01* +X164003164Y-103608211D01* +X163933671Y-103712215D01* +X163885803Y-103827777D01* +X163861400Y-103950458D01* +X163861400Y-104075542D01* +X163885803Y-104198223D01* +X163933671Y-104313785D01* +X164003164Y-104417789D01* +X164091611Y-104506236D01* +X164195615Y-104575729D01* +X164311177Y-104623597D01* +X164433858Y-104648000D01* +X164558942Y-104648000D01* +X164681623Y-104623597D01* +X164797185Y-104575729D01* +X164901189Y-104506236D01* +X164989636Y-104417789D01* +X165059129Y-104313785D01* +X165106997Y-104198223D01* +X165131400Y-104075542D01* +X165131400Y-103950458D01* +X165106997Y-103827777D01* +X165059129Y-103712215D01* +X165016264Y-103648063D01* +X166268151Y-102396176D01* +X166346211Y-102474236D01* +X166450215Y-102543729D01* +X166565777Y-102591597D01* +X166688458Y-102616000D01* +X166739423Y-102616000D01* +X168960800Y-104837379D01* +X168960800Y-106421157D01* +X168668000Y-106421157D01* +X168593311Y-106428513D01* +X168521492Y-106450299D01* +X168455304Y-106485678D01* +X168397289Y-106533289D01* +X168349678Y-106591304D01* +X168314299Y-106657492D01* +X168292513Y-106729311D01* +X168285157Y-106804000D01* +X168285157Y-109594000D01* +X168010843Y-109594000D01* +X168010843Y-106804000D01* +X168003487Y-106729311D01* +X167981701Y-106657492D01* +X167946322Y-106591304D01* +X167903997Y-106539731D01* +X167948729Y-106472785D01* +X167996597Y-106357223D01* +X168021000Y-106234542D01* +X168021000Y-106109458D01* +X167996597Y-105986777D01* +X167948729Y-105871215D01* +X167879236Y-105767211D01* +X167790789Y-105678764D01* +X167686785Y-105609271D01* +X167571223Y-105561403D01* +X167448542Y-105537000D01* +X167323458Y-105537000D01* +X167200777Y-105561403D01* +X167085215Y-105609271D01* +X166981211Y-105678764D01* +X166892764Y-105767211D01* +X166823271Y-105871215D01* +X166775403Y-105986777D01* +X166751000Y-106109458D01* +X166751000Y-106160423D01* +X166570597Y-106340826D01* +X166553147Y-106355147D01* +X166498974Y-106421157D01* +X166128000Y-106421157D01* +X166053311Y-106428513D01* +X165981492Y-106450299D01* +X165915304Y-106485678D01* +X165857289Y-106533289D01* +X165809678Y-106591304D01* +X165774299Y-106657492D01* +X165752513Y-106729311D01* +X165745157Y-106804000D01* +X165745157Y-109594000D01* +X165726044Y-109594000D01* +X165723000Y-108489750D01* +X165564250Y-108331000D01* +X164465000Y-108331000D01* +X164465000Y-108351000D01* +X164211000Y-108351000D01* +X164211000Y-108331000D01* +X163111750Y-108331000D01* +X162953000Y-108489750D01* +X162949956Y-109594000D01* +X162930843Y-109594000D01* +X162930843Y-106804000D01* +X162949928Y-106804000D01* +X162953000Y-107918250D01* +X163111750Y-108077000D01* +X164211000Y-108077000D01* +X164211000Y-106327750D01* +X164465000Y-106327750D01* +X164465000Y-108077000D01* +X165564250Y-108077000D01* +X165723000Y-107918250D01* +X165726072Y-106804000D01* +X165713812Y-106679518D01* +X165677502Y-106559820D01* +X165618537Y-106449506D01* +X165539185Y-106352815D01* +X165442494Y-106273463D01* +X165332180Y-106214498D01* +X165212482Y-106178188D01* +X165088000Y-106165928D01* +X164623750Y-106169000D01* +X164465000Y-106327750D01* +X164211000Y-106327750D01* +X164052250Y-106169000D01* +X163588000Y-106165928D01* +X163463518Y-106178188D01* +X163343820Y-106214498D01* +X163233506Y-106273463D01* +X163136815Y-106352815D01* +X163057463Y-106449506D01* +X162998498Y-106559820D01* +X162962188Y-106679518D01* +X162949928Y-106804000D01* +X162930843Y-106804000D01* +X162923487Y-106729311D01* +X162901701Y-106657492D01* +X162866322Y-106591304D01* +X162818711Y-106533289D01* +X162760696Y-106485678D01* +X162694508Y-106450299D01* +X162622689Y-106428513D01* +X162548000Y-106421157D01* +X161723999Y-106421157D01* +X161723999Y-97183777D01* +X161909650Y-97182400D01* +X162068400Y-97023650D01* +X162068400Y-95874400D01* +X162322400Y-95874400D01* +X162322400Y-97023650D01* +X162481150Y-97182400D01* +X162895400Y-97185472D01* +X163019882Y-97173212D01* +X163139580Y-97136902D01* +X163249894Y-97077937D01* +X163346585Y-96998585D01* +X163425937Y-96901894D01* +X163484902Y-96791580D01* +X163521212Y-96671882D01* +X163533472Y-96547400D01* +X169257328Y-96547400D01* +X169269588Y-96671882D01* +X169305898Y-96791580D01* +X169364863Y-96901894D01* +X169444215Y-96998585D01* +X169540906Y-97077937D01* +X169651220Y-97136902D01* +X169770918Y-97173212D01* +X169895400Y-97185472D01* +X170309650Y-97182400D01* +X170468400Y-97023650D01* +X170468400Y-95874400D01* +X170722400Y-95874400D01* +X170722400Y-97023650D01* +X170881150Y-97182400D01* +X171295400Y-97185472D01* +X171419882Y-97173212D01* +X171539580Y-97136902D01* +X171649894Y-97077937D01* +X171746585Y-96998585D01* +X171825937Y-96901894D01* +X171884902Y-96791580D01* +X171921212Y-96671882D01* +X171933472Y-96547400D01* +X171930400Y-96033150D01* +X171771650Y-95874400D01* +X170722400Y-95874400D01* +X170468400Y-95874400D01* +X169419150Y-95874400D01* +X169260400Y-96033150D01* +X169257328Y-96547400D01* +X163533472Y-96547400D01* +X163530400Y-96033150D01* +X163371650Y-95874400D01* +X162322400Y-95874400D01* +X162068400Y-95874400D01* +X162048400Y-95874400D01* +X162048400Y-95620400D01* +X162068400Y-95620400D01* +X162068400Y-94471150D01* +X162322400Y-94471150D01* +X162322400Y-95620400D01* +X163371650Y-95620400D01* +X163530400Y-95461650D01* +X163533472Y-94947400D01* +X169257328Y-94947400D01* +X169260400Y-95461650D01* +X169419150Y-95620400D01* +X170468400Y-95620400D01* +X170468400Y-94471150D01* +X170722400Y-94471150D01* +X170722400Y-95620400D01* +X171771650Y-95620400D01* +X171930400Y-95461650D01* +X171933472Y-94947400D01* +X171921212Y-94822918D01* +X171884902Y-94703220D01* +X171825937Y-94592906D01* +X171746585Y-94496215D01* +X171649894Y-94416863D01* +X171539580Y-94357898D01* +X171419882Y-94321588D01* +X171295400Y-94309328D01* +X170881150Y-94312400D01* +X170722400Y-94471150D01* +X170468400Y-94471150D01* +X170309650Y-94312400D01* +X169895400Y-94309328D01* +X169770918Y-94321588D01* +X169651220Y-94357898D01* +X169540906Y-94416863D01* +X169444215Y-94496215D01* +X169364863Y-94592906D01* +X169305898Y-94703220D01* +X169269588Y-94822918D01* +X169257328Y-94947400D01* +X163533472Y-94947400D01* +X163521212Y-94822918D01* +X163484902Y-94703220D01* +X163425937Y-94592906D01* +X163346585Y-94496215D01* +X163249894Y-94416863D01* +X163139580Y-94357898D01* +X163019882Y-94321588D01* +X162895400Y-94309328D01* +X162481150Y-94312400D01* +X162322400Y-94471150D01* +X162068400Y-94471150D01* +X161909650Y-94312400D01* +X161723999Y-94311023D01* +X161723999Y-92430243D01* +X162895400Y-92430243D01* +X162970089Y-92422887D01* +X163041908Y-92401101D01* +X163108096Y-92365722D01* +X163166111Y-92318111D01* +X163213722Y-92260096D01* +X163249101Y-92193908D01* +X163270887Y-92122089D01* +X163278243Y-92047400D01* +X163278243Y-91704600D01* +X169512557Y-91704600D01* +X169512557Y-92047400D01* +X169519913Y-92122089D01* +X169541699Y-92193908D01* +X169577078Y-92260096D01* +X169624689Y-92318111D01* +X169682704Y-92365722D01* +X169748892Y-92401101D01* +X169820711Y-92422887D01* +X169895400Y-92430243D01* +X171295400Y-92430243D01* +X171370089Y-92422887D01* +X171441908Y-92401101D01* +X171508096Y-92365722D01* +X171566111Y-92318111D01* +X171613722Y-92260096D01* +X171649101Y-92193908D01* +X171670887Y-92122089D01* +X171678243Y-92047400D01* +X171678243Y-90447400D01* +X171670887Y-90372711D01* +X171649101Y-90300892D01* +X171613722Y-90234704D01* +X171566111Y-90176689D01* +X171508096Y-90129078D01* +X171441908Y-90093699D01* +X171370089Y-90071913D01* +X171295400Y-90064557D01* +X170059135Y-90064557D01* +X168044886Y-88050309D01* +X168030565Y-88032859D01* +X167960948Y-87975725D01* +X167881521Y-87933271D01* +X167795339Y-87907127D01* +X167728172Y-87900512D01* +X167728162Y-87900512D01* +X167705712Y-87898301D01* +X167683262Y-87900512D01* +X165337894Y-87900512D01* +X165354000Y-87819542D01* +X165354000Y-87768577D01* +X168887215Y-84235364D01* +X168904653Y-84221053D01* +X168918965Y-84203614D01* +X168918971Y-84203608D01* +X168961787Y-84151436D01* +X169004241Y-84072010D01* +X169010326Y-84051951D01* +X169030385Y-83985827D01* +X169037000Y-83918660D01* +X169037000Y-83918650D01* +X169039211Y-83896200D01* +X169037000Y-83873750D01* +X169037000Y-83211343D01* +X169429800Y-83211343D01* +X169504489Y-83203987D01* +X169576308Y-83182201D01* +X169642496Y-83146822D01* +X169700511Y-83099211D01* +X169748122Y-83041196D01* +X169783501Y-82975008D01* +X169805287Y-82903189D01* +X169812643Y-82828500D01* +X169812643Y-81128500D01* +X169805287Y-81053811D01* +X169783501Y-80981992D01* +X169748122Y-80915804D01* +X169700511Y-80857789D01* +X169642496Y-80810178D01* +X169576308Y-80774799D01* +X169504489Y-80753013D01* +X169429800Y-80745657D01* +X167729800Y-80745657D01* +X167655111Y-80753013D01* +X167583292Y-80774799D01* +X167517104Y-80810178D01* +X167459089Y-80857789D01* +X167411478Y-80915804D01* +X167376099Y-80981992D01* +X167354313Y-81053811D01* +X167346957Y-81128500D01* +X167346957Y-82828500D01* +X167354313Y-82903189D01* +X167376099Y-82975008D01* +X167411478Y-83041196D01* +X167459089Y-83099211D01* +X167517104Y-83146822D01* +X167583292Y-83182201D01* +X167655111Y-83203987D01* +X167729800Y-83211343D01* +X168122600Y-83211343D01* +X168122600Y-83706821D01* +X164707423Y-87122000D01* +X164656458Y-87122000D01* +X164533777Y-87146403D01* +X164418979Y-87193954D01* +X164361789Y-87136764D01* +X164257785Y-87067271D01* +X164142223Y-87019403D01* +X164019542Y-86995000D01* +X163894458Y-86995000D01* +X163771777Y-87019403D01* +X163656215Y-87067271D01* +X163552211Y-87136764D01* +X163463764Y-87225211D01* +X163394271Y-87329215D01* +X163346403Y-87444777D01* +X163322000Y-87567458D01* +X163322000Y-87692542D01* +X163346403Y-87815223D01* +X163394271Y-87930785D01* +X163463764Y-88034789D01* +X163506262Y-88077287D01* +X163506415Y-88078837D01* +X163524663Y-88138987D01* +X163532560Y-88165019D01* +X163572957Y-88240597D01* +X163575014Y-88244446D01* +X163632148Y-88314063D01* +X163649592Y-88328379D01* +X163986336Y-88665125D01* +X164000649Y-88682565D01* +X164018088Y-88696877D01* +X164018094Y-88696883D01* +X164070266Y-88739699D01* +X164149692Y-88782153D01* +X164235875Y-88808297D01* +X164303042Y-88814912D01* +X164303050Y-88814912D01* +X164325502Y-88817123D01* +X164347954Y-88814912D01* +X165548313Y-88814912D01* +X165548313Y-88902855D01* +X165572716Y-89025536D01* +X165620584Y-89141098D01* +X165629205Y-89154000D01* +X165545458Y-89154000D01* +X165422777Y-89178403D01* +X165307215Y-89226271D01* +X165203211Y-89295764D01* +X165167175Y-89331800D01* +X147059028Y-89331800D01* +X146827824Y-89100597D01* +X146813503Y-89083147D01* +X146743886Y-89026013D01* +X146664459Y-88983559D01* +X146578277Y-88957415D01* +X146511110Y-88950800D01* +X146511100Y-88950800D01* +X146488650Y-88948589D01* +X146466200Y-88950800D01* +X146363825Y-88950800D01* +X146327789Y-88914764D01* +X146223785Y-88845271D01* +X146108223Y-88797403D01* +X145985542Y-88773000D01* +X145860458Y-88773000D01* +X145737777Y-88797403D01* +X145622215Y-88845271D01* +X145518211Y-88914764D01* +X145429764Y-89003211D01* +X145360271Y-89107215D01* +X145312403Y-89222777D01* +X145288000Y-89345458D01* +X145288000Y-89470542D01* +X145312403Y-89593223D01* +X145360271Y-89708785D01* +X145429764Y-89812789D01* +X145518211Y-89901236D01* +X145622215Y-89970729D01* +X145737777Y-90018597D01* +X145774400Y-90025882D01* +X145774400Y-90105542D01* +X145798803Y-90228223D01* +X145846671Y-90343785D01* +X145916164Y-90447789D01* +X146004611Y-90536236D01* +X146108615Y-90605729D01* +X146224177Y-90653597D01* +X146346858Y-90678000D01* +X146397823Y-90678000D01* +X147340230Y-91620408D01* +X147354547Y-91637853D01* +X147371992Y-91652170D01* +X147424163Y-91694987D01* +X147446285Y-91706811D01* +X147503591Y-91737441D01* +X147589773Y-91763585D01* +X147656940Y-91770200D01* +X147656949Y-91770200D01* +X147679399Y-91772411D01* +X147701849Y-91770200D01* +X157293175Y-91770200D01* +X157329211Y-91806236D01* +X157433215Y-91875729D01* +X157548777Y-91923597D01* +X157671458Y-91948000D01* +X157796542Y-91948000D01* +X157919223Y-91923597D01* +X158034785Y-91875729D01* +X158138789Y-91806236D01* +X158227236Y-91717789D01* +X158296729Y-91613785D01* +X158344597Y-91498223D01* +X158369000Y-91375542D01* +X158369000Y-91250458D01* +X158344597Y-91127777D01* +X158296729Y-91012215D01* +X158227236Y-90908211D01* +X158138789Y-90819764D01* +X158034785Y-90750271D01* +X157919223Y-90702403D01* +X157796542Y-90678000D01* +X157671458Y-90678000D01* +X157548777Y-90702403D01* +X157433215Y-90750271D01* +X157329211Y-90819764D01* +X157293175Y-90855800D01* +X147868778Y-90855800D01* +X147259177Y-90246200D01* +X160809192Y-90246200D01* +X160807388Y-90264519D01* +X160809599Y-90286969D01* +X160809600Y-106506772D01* +X160777289Y-106533289D01* +X160729678Y-106591304D01* +X160694299Y-106657492D01* +X160672513Y-106729311D01* +X160665157Y-106804000D01* +X160665157Y-109594000D01* +X160390843Y-109594000D01* +X160390843Y-106804000D01* +X160383487Y-106729311D01* +X160361701Y-106657492D01* +X160326322Y-106591304D01* +X160278711Y-106533289D01* +X160220696Y-106485678D01* +X160154508Y-106450299D01* +X160082689Y-106428513D01* +X160008000Y-106421157D01* +X159791000Y-106421157D01* +X159791000Y-105563172D01* +X159793578Y-105536999D01* +X159791000Y-105510825D01* +X159783287Y-105432514D01* +X159752810Y-105332043D01* +X159703317Y-105239449D01* +X159636711Y-105158289D01* +X159616379Y-105141603D01* +X154545037Y-100070262D01* +X154534597Y-100017777D01* +X154486729Y-99902215D01* +X154417236Y-99798211D01* +X154328789Y-99709764D01* +X154224785Y-99640271D01* +X154109223Y-99592403D01* +X153986542Y-99568000D01* +X153861458Y-99568000D01* +X153738777Y-99592403D01* +X153623215Y-99640271D01* +X153519211Y-99709764D01* +X153430764Y-99798211D01* +X153361271Y-99902215D01* +X153313403Y-100017777D01* +X153289000Y-100140458D01* +X153289000Y-100265542D01* +X153313403Y-100388223D01* +X153361271Y-100503785D01* +X153430764Y-100607789D01* +X153519211Y-100696236D01* +X153623215Y-100765729D01* +X153738777Y-100813597D01* +X153791262Y-100824037D01* +X158725000Y-105757776D01* +X158725000Y-106421157D01* +X158508000Y-106421157D01* +X158433311Y-106428513D01* +X158361492Y-106450299D01* +X158295304Y-106485678D01* +X158237289Y-106533289D01* +X158189678Y-106591304D01* +X158154787Y-106656580D01* +X157984881Y-106402298D01* +X157757702Y-106175119D01* +X157490568Y-105996626D01* +X157193745Y-105873678D01* +X156878640Y-105811000D01* +X156557360Y-105811000D01* +X156242255Y-105873678D01* +X155945432Y-105996626D01* +X155678298Y-106175119D01* +X155451119Y-106402298D01* +X155272626Y-106669432D01* +X155149678Y-106966255D01* +X155087000Y-107281360D01* +X155087000Y-107602640D01* +X155149678Y-107917745D01* +X155272626Y-108214568D01* +X155451119Y-108481702D01* +X155678298Y-108708881D01* +X155945432Y-108887374D01* +X156242255Y-109010322D01* +X156557360Y-109073000D01* +X156878640Y-109073000D01* +X157193745Y-109010322D01* +X157490568Y-108887374D01* +X157757702Y-108708881D01* +X157984881Y-108481702D01* +X158125157Y-108271764D01* +X158125157Y-109594000D01* +X131342000Y-109594000D01* +X131342000Y-108045939D01* +X131368917Y-108096297D01* +X131514775Y-108274025D01* +X131692503Y-108419883D01* +X131895272Y-108528266D01* +X132115290Y-108595007D01* +X132344100Y-108617543D01* +X133924100Y-108617543D01* +X134152910Y-108595007D01* +X134372928Y-108528266D01* +X134575697Y-108419883D01* +X134753425Y-108274025D01* +X134899283Y-108096297D01* +X135007666Y-107893528D01* +X135074407Y-107673510D01* +X135083221Y-107584023D01* +X135096308Y-107619677D01* +X135322953Y-107990885D01* +X135617662Y-108310744D01* +X135969109Y-108566962D01* +X136363789Y-108749693D01* +X136622731Y-108818963D01* +X136967100Y-108707024D01* +X136967100Y-106311700D01* +X136947100Y-106311700D01* +X136947100Y-106057700D01* +X136967100Y-106057700D01* +X136967100Y-103662376D01* +X137221100Y-103662376D01* +X137221100Y-106057700D01* +X137241100Y-106057700D01* +X137241100Y-106311700D01* +X137221100Y-106311700D01* +X137221100Y-108707024D01* +X137565469Y-108818963D01* +X137824411Y-108749693D01* +X138219091Y-108566962D01* +X138570538Y-108310744D01* +X138865247Y-107990885D01* +X139091892Y-107619677D01* +X139204513Y-107312865D01* +X139233606Y-107408773D01* +X139415700Y-107749444D01* +X139660756Y-108048045D01* +X139959357Y-108293101D01* +X140300028Y-108475194D01* +X140669678Y-108587326D01* +X141054100Y-108625188D01* +X141438523Y-108587326D01* +X141808173Y-108475194D01* +X142148844Y-108293101D01* +X142447445Y-108048045D01* +X142692501Y-107749444D01* +X142874594Y-107408773D01* +X142986726Y-107039122D01* +X142994100Y-106964252D01* +X143001474Y-107039123D01* +X143113606Y-107408773D01* +X143295700Y-107749444D01* +X143540756Y-108048045D01* +X143839357Y-108293101D01* +X144180028Y-108475194D01* +X144549678Y-108587326D01* +X144934100Y-108625188D01* +X145318523Y-108587326D01* +X145688173Y-108475194D01* +X146028844Y-108293101D01* +X146327445Y-108048045D01* +X146572501Y-107749444D01* +X146754594Y-107408773D01* +X146866726Y-107039122D01* +X146895100Y-106751033D01* +X146895100Y-105618367D01* +X147013100Y-105618367D01* +X147013100Y-106751034D01* +X147041474Y-107039123D01* +X147153606Y-107408773D01* +X147335700Y-107749444D01* +X147580756Y-108048045D01* +X147879357Y-108293101D01* +X148220028Y-108475194D01* +X148589678Y-108587326D01* +X148974100Y-108625188D01* +X149358523Y-108587326D01* +X149728173Y-108475194D01* +X150068844Y-108293101D01* +X150367445Y-108048045D01* +X150612501Y-107749444D01* +X150794594Y-107408773D01* +X150906726Y-107039122D01* +X150935100Y-106751033D01* +X150935100Y-105618367D01* +X150973100Y-105618367D01* +X150973100Y-106751034D01* +X151001474Y-107039123D01* +X151113606Y-107408773D01* +X151295700Y-107749444D01* +X151540756Y-108048045D01* +X151839357Y-108293101D01* +X152180028Y-108475194D01* +X152549678Y-108587326D01* +X152934100Y-108625188D01* +X153318523Y-108587326D01* +X153688173Y-108475194D01* +X154028844Y-108293101D01* +X154327445Y-108048045D01* +X154572501Y-107749444D01* +X154754594Y-107408773D01* +X154866726Y-107039122D01* +X154895100Y-106751033D01* +X154895100Y-105618366D01* +X154866726Y-105330277D01* +X154754594Y-104960627D01* +X154572501Y-104619956D01* +X154327445Y-104321355D01* +X154028844Y-104076299D01* +X153688172Y-103894206D01* +X153318522Y-103782074D01* +X152934100Y-103744212D01* +X152549677Y-103782074D01* +X152180027Y-103894206D01* +X151839356Y-104076299D01* +X151540755Y-104321355D01* +X151295699Y-104619956D01* +X151113606Y-104960628D01* +X151001474Y-105330278D01* +X150973100Y-105618367D01* +X150935100Y-105618367D01* +X150935100Y-105618366D01* +X150906726Y-105330277D01* +X150794594Y-104960627D01* +X150612501Y-104619956D01* +X150367445Y-104321355D01* +X150068844Y-104076299D01* +X149728172Y-103894206D01* +X149358522Y-103782074D01* +X148974100Y-103744212D01* +X148589677Y-103782074D01* +X148220027Y-103894206D01* +X147879356Y-104076299D01* +X147580755Y-104321355D01* +X147335699Y-104619956D01* +X147153606Y-104960628D01* +X147041474Y-105330278D01* +X147013100Y-105618367D01* +X146895100Y-105618367D01* +X146895100Y-105618366D01* +X146866726Y-105330277D01* +X146754594Y-104960627D01* +X146572501Y-104619956D01* +X146327445Y-104321355D01* +X146028844Y-104076299D01* +X145688172Y-103894206D01* +X145318522Y-103782074D01* +X144934100Y-103744212D01* +X144549677Y-103782074D01* +X144180027Y-103894206D01* +X143839356Y-104076299D01* +X143540755Y-104321355D01* +X143295699Y-104619956D01* +X143113606Y-104960628D01* +X143001474Y-105330278D01* +X142994100Y-105405148D01* +X142986726Y-105330277D01* +X142874594Y-104960627D01* +X142692501Y-104619956D01* +X142447445Y-104321355D01* +X142148844Y-104076299D01* +X141808172Y-103894206D01* +X141438522Y-103782074D01* +X141054100Y-103744212D01* +X140669677Y-103782074D01* +X140300027Y-103894206D01* +X139959356Y-104076299D01* +X139660755Y-104321355D01* +X139415699Y-104619956D01* +X139233606Y-104960628D01* +X139204513Y-105056535D01* +X139091892Y-104749723D01* +X138865247Y-104378515D01* +X138570538Y-104058656D01* +X138219091Y-103802438D01* +X137824411Y-103619707D01* +X137565469Y-103550437D01* +X137221100Y-103662376D01* +X136967100Y-103662376D01* +X136622731Y-103550437D01* +X136363789Y-103619707D01* +X135969109Y-103802438D01* +X135617662Y-104058656D01* +X135322953Y-104378515D01* +X135096308Y-104749723D01* +X135083221Y-104785377D01* +X135074407Y-104695890D01* +X135007666Y-104475872D01* +X134899283Y-104273103D01* +X134753425Y-104095375D01* +X134575697Y-103949517D01* +X134372928Y-103841134D01* +X134152910Y-103774393D01* +X133924100Y-103751857D01* +X132344100Y-103751857D01* +X132115290Y-103774393D01* +X131895272Y-103841134D01* +X131692503Y-103949517D01* +X131514775Y-104095375D01* +X131368917Y-104273103D01* +X131342000Y-104323461D01* +X131342000Y-84732182D01* +X131436093Y-84771157D01* +X131583310Y-84800440D01* +X131733410Y-84800440D01* +X131880627Y-84771157D01* +X132019302Y-84713716D01* +X132144107Y-84630324D01* +X132250244Y-84524187D01* +X132333636Y-84399382D01* +X132391077Y-84260707D01* +X132420360Y-84113490D01* +X132420360Y-83963390D01* +X132391077Y-83816173D01* +X132333636Y-83677498D01* +X132250244Y-83552693D01* +X132144107Y-83446556D01* +X132019302Y-83363164D01* +X131880627Y-83305723D01* +X131733410Y-83276440D01* +X131583310Y-83276440D01* +X131436093Y-83305723D01* +X131342000Y-83344698D01* +X131342000Y-80506000D01* +X134306799Y-80506000D01* +X133887993Y-80924807D01* +G37* +G04 #@! TD.AperFunction* +M02* diff --git a/hw/v1/gerbers/v1-F_Mask.gbr b/hw/v1/gerbers/v1-F_Mask.gbr new file mode 100644 index 0000000..83d0563 --- /dev/null +++ b/hw/v1/gerbers/v1-F_Mask.gbr @@ -0,0 +1,540 @@ +G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.8-0-10_14)* +G04 #@! TF.CreationDate,2021-03-05T16:46:23-05:00* +G04 #@! TF.ProjectId,v1,76312e6b-6963-4616-945f-706362585858,rev?* +G04 #@! TF.SameCoordinates,Original* +G04 #@! TF.FileFunction,Soldermask,Top* +G04 #@! TF.FilePolarity,Negative* +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.8-0-10_14)) date 2021-03-05 16:46:23* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%ADD10O,1.801600X1.801600*% +%ADD11O,3.261600X4.201600*% +%ADD12C,0.863600*% +%ADD13C,0.100000*% +G04 APERTURE END LIST* +G36* +G01* +X158457200Y-109604000D02* +X158457200Y-106804000D01* +G75* +G02* +X158508000Y-106753200I50800J0D01* +G01* +X160008000Y-106753200D01* +G75* +G02* +X160058800Y-106804000I0J-50800D01* +G01* +X160058800Y-109604000D01* +G75* +G02* +X160008000Y-109654800I-50800J0D01* +G01* +X158508000Y-109654800D01* +G75* +G02* +X158457200Y-109604000I0J50800D01* +G01* +G37* +G36* +G01* +X160997200Y-109604000D02* +X160997200Y-106804000D01* +G75* +G02* +X161048000Y-106753200I50800J0D01* +G01* +X162548000Y-106753200D01* +G75* +G02* +X162598800Y-106804000I0J-50800D01* +G01* +X162598800Y-109604000D01* +G75* +G02* +X162548000Y-109654800I-50800J0D01* +G01* +X161048000Y-109654800D01* +G75* +G02* +X160997200Y-109604000I0J50800D01* +G01* +G37* +G36* +G01* +X163537200Y-109604000D02* +X163537200Y-106804000D01* +G75* +G02* +X163588000Y-106753200I50800J0D01* +G01* +X165088000Y-106753200D01* +G75* +G02* +X165138800Y-106804000I0J-50800D01* +G01* +X165138800Y-109604000D01* +G75* +G02* +X165088000Y-109654800I-50800J0D01* +G01* +X163588000Y-109654800D01* +G75* +G02* +X163537200Y-109604000I0J50800D01* +G01* +G37* +G36* +G01* +X166077200Y-109604000D02* +X166077200Y-106804000D01* +G75* +G02* +X166128000Y-106753200I50800J0D01* +G01* +X167628000Y-106753200D01* +G75* +G02* +X167678800Y-106804000I0J-50800D01* +G01* +X167678800Y-109604000D01* +G75* +G02* +X167628000Y-109654800I-50800J0D01* +G01* +X166128000Y-109654800D01* +G75* +G02* +X166077200Y-109604000I0J50800D01* +G01* +G37* +G36* +G01* +X168617200Y-109604000D02* +X168617200Y-106804000D01* +G75* +G02* +X168668000Y-106753200I50800J0D01* +G01* +X170168000Y-106753200D01* +G75* +G02* +X170218800Y-106804000I0J-50800D01* +G01* +X170218800Y-109604000D01* +G75* +G02* +X170168000Y-109654800I-50800J0D01* +G01* +X168668000Y-109654800D01* +G75* +G02* +X168617200Y-109604000I0J50800D01* +G01* +G37* +G36* +G01* +X169844600Y-96547400D02* +X169844600Y-94947400D01* +G75* +G02* +X169895400Y-94896600I50800J0D01* +G01* +X171295400Y-94896600D01* +G75* +G02* +X171346200Y-94947400I0J-50800D01* +G01* +X171346200Y-96547400D01* +G75* +G02* +X171295400Y-96598200I-50800J0D01* +G01* +X169895400Y-96598200D01* +G75* +G02* +X169844600Y-96547400I0J50800D01* +G01* +G37* +G36* +G01* +X169844600Y-92047400D02* +X169844600Y-90447400D01* +G75* +G02* +X169895400Y-90396600I50800J0D01* +G01* +X171295400Y-90396600D01* +G75* +G02* +X171346200Y-90447400I0J-50800D01* +G01* +X171346200Y-92047400D01* +G75* +G02* +X171295400Y-92098200I-50800J0D01* +G01* +X169895400Y-92098200D01* +G75* +G02* +X169844600Y-92047400I0J50800D01* +G01* +G37* +G36* +G01* +X161444600Y-92047400D02* +X161444600Y-90447400D01* +G75* +G02* +X161495400Y-90396600I50800J0D01* +G01* +X162895400Y-90396600D01* +G75* +G02* +X162946200Y-90447400I0J-50800D01* +G01* +X162946200Y-92047400D01* +G75* +G02* +X162895400Y-92098200I-50800J0D01* +G01* +X161495400Y-92098200D01* +G75* +G02* +X161444600Y-92047400I0J50800D01* +G01* +G37* +G36* +G01* +X161444600Y-96547400D02* +X161444600Y-94947400D01* +G75* +G02* +X161495400Y-94896600I50800J0D01* +G01* +X162895400Y-94896600D01* +G75* +G02* +X162946200Y-94947400I0J-50800D01* +G01* +X162946200Y-96547400D01* +G75* +G02* +X162895400Y-96598200I-50800J0D01* +G01* +X161495400Y-96598200D01* +G75* +G02* +X161444600Y-96547400I0J50800D01* +G01* +G37* +D10* +X163499800Y-81978500D03* +X166039800Y-81978500D03* +G36* +G01* +X167729800Y-81077700D02* +X169429800Y-81077700D01* +G75* +G02* +X169480600Y-81128500I0J-50800D01* +G01* +X169480600Y-82828500D01* +G75* +G02* +X169429800Y-82879300I-50800J0D01* +G01* +X167729800Y-82879300D01* +G75* +G02* +X167679000Y-82828500I0J50800D01* +G01* +X167679000Y-81128500D01* +G75* +G02* +X167729800Y-81077700I50800J0D01* +G01* +G37* +G36* +G01* +X131503300Y-107470100D02* +X131503300Y-104899300D01* +G75* +G02* +X132318700Y-104083900I815400J0D01* +G01* +X133949500Y-104083900D01* +G75* +G02* +X134764900Y-104899300I0J-815400D01* +G01* +X134764900Y-107470100D01* +G75* +G02* +X133949500Y-108285500I-815400J0D01* +G01* +X132318700Y-108285500D01* +G75* +G02* +X131503300Y-107470100I0J815400D01* +G01* +G37* +D11* +X137094100Y-106184700D03* +X141054100Y-106184700D03* +X144934100Y-106184700D03* +X148974100Y-106184700D03* +X152934100Y-106184700D03* +G36* +G01* +X135979875Y-81518350D02* +X135979875Y-82481650D01* +G75* +G02* +X135710725Y-82750800I-269150J0D01* +G01* +X135172425Y-82750800D01* +G75* +G02* +X134903275Y-82481650I0J269150D01* +G01* +X134903275Y-81518350D01* +G75* +G02* +X135172425Y-81249200I269150J0D01* +G01* +X135710725Y-81249200D01* +G75* +G02* +X135979875Y-81518350I0J-269150D01* +G01* +G37* +G36* +G01* +X134104875Y-81518350D02* +X134104875Y-82481650D01* +G75* +G02* +X133835725Y-82750800I-269150J0D01* +G01* +X133297425Y-82750800D01* +G75* +G02* +X133028275Y-82481650I0J269150D01* +G01* +X133028275Y-81518350D01* +G75* +G02* +X133297425Y-81249200I269150J0D01* +G01* +X133835725Y-81249200D01* +G75* +G02* +X134104875Y-81518350I0J-269150D01* +G01* +G37* +G36* +G01* +X157996000Y-81496850D02* +X157996000Y-82460150D01* +G75* +G02* +X157726850Y-82729300I-269150J0D01* +G01* +X157188550Y-82729300D01* +G75* +G02* +X156919400Y-82460150I0J269150D01* +G01* +X156919400Y-81496850D01* +G75* +G02* +X157188550Y-81227700I269150J0D01* +G01* +X157726850Y-81227700D01* +G75* +G02* +X157996000Y-81496850I0J-269150D01* +G01* +G37* +G36* +G01* +X156121000Y-81496850D02* +X156121000Y-82460150D01* +G75* +G02* +X155851850Y-82729300I-269150J0D01* +G01* +X155313550Y-82729300D01* +G75* +G02* +X155044400Y-82460150I0J269150D01* +G01* +X155044400Y-81496850D01* +G75* +G02* +X155313550Y-81227700I269150J0D01* +G01* +X155851850Y-81227700D01* +G75* +G02* +X156121000Y-81496850I0J-269150D01* +G01* +G37* +D12* +X131658360Y-84038440D03* +X134411720Y-84040980D03* +D13* +G36* +X131505290Y-107469904D02* +G01* +X131520938Y-107628782D01* +X131567226Y-107781371D01* +X131642391Y-107921996D01* +X131743546Y-108045254D01* +X131866804Y-108146409D01* +X132007429Y-108221574D01* +X132160018Y-108267862D01* +X132318896Y-108283510D01* +X132320522Y-108284675D01* +X132320326Y-108286665D01* +X132318700Y-108287500D01* +X132262340Y-108287500D01* +X132262144Y-108287490D01* +X132109240Y-108272430D01* +X132108855Y-108272354D01* +X131967726Y-108229543D01* +X131967364Y-108229393D01* +X131837305Y-108159875D01* +X131836979Y-108159657D01* +X131722978Y-108066099D01* +X131722701Y-108065822D01* +X131629143Y-107951821D01* +X131628925Y-107951495D01* +X131559407Y-107821436D01* +X131559257Y-107821074D01* +X131516446Y-107679945D01* +X131516370Y-107679560D01* +X131501310Y-107526656D01* +X131501300Y-107526460D01* +X131501300Y-107470100D01* +X131502300Y-107468368D01* +X131504300Y-107468368D01* +X131505290Y-107469904D01* +G37* +G36* +X134766065Y-107468474D02* +G01* +X134766900Y-107470100D01* +X134766900Y-107526460D01* +X134766890Y-107526656D01* +X134751830Y-107679560D01* +X134751754Y-107679945D01* +X134708943Y-107821074D01* +X134708793Y-107821436D01* +X134639275Y-107951495D01* +X134639057Y-107951821D01* +X134545499Y-108065822D01* +X134545222Y-108066099D01* +X134431221Y-108159657D01* +X134430895Y-108159875D01* +X134300836Y-108229393D01* +X134300474Y-108229543D01* +X134159345Y-108272354D01* +X134158960Y-108272430D01* +X134006056Y-108287490D01* +X134005860Y-108287500D01* +X133949500Y-108287500D01* +X133947768Y-108286500D01* +X133947768Y-108284500D01* +X133949304Y-108283510D01* +X134108182Y-108267862D01* +X134260771Y-108221574D01* +X134401396Y-108146409D01* +X134524654Y-108045254D01* +X134625809Y-107921996D01* +X134700974Y-107781371D01* +X134747262Y-107628782D01* +X134762910Y-107469904D01* +X134764075Y-107468278D01* +X134766065Y-107468474D01* +G37* +G36* +X132320432Y-104082900D02* +G01* +X132320432Y-104084900D01* +X132318896Y-104085890D01* +X132160018Y-104101538D01* +X132007429Y-104147826D01* +X131866804Y-104222991D01* +X131743546Y-104324146D01* +X131642391Y-104447404D01* +X131567226Y-104588029D01* +X131520938Y-104740618D01* +X131505290Y-104899496D01* +X131504125Y-104901122D01* +X131502135Y-104900926D01* +X131501300Y-104899300D01* +X131501300Y-104842940D01* +X131501310Y-104842744D01* +X131516370Y-104689840D01* +X131516446Y-104689455D01* +X131559257Y-104548326D01* +X131559407Y-104547964D01* +X131628925Y-104417905D01* +X131629143Y-104417579D01* +X131722701Y-104303578D01* +X131722978Y-104303301D01* +X131836979Y-104209743D01* +X131837305Y-104209525D01* +X131967364Y-104140007D01* +X131967726Y-104139857D01* +X132108855Y-104097046D01* +X132109240Y-104096970D01* +X132262144Y-104081910D01* +X132262340Y-104081900D01* +X132318700Y-104081900D01* +X132320432Y-104082900D01* +G37* +G36* +X134006056Y-104081910D02* +G01* +X134158960Y-104096970D01* +X134159345Y-104097046D01* +X134300474Y-104139857D01* +X134300836Y-104140007D01* +X134430895Y-104209525D01* +X134431221Y-104209743D01* +X134545222Y-104303301D01* +X134545499Y-104303578D01* +X134639057Y-104417579D01* +X134639275Y-104417905D01* +X134708793Y-104547964D01* +X134708943Y-104548326D01* +X134751754Y-104689455D01* +X134751830Y-104689840D01* +X134766890Y-104842744D01* +X134766900Y-104842940D01* +X134766900Y-104899300D01* +X134765900Y-104901032D01* +X134763900Y-104901032D01* +X134762910Y-104899496D01* +X134747262Y-104740618D01* +X134700974Y-104588029D01* +X134625809Y-104447404D01* +X134524654Y-104324146D01* +X134401396Y-104222991D01* +X134260771Y-104147826D01* +X134108182Y-104101538D01* +X133949304Y-104085890D01* +X133947678Y-104084725D01* +X133947874Y-104082735D01* +X133949500Y-104081900D01* +X134005860Y-104081900D01* +X134006056Y-104081910D01* +G37* +M02* diff --git a/hw/v1/gerbers/v1-F_Paste.gbr b/hw/v1/gerbers/v1-F_Paste.gbr new file mode 100644 index 0000000..459381f --- /dev/null +++ b/hw/v1/gerbers/v1-F_Paste.gbr @@ -0,0 +1,117 @@ +G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.8-0-10_14)* +G04 #@! TF.CreationDate,2021-03-05T16:46:23-05:00* +G04 #@! TF.ProjectId,v1,76312e6b-6963-4616-945f-706362585858,rev?* +G04 #@! TF.SameCoordinates,Original* +G04 #@! TF.FileFunction,Paste,Top* +G04 #@! TF.FilePolarity,Positive* +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.8-0-10_14)) date 2021-03-05 16:46:23* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%ADD10R,1.360000X1.560000*% +G04 APERTURE END LIST* +D10* +X170595400Y-95747400D03* +X170595400Y-91247400D03* +X162195400Y-91247400D03* +X162195400Y-95747400D03* +G36* +G01* +X135909075Y-81553750D02* +X135909075Y-82446250D01* +G75* +G02* +X135675325Y-82680000I-233750J0D01* +G01* +X135207825Y-82680000D01* +G75* +G02* +X134974075Y-82446250I0J233750D01* +G01* +X134974075Y-81553750D01* +G75* +G02* +X135207825Y-81320000I233750J0D01* +G01* +X135675325Y-81320000D01* +G75* +G02* +X135909075Y-81553750I0J-233750D01* +G01* +G37* +G36* +G01* +X134034075Y-81553750D02* +X134034075Y-82446250D01* +G75* +G02* +X133800325Y-82680000I-233750J0D01* +G01* +X133332825Y-82680000D01* +G75* +G02* +X133099075Y-82446250I0J233750D01* +G01* +X133099075Y-81553750D01* +G75* +G02* +X133332825Y-81320000I233750J0D01* +G01* +X133800325Y-81320000D01* +G75* +G02* +X134034075Y-81553750I0J-233750D01* +G01* +G37* +G36* +G01* +X157925200Y-81532250D02* +X157925200Y-82424750D01* +G75* +G02* +X157691450Y-82658500I-233750J0D01* +G01* +X157223950Y-82658500D01* +G75* +G02* +X156990200Y-82424750I0J233750D01* +G01* +X156990200Y-81532250D01* +G75* +G02* +X157223950Y-81298500I233750J0D01* +G01* +X157691450Y-81298500D01* +G75* +G02* +X157925200Y-81532250I0J-233750D01* +G01* +G37* +G36* +G01* +X156050200Y-81532250D02* +X156050200Y-82424750D01* +G75* +G02* +X155816450Y-82658500I-233750J0D01* +G01* +X155348950Y-82658500D01* +G75* +G02* +X155115200Y-82424750I0J233750D01* +G01* +X155115200Y-81532250D01* +G75* +G02* +X155348950Y-81298500I233750J0D01* +G01* +X155816450Y-81298500D01* +G75* +G02* +X156050200Y-81532250I0J-233750D01* +G01* +G37* +M02* diff --git a/hw/v1/gerbers/v1-F_SilkS.gbr b/hw/v1/gerbers/v1-F_SilkS.gbr new file mode 100644 index 0000000..ad8a602 --- /dev/null +++ b/hw/v1/gerbers/v1-F_SilkS.gbr @@ -0,0 +1,360 @@ +G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.8-0-10_14)* +G04 #@! TF.CreationDate,2021-03-05T16:46:23-05:00* +G04 #@! TF.ProjectId,v1,76312e6b-6963-4616-945f-706362585858,rev?* +G04 #@! TF.SameCoordinates,Original* +G04 #@! TF.FileFunction,Legend,Top* +G04 #@! TF.FilePolarity,Positive* +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.8-0-10_14)) date 2021-03-05 16:46:23* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%ADD10C,0.112500*% +%ADD11C,0.120000*% +G04 APERTURE END LIST* +D10* +X152627857Y-108621580D02* +X152885000Y-108621580D01* +X152756428Y-109621580D02* +X152756428Y-108621580D01* +X153035000Y-109240628D02* +X153377857Y-109240628D01* +X148629897Y-108621580D02* +X148887040Y-108621580D01* +X148758468Y-109621580D02* +X148758468Y-108621580D01* +X149037040Y-109240628D02* +X149379897Y-109240628D01* +X149208468Y-109621580D02* +X149208468Y-108859676D01* +X144256937Y-109573961D02* +X144321222Y-109621580D01* +X144428365Y-109621580D01* +X144471222Y-109573961D01* +X144492651Y-109526342D01* +X144514080Y-109431104D01* +X144514080Y-109335866D01* +X144492651Y-109240628D01* +X144471222Y-109193009D01* +X144428365Y-109145390D01* +X144342651Y-109097771D01* +X144299794Y-109050152D01* +X144278365Y-109002533D01* +X144256937Y-108907295D01* +X144256937Y-108812057D01* +X144278365Y-108716819D01* +X144299794Y-108669200D01* +X144342651Y-108621580D01* +X144449794Y-108621580D01* +X144514080Y-108669200D01* +X144685508Y-109573961D02* +X144749794Y-109621580D01* +X144856937Y-109621580D01* +X144899794Y-109573961D01* +X144921222Y-109526342D01* +X144942651Y-109431104D01* +X144942651Y-109335866D01* +X144921222Y-109240628D01* +X144899794Y-109193009D01* +X144856937Y-109145390D01* +X144771222Y-109097771D01* +X144728365Y-109050152D01* +X144706937Y-109002533D01* +X144685508Y-108907295D01* +X144685508Y-108812057D01* +X144706937Y-108716819D01* +X144728365Y-108669200D01* +X144771222Y-108621580D01* +X144878365Y-108621580D01* +X144942651Y-108669200D01* +X145392651Y-109621580D02* +X145242651Y-109145390D01* +X145135508Y-109621580D02* +X145135508Y-108621580D01* +X145306937Y-108621580D01* +X145349794Y-108669200D01* +X145371222Y-108716819D01* +X145392651Y-108812057D01* +X145392651Y-108954914D01* +X145371222Y-109050152D01* +X145349794Y-109097771D01* +X145306937Y-109145390D01* +X145135508Y-109145390D01* +X145821222Y-109621580D02* +X145564080Y-109621580D01* +X145692651Y-109621580D02* +X145692651Y-108621580D01* +X145649794Y-108764438D01* +X145606937Y-108859676D01* +X145564080Y-108907295D01* +X140258977Y-109573961D02* +X140323262Y-109621580D01* +X140430405Y-109621580D01* +X140473262Y-109573961D01* +X140494691Y-109526342D01* +X140516120Y-109431104D01* +X140516120Y-109335866D01* +X140494691Y-109240628D01* +X140473262Y-109193009D01* +X140430405Y-109145390D01* +X140344691Y-109097771D01* +X140301834Y-109050152D01* +X140280405Y-109002533D01* +X140258977Y-108907295D01* +X140258977Y-108812057D01* +X140280405Y-108716819D01* +X140301834Y-108669200D01* +X140344691Y-108621580D01* +X140451834Y-108621580D01* +X140516120Y-108669200D01* +X140687548Y-109573961D02* +X140751834Y-109621580D01* +X140858977Y-109621580D01* +X140901834Y-109573961D01* +X140923262Y-109526342D01* +X140944691Y-109431104D01* +X140944691Y-109335866D01* +X140923262Y-109240628D01* +X140901834Y-109193009D01* +X140858977Y-109145390D01* +X140773262Y-109097771D01* +X140730405Y-109050152D01* +X140708977Y-109002533D01* +X140687548Y-108907295D01* +X140687548Y-108812057D01* +X140708977Y-108716819D01* +X140730405Y-108669200D01* +X140773262Y-108621580D01* +X140880405Y-108621580D01* +X140944691Y-108669200D01* +X141394691Y-109621580D02* +X141244691Y-109145390D01* +X141137548Y-109621580D02* +X141137548Y-108621580D01* +X141308977Y-108621580D01* +X141351834Y-108669200D01* +X141373262Y-108716819D01* +X141394691Y-108812057D01* +X141394691Y-108954914D01* +X141373262Y-109050152D01* +X141351834Y-109097771D01* +X141308977Y-109145390D01* +X141137548Y-109145390D01* +X141673262Y-108621580D02* +X141716120Y-108621580D01* +X141758977Y-108669200D01* +X141780405Y-108716819D01* +X141801834Y-108812057D01* +X141823262Y-109002533D01* +X141823262Y-109240628D01* +X141801834Y-109431104D01* +X141780405Y-109526342D01* +X141758977Y-109573961D01* +X141716120Y-109621580D01* +X141673262Y-109621580D01* +X141630405Y-109573961D01* +X141608977Y-109526342D01* +X141587548Y-109431104D01* +X141566120Y-109240628D01* +X141566120Y-109002533D01* +X141587548Y-108812057D01* +X141608977Y-108716819D01* +X141630405Y-108669200D01* +X141673262Y-108621580D01* +X136700302Y-108669200D02* +X136657445Y-108621580D01* +X136593160Y-108621580D01* +X136528874Y-108669200D01* +X136486017Y-108764438D01* +X136464588Y-108859676D01* +X136443160Y-109050152D01* +X136443160Y-109193009D01* +X136464588Y-109383485D01* +X136486017Y-109478723D01* +X136528874Y-109573961D01* +X136593160Y-109621580D01* +X136636017Y-109621580D01* +X136700302Y-109573961D01* +X136721731Y-109526342D01* +X136721731Y-109193009D01* +X136636017Y-109193009D01* +X136914588Y-109621580D02* +X136914588Y-108621580D01* +X137171731Y-109621580D01* +X137171731Y-108621580D01* +X137386017Y-109621580D02* +X137386017Y-108621580D01* +X137493160Y-108621580D01* +X137557445Y-108669200D01* +X137600302Y-108764438D01* +X137621731Y-108859676D01* +X137643160Y-109050152D01* +X137643160Y-109193009D01* +X137621731Y-109383485D01* +X137600302Y-109478723D01* +X137557445Y-109573961D01* +X137493160Y-109621580D01* +X137386017Y-109621580D01* +X132552342Y-108621580D02* +X132702342Y-109621580D01* +X132852342Y-108621580D01* +X133002342Y-109621580D02* +X133002342Y-108621580D01* +X133216628Y-109621580D02* +X133216628Y-108621580D01* +X133473771Y-109621580D01* +X133473771Y-108621580D01* +D11* +X169625400Y-90267400D02* +X169625400Y-90297400D01* +X169625400Y-96727400D02* +X169625400Y-96697400D01* +X163165400Y-96727400D02* +X163165400Y-96697400D01* +X163165400Y-90297400D02* +X163165400Y-90267400D01* +X169625400Y-92197400D02* +X169625400Y-94797400D01* +X163165400Y-90267400D02* +X169625400Y-90267400D01* +X163165400Y-92197400D02* +X163165400Y-94797400D01* +X163165400Y-96727400D02* +X169625400Y-96727400D01* +X169909800Y-80648500D02* +X169909800Y-81978500D01* +X168579800Y-80648500D02* +X169909800Y-80648500D01* +X167309800Y-80648500D02* +X167309800Y-83308500D01* +X167309800Y-83308500D02* +X162169800Y-83308500D01* +X167309800Y-80648500D02* +X162169800Y-80648500D01* +X162169800Y-80648500D02* +X162169800Y-83308500D01* +X133504075Y-82960000D02* +X136189075Y-82960000D01* +X136189075Y-82960000D02* +X136189075Y-81040000D01* +X136189075Y-81040000D02* +X133504075Y-81040000D01* +X155520200Y-82938500D02* +X158205200Y-82938500D01* +X158205200Y-82938500D02* +X158205200Y-81018500D01* +X158205200Y-81018500D02* +X155520200Y-81018500D01* +D10* +X165575800Y-93740942D02* +X165640085Y-93762371D01* +X165747228Y-93762371D01* +X165790085Y-93740942D01* +X165811514Y-93719514D01* +X165832942Y-93676657D01* +X165832942Y-93633800D01* +X165811514Y-93590942D01* +X165790085Y-93569514D01* +X165747228Y-93548085D01* +X165661514Y-93526657D01* +X165618657Y-93505228D01* +X165597228Y-93483800D01* +X165575800Y-93440942D01* +X165575800Y-93398085D01* +X165597228Y-93355228D01* +X165618657Y-93333800D01* +X165661514Y-93312371D01* +X165768657Y-93312371D01* +X165832942Y-93333800D01* +X165982942Y-93312371D02* +X166090085Y-93762371D01* +X166175800Y-93440942D01* +X166261514Y-93762371D01* +X166368657Y-93312371D01* +X166518657Y-93355228D02* +X166540085Y-93333800D01* +X166582942Y-93312371D01* +X166690085Y-93312371D01* +X166732942Y-93333800D01* +X166754371Y-93355228D01* +X166775800Y-93398085D01* +X166775800Y-93440942D01* +X166754371Y-93505228D01* +X166497228Y-93762371D01* +X166775800Y-93762371D01* +X169674400Y-83167171D02* +X169674400Y-83488600D01* +X169652971Y-83552885D01* +X169610114Y-83595742D01* +X169545828Y-83617171D01* +X169502971Y-83617171D01* +X170102971Y-83167171D02* +X169888685Y-83167171D01* +X169867257Y-83381457D01* +X169888685Y-83360028D01* +X169931542Y-83338600D01* +X170038685Y-83338600D01* +X170081542Y-83360028D01* +X170102971Y-83381457D01* +X170124400Y-83424314D01* +X170124400Y-83531457D01* +X170102971Y-83574314D01* +X170081542Y-83595742D01* +X170038685Y-83617171D01* +X169931542Y-83617171D01* +X169888685Y-83595742D01* +X169867257Y-83574314D01* +X134747371Y-82348742D02* +X134297371Y-82348742D01* +X134297371Y-82241600D01* +X134318800Y-82177314D01* +X134361657Y-82134457D01* +X134404514Y-82113028D01* +X134490228Y-82091600D01* +X134554514Y-82091600D01* +X134640228Y-82113028D01* +X134683085Y-82134457D01* +X134725942Y-82177314D01* +X134747371Y-82241600D01* +X134747371Y-82348742D01* +X134297371Y-81941600D02* +X134297371Y-81663028D01* +X134468800Y-81813028D01* +X134468800Y-81748742D01* +X134490228Y-81705885D01* +X134511657Y-81684457D01* +X134554514Y-81663028D01* +X134661657Y-81663028D01* +X134704514Y-81684457D01* +X134725942Y-81705885D01* +X134747371Y-81748742D01* +X134747371Y-81877314D01* +X134725942Y-81920171D01* +X134704514Y-81941600D01* +X156769171Y-82323342D02* +X156319171Y-82323342D01* +X156319171Y-82216200D01* +X156340600Y-82151914D01* +X156383457Y-82109057D01* +X156426314Y-82087628D01* +X156512028Y-82066200D01* +X156576314Y-82066200D01* +X156662028Y-82087628D01* +X156704885Y-82109057D01* +X156747742Y-82151914D01* +X156769171Y-82216200D01* +X156769171Y-82323342D01* +X156362028Y-81894771D02* +X156340600Y-81873342D01* +X156319171Y-81830485D01* +X156319171Y-81723342D01* +X156340600Y-81680485D01* +X156362028Y-81659057D01* +X156404885Y-81637628D01* +X156447742Y-81637628D01* +X156512028Y-81659057D01* +X156769171Y-81916200D01* +X156769171Y-81637628D01* +M02* diff --git a/hw/v1/gerbers/v1.drl b/hw/v1/gerbers/v1.drl new file mode 100644 index 0000000..5fc8e39 --- /dev/null +++ b/hw/v1/gerbers/v1.drl @@ -0,0 +1,69 @@ +M48 +; DRILL file {KiCad (5.1.8)-1} date 02/15/21 15:13:32 +; FORMAT={-:-/ absolute / inch / decimal} +; #@! TF.CreationDate,2021-02-15T15:13:32-05:00 +; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.1.8)-1 +FMAT,2 +INCH +T1C0.0100 +T2C0.0300 +T3C0.0394 +T4C0.0669 +T5C0.0984 +% +G90 +G05 +T1 +X5.225Y-3.88 +X5.31Y-3.41 +X5.31Y-3.495 +X5.42Y-3.2 +X5.42Y-3.27 +X5.422Y-3.729 +X5.51Y-4.04 +X5.645Y-3.92 +X5.745Y-3.52 +X5.7641Y-3.545 +X5.79Y-3.92 +X5.86Y-3.51 +X6.06Y-3.945 +X6.07Y-3.225 +X6.115Y-3.8 +X6.21Y-3.595 +X6.26Y-3.405 +X6.27Y-4.26 +X6.37Y-4.18 +X6.3856Y-3.7696 +X6.455Y-3.45 +X6.47Y-4.26 +X6.4762Y-3.8155 +X6.4762Y-4.095 +X6.485Y-3.455 +X6.52Y-3.535 +X6.5427Y-3.4977 +X6.565Y-4.015 +X6.59Y-4.18 +X6.66Y-3.975 +X6.7Y-3.715 +X6.7164Y-3.5924 +X6.76Y-3.345 +X6.775Y-3.725 +T2 +X5.1834Y-3.3086 +X5.2918Y-3.3087 +T3 +X6.437Y-3.2275 +X6.537Y-3.2275 +X6.637Y-3.2275 +T4 +X5.2415Y-4.1805 +X5.3974Y-4.1805 +X5.5533Y-4.1805 +X5.7061Y-4.1805 +X5.8651Y-4.1805 +X6.021Y-4.1805 +T5 +X6.17Y-4.23 +X6.77Y-4.23 +T0 +M30 diff --git a/hw/v1/v1-cache.lib b/hw/v1/v1-cache.lib new file mode 100644 index 0000000..73f0eff --- /dev/null +++ b/hw/v1/v1-cache.lib @@ -0,0 +1,400 @@ +EESchema-LIBRARY Version 2.4 +#encoding utf-8 +# +# Connector_Conn_01x03_Male +# +DEF Connector_Conn_01x03_Male J 0 40 Y N 1 F N +F0 "J" 0 200 50 H V C CNN +F1 "Connector_Conn_01x03_Male" 0 -200 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_1x??_* +$ENDFPLIST +DRAW +S 34 -95 0 -105 1 1 6 F +S 34 5 0 -5 1 1 6 F +S 34 105 0 95 1 1 6 F +P 2 1 1 6 50 -100 34 -100 N +P 2 1 1 6 50 0 34 0 N +P 2 1 1 6 50 100 34 100 N +X Pin_1 1 200 100 150 L 50 50 1 1 P +X Pin_2 2 200 0 150 L 50 50 1 1 P +X Pin_3 3 200 -100 150 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Connector_Conn_01x06_Male +# +DEF Connector_Conn_01x06_Male J 0 40 Y N 1 F N +F0 "J" 0 300 50 H V C CNN +F1 "Connector_Conn_01x06_Male" 0 -400 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_1x??_* +$ENDFPLIST +DRAW +S 34 -295 0 -305 1 1 6 F +S 34 -195 0 -205 1 1 6 F +S 34 -95 0 -105 1 1 6 F +S 34 5 0 -5 1 1 6 F +S 34 105 0 95 1 1 6 F +S 34 205 0 195 1 1 6 F +P 2 1 1 6 50 -300 34 -300 N +P 2 1 1 6 50 -200 34 -200 N +P 2 1 1 6 50 -100 34 -100 N +P 2 1 1 6 50 0 34 0 N +P 2 1 1 6 50 100 34 100 N +P 2 1 1 6 50 200 34 200 N +X Pin_1 1 200 200 150 L 50 50 1 1 P +X Pin_2 2 200 100 150 L 50 50 1 1 P +X Pin_3 3 200 0 150 L 50 50 1 1 P +X Pin_4 4 200 -100 150 L 50 50 1 1 P +X Pin_5 5 200 -200 150 L 50 50 1 1 P +X Pin_6 6 200 -300 150 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Connector_Generic_Conn_02x05_Odd_Even +# +DEF Connector_Generic_Conn_02x05_Odd_Even J 0 40 Y N 1 F N +F0 "J" 50 300 50 H V C CNN +F1 "Connector_Generic_Conn_02x05_Odd_Even" 50 -300 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_2x??_* +$ENDFPLIST +DRAW +S -50 -195 0 -205 1 1 6 N +S -50 -95 0 -105 1 1 6 N +S -50 5 0 -5 1 1 6 N +S -50 105 0 95 1 1 6 N +S -50 205 0 195 1 1 6 N +S -50 250 150 -250 1 1 10 f +S 150 -195 100 -205 1 1 6 N +S 150 -95 100 -105 1 1 6 N +S 150 5 100 -5 1 1 6 N +S 150 105 100 95 1 1 6 N +S 150 205 100 195 1 1 6 N +X Pin_1 1 -200 200 150 R 50 50 1 1 P +X Pin_10 10 300 -200 150 L 50 50 1 1 P +X Pin_2 2 300 200 150 L 50 50 1 1 P +X Pin_3 3 -200 100 150 R 50 50 1 1 P +X Pin_4 4 300 100 150 L 50 50 1 1 P +X Pin_5 5 -200 0 150 R 50 50 1 1 P +X Pin_6 6 300 0 150 L 50 50 1 1 P +X Pin_7 7 -200 -100 150 R 50 50 1 1 P +X Pin_8 8 300 -100 150 L 50 50 1 1 P +X Pin_9 9 -200 -200 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Device_Buzzer +# +DEF Device_Buzzer BZ 0 1 Y N 1 F N +F0 "BZ" 150 50 50 H V L CNN +F1 "Device_Buzzer" 150 -50 50 H V L CNN +F2 "" -25 100 50 V I C CNN +F3 "" -25 100 50 V I C CNN +$FPLIST + *Buzzer* +$ENDFPLIST +DRAW +A 0 0 125 -899 899 0 1 0 N 0 -125 0 125 +P 2 0 1 0 -65 75 -45 75 N +P 2 0 1 0 -55 85 -55 65 N +P 2 0 1 0 0 125 0 -125 N +X - 1 -100 100 100 R 50 50 1 1 P +X + 2 -100 -100 100 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Device_CP_Small +# +DEF Device_CP_Small C 0 10 N N 1 F N +F0 "C" 10 70 50 H V L CNN +F1 "Device_CP_Small" 10 -80 50 H V L CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + CP_* +$ENDFPLIST +DRAW +S -60 -12 60 -27 0 1 0 F +S -60 27 60 12 0 1 0 N +P 2 0 1 0 -50 60 -30 60 N +P 2 0 1 0 -40 50 -40 70 N +X ~ 1 0 100 73 D 50 50 1 1 P +X ~ 2 0 -100 73 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Device_C_Small +# +DEF Device_C_Small C 0 10 N N 1 F N +F0 "C" 10 70 50 H V L CNN +F1 "Device_C_Small" 10 -80 50 H V L CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + C_* +$ENDFPLIST +DRAW +P 2 0 1 13 -60 -20 60 -20 N +P 2 0 1 12 -60 20 60 20 N +X ~ 1 0 100 80 D 50 50 1 1 P +X ~ 2 0 -100 80 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Device_D +# +DEF Device_D D 0 40 N N 1 F N +F0 "D" 0 100 50 H V C CNN +F1 "Device_D" 0 -100 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + TO-???* + *_Diode_* + *SingleDiode* + D_* +$ENDFPLIST +DRAW +P 2 0 1 10 -50 50 -50 -50 N +P 2 0 1 0 50 0 -50 0 N +P 4 0 1 10 50 50 50 -50 -50 0 50 50 N +X K 1 -150 0 100 R 50 50 1 1 P +X A 2 150 0 100 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Device_LED +# +DEF Device_LED D 0 40 N N 1 F N +F0 "D" 0 100 50 H V C CNN +F1 "Device_LED" 0 -100 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + LED* + LED_SMD:* + LED_THT:* +$ENDFPLIST +DRAW +P 2 0 1 10 -50 -50 -50 50 N +P 2 0 1 0 -50 0 50 0 N +P 4 0 1 10 50 -50 50 50 -50 0 50 -50 N +P 5 0 1 0 -120 -30 -180 -90 -150 -90 -180 -90 -180 -60 N +P 5 0 1 0 -70 -30 -130 -90 -100 -90 -130 -90 -130 -60 N +X K 1 -150 0 100 R 50 50 1 1 P +X A 2 150 0 100 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Device_R_POT_Small +# +DEF Device_R_POT_Small RV 0 40 Y N 1 F N +F0 "RV" -175 0 50 V V C CNN +F1 "Device_R_POT_Small" -100 0 50 V V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Potentiometer* +$ENDFPLIST +DRAW +S 30 71 -30 -71 0 1 10 N +P 6 0 1 0 35 0 25 0 65 15 65 -15 25 0 35 0 F +X 1 1 0 100 25 D 25 25 1 1 P +X 2 2 100 0 39 L 25 25 1 1 P +X 3 3 0 -100 25 U 25 25 1 1 P +ENDDRAW +ENDDEF +# +# Device_R_Small +# +DEF Device_R_Small R 0 10 N N 1 F N +F0 "R" 30 20 50 H V L CNN +F1 "Device_R_Small" 30 -40 50 H V L CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + R_* +$ENDFPLIST +DRAW +S -30 70 30 -70 0 1 8 N +X ~ 1 0 100 30 D 50 50 1 1 P +X ~ 2 0 -100 30 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Regulator_Linear_AMS1117-3.3 +# +DEF Regulator_Linear_AMS1117-3.3 U 0 10 Y Y 1 F N +F0 "U" -150 125 50 H V C CNN +F1 "Regulator_Linear_AMS1117-3.3" 0 125 50 H V L CNN +F2 "Package_TO_SOT_SMD:SOT-223-3_TabPin2" 0 200 50 H I C CNN +F3 "" 100 -250 50 H I C CNN +ALIAS AP1117-18 AP1117-25 AP1117-33 AP1117-50 LD1117S33TR_SOT223 LD1117S12TR_SOT223 LD1117S18TR_SOT223 LD1117S25TR_SOT223 LD1117S50TR_SOT223 NCP1117-12_SOT223 NCP1117-1.5_SOT223 NCP1117-1.8_SOT223 NCP1117-2.0_SOT223 NCP1117-2.5_SOT223 NCP1117-2.85_SOT223 NCP1117-3.3_SOT223 NCP1117-5.0_SOT223 AMS1117-1.5 AMS1117-1.8 AMS1117-2.5 AMS1117-2.85 AMS1117-3.3 AMS1117-5.0 +$FPLIST + SOT?223*TabPin2* +$ENDFPLIST +DRAW +S -200 -200 200 75 0 1 10 f +X GND 1 0 -300 100 U 50 50 1 1 W +X VO 2 300 0 100 L 50 50 1 1 w +X VI 3 -300 0 100 R 50 50 1 1 W +ENDDRAW +ENDDEF +# +# Switch_SW_Push +# +DEF Switch_SW_Push SW 0 40 N N 1 F N +F0 "SW" 50 100 50 H V L CNN +F1 "Switch_SW_Push" 0 -60 50 H V C CNN +F2 "" 0 200 50 H I C CNN +F3 "" 0 200 50 H I C CNN +DRAW +C -80 0 20 0 1 0 N +C 80 0 20 0 1 0 N +P 2 0 1 0 0 50 0 120 N +P 2 0 1 0 100 50 -100 50 N +X 1 1 -200 0 100 R 50 50 0 1 P +X 2 2 200 0 100 L 50 50 0 1 P +ENDDRAW +ENDDEF +# +# Transistor_FET_2N7002 +# +DEF Transistor_FET_2N7002 Q 0 20 Y N 1 F N +F0 "Q" 200 75 50 H V L CNN +F1 "Transistor_FET_2N7002" 200 0 50 H V L CNN +F2 "Package_TO_SOT_SMD:SOT-23" 200 -75 50 H I L CIN +F3 "" 0 0 50 H I L CNN +ALIAS 2N7002 2N7002E 2N7002H 2N7002K BS170F BS870 BSN20 BSS123 BSS127S DMG2302U DMG3402L DMG3404L DMG3406L DMG3414U DMG3418L DMN10H220L DMN10H700S DMN13H750S DMN2041L DMN2050L DMN2056U DMN2058U DMN2075U DMN2230U DMN24H11DS DMN24H3D5L DMN3042L DMN3051L DMN30H4D0L DMN3110S DMN3150L DMN3300U DMN3404L DMN6075S DMN6140L DMN67D7L DMN67D8L MMBF170 VN10LF ZVN3306F ZVN3310F ZVN3320F ZVN4106F ZXM61N02F ZXM61N03F ZXMN10A07F ZXMN2A01F ZXMN2A14F ZXMN2B01F ZXMN2B14FH ZXMN2F30FH ZXMN2F34FH ZXMN3A01F ZXMN3A14F ZXMN3B01F ZXMN3B14F ZXMN3F30FH ZXMN6A07F IRLML0030 IRLML2060 TSM2302CX AO3400A +$FPLIST + SOT?23* +$ENDFPLIST +DRAW +C 65 0 110 0 1 10 N +C 100 -70 10 0 1 0 F +C 100 70 10 0 1 0 F +P 2 0 1 0 10 0 -100 0 N +P 2 0 1 10 10 75 10 -75 N +P 2 0 1 10 30 -50 30 -90 N +P 2 0 1 10 30 20 30 -20 N +P 2 0 1 10 30 90 30 50 N +P 2 0 1 0 100 100 100 70 N +P 3 0 1 0 100 -100 100 0 30 0 N +P 4 0 1 0 30 -70 130 -70 130 70 30 70 N +P 4 0 1 0 40 0 80 15 80 -15 40 0 F +P 4 0 1 0 110 20 115 15 145 15 150 10 N +P 4 0 1 0 130 15 115 -10 145 -10 130 15 N +X G 1 -200 0 100 R 50 50 1 1 I +X S 2 100 -200 100 U 50 50 1 1 P +X D 3 100 200 100 D 50 50 1 1 P +ENDDRAW +ENDDEF +# +# MICROJELLY_ERC12864-10 +# +DEF MICROJELLY_ERC12864-10 J 0 40 Y Y 1 F N +F0 "J" -50 -1050 60 H V C CNN +F1 "MICROJELLY_ERC12864-10" -50 -950 60 H V C CNN +F2 "" -500 900 60 H I C CNN +F3 "" -500 900 60 H I C CNN +DRAW +S -400 1000 350 -900 0 1 0 N +X NC 1 -500 100 100 R 50 50 1 1 N N +X BM0 10 -500 600 100 R 50 50 1 1 I +X BM1 11 -500 500 100 R 50 50 1 1 I +X TST5 12 -500 400 100 R 50 50 1 1 I +X CS 13 450 900 100 L 50 50 1 1 I +X RES 14 450 800 100 L 50 50 1 1 I +X CD 15 450 700 100 L 50 50 1 1 I +X WR0/A3 16 450 500 100 L 50 50 1 1 I +X WR1/A2 17 450 400 100 L 50 50 1 1 I +X D0 18 450 300 100 L 50 50 1 1 B +X D1 19 450 200 100 L 50 50 1 1 B +X NC 2 -500 0 100 R 50 50 1 1 N N +X D2 20 450 100 100 L 50 50 1 1 B +X D3 21 450 0 100 L 50 50 1 1 B +X D4 22 450 -100 100 L 50 50 1 1 B +X D5 23 450 -200 100 L 50 50 1 1 B +X D6/SCK 24 450 -300 100 L 50 50 1 1 B +X D7/SDA 25 450 -400 100 L 50 50 1 1 B +X NC 26 -500 -400 100 R 50 50 1 1 N N +X NC 27 -500 -500 100 R 50 50 1 1 N N +X NC 28 -500 -600 100 R 50 50 1 1 N N +X NC 29 -500 -700 100 R 50 50 1 1 N N +X NC 3 -500 -100 100 R 50 50 1 1 N N +X NC 30 -500 -800 100 R 50 50 1 1 N N +X NC 4 -500 -200 100 R 50 50 1 1 N N +X NC 5 -500 -300 100 R 50 50 1 1 N N +X LEDA+ 6 -500 900 100 R 50 50 1 1 W +X LEDK- 7 -500 800 100 R 50 50 1 1 W +X VSS 8 450 -800 100 L 50 50 1 1 W +X VDD 9 450 -600 100 L 50 50 1 1 W +ENDDRAW +ENDDEF +# +# MICROJELLY_MAX6675ISA+T +# +DEF MICROJELLY_MAX6675ISA+T U 0 40 Y Y 1 F N +F0 "U" -300 350 50 H V L CNN +F1 "MICROJELLY_MAX6675ISA+T" 50 350 50 H V L CNN +F2 "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" 1000 -350 50 H I C CIN +F3 "" 0 0 50 H I C CNN +$FPLIST + SOIC*3.9x4.9mm*P1.27mm* +$ENDFPLIST +DRAW +S -300 300 300 -300 0 1 10 f +X GND 1 0 -400 100 U 50 50 1 1 W +X T- 2 -400 -100 100 R 50 50 1 1 P +X T+ 3 -400 100 100 R 50 50 1 1 P +X VCC 4 0 400 100 D 50 50 1 1 W +X SCK 5 400 200 100 L 50 50 1 1 I +X ~CS~ 6 400 -100 100 L 50 50 1 1 I +X SO 7 400 100 100 L 50 50 1 1 T +ENDDRAW +ENDDEF +# +# MICROJELLY_STM8S[N76E] +# +DEF MICROJELLY_STM8S[N76E] U 0 40 Y Y 1 F N +F0 "U" -450 1000 50 H V L CNN +F1 "MICROJELLY_STM8S[N76E]" -450 900 50 H V L CNN +F2 "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm" 50 1100 50 H I L CNN +F3 "" -50 -400 50 H I C CNN +$FPLIST + TSSOP*4.4x6.5mm*P0.65mm* +$ENDFPLIST +DRAW +S -450 850 450 -850 0 1 10 f +X PD4[P0.5] 1 600 300 150 L 50 50 1 1 B +X PA3[P1.5] 10 -600 500 150 R 50 50 1 1 B +X PB5[P1.4] 11 -600 200 150 R 50 50 1 1 B +X PB4[P1.3] 12 -600 300 150 R 50 50 1 1 B +X PC3[P1.2] 13 -600 0 150 R 50 50 1 1 B +X PC4[P1.1] 14 -600 -100 150 R 50 50 1 1 B +X PC5[P1.0] 15 -600 -200 150 R 50 50 1 1 B +X PC6[P0.0] 16 -600 -300 150 R 50 50 1 1 B +X PC7[P0.1] 17 -600 -400 150 R 50 50 1 1 B +X SWIM[ICPCK] 18 600 -750 150 L 50 50 1 1 B +X PD2[P0.3] 19 600 500 150 L 50 50 1 1 B +X PD5[P0.6] 2 600 -50 150 L 50 50 1 1 B +X PD3[P0.4] 20 600 400 150 L 50 50 1 1 B +X PD6[P0.7] 3 600 -150 150 L 50 50 1 1 B +X NRST[RST] 4 600 -550 150 L 50 50 1 1 I +X PA1[P3.0] 5 -600 700 150 R 50 50 1 1 B +X PA2[P1.7] 6 -600 600 150 R 50 50 1 1 B +X VSS 7 -300 -1000 150 U 50 50 1 1 W +X VCAP[ICPDA] 8 600 -650 150 L 50 50 1 1 B +X VDD 9 200 1000 150 D 50 50 1 1 W +ENDDRAW +ENDDEF +# +#End Library diff --git a/hw/v1/v1.kicad_pcb b/hw/v1/v1.kicad_pcb new file mode 100644 index 0000000..18c7a28 --- /dev/null +++ b/hw/v1/v1.kicad_pcb @@ -0,0 +1,2222 @@ +(kicad_pcb (version 20171130) (host pcbnew "(5.1.8-0-10_14)") + + (general + (thickness 1.6002) + (drawings 11) + (tracks 336) + (zones 0) + (modules 35) + (nets 43) + ) + + (page A4) + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (34 B.Paste user hide) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user hide) + (39 F.Mask user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user hide) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.1524) + (user_trace_width 0.304) + (trace_clearance 0.1524) + (zone_clearance 0.254) + (zone_45_only no) + (trace_min 0.1524) + (via_size 0.508) + (via_drill 0.254) + (via_min_size 0.508) + (via_min_drill 0.254) + (uvia_size 0.508) + (uvia_drill 0.254) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.0508) + (solder_mask_min_width 0.25) + (pad_to_paste_clearance -0.02) + (aux_axis_origin 0 0) + (visible_elements 7FFFFFFF) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 0) + (scaleselection 1) + (outputdirectory "gerbers/")) + ) + + (net 0 "") + (net 1 GND) + (net 2 3V3) + (net 3 VIN) + (net 4 T-) + (net 5 T+) + (net 6 "Net-(J1-Pad6)") + (net 7 SSR0) + (net 8 SSR1) + (net 9 BUZZER) + (net 10 NRST[RST]) + (net 11 SW0) + (net 12 VCAP[ICPDA]) + (net 13 LED_RED) + (net 14 "Net-(D2-Pad2)") + (net 15 "Net-(D3-Pad1)") + (net 16 SPI_MOSI) + (net 17 SPI_SCK) + (net 18 LCD_CD) + (net 19 LCD_RES) + (net 20 LCD_CS) + (net 21 SWIM[ICPCK]) + (net 22 ICPDAT) + (net 23 RX) + (net 24 TX) + (net 25 SRV0) + (net 26 _SSR0) + (net 27 _SSR1) + (net 28 "Net-(R3-Pad2)") + (net 29 K_CS) + (net 30 SPI_MISO) + (net 31 "Net-(J1-Pad1)") + (net 32 "Net-(J1-Pad2)") + (net 33 "Net-(J1-Pad3)") + (net 34 "Net-(J1-Pad4)") + (net 35 "Net-(J1-Pad5)") + (net 36 "Net-(J1-Pad12)") + (net 37 "Net-(J1-Pad26)") + (net 38 "Net-(J1-Pad27)") + (net 39 "Net-(J1-Pad28)") + (net 40 "Net-(J1-Pad29)") + (net 41 "Net-(J1-Pad30)") + (net 42 "Net-(RV1-Pad3)") + + (net_class Default "This is the default net class." + (clearance 0.1524) + (trace_width 0.1524) + (via_dia 0.508) + (via_drill 0.254) + (uvia_dia 0.508) + (uvia_drill 0.254) + (add_net 3V3) + (add_net BUZZER) + (add_net GND) + (add_net ICPDAT) + (add_net K_CS) + (add_net LCD_CD) + (add_net LCD_CS) + (add_net LCD_RES) + (add_net LED_RED) + (add_net NRST[RST]) + (add_net "Net-(D2-Pad2)") + (add_net "Net-(D3-Pad1)") + (add_net "Net-(J1-Pad1)") + (add_net "Net-(J1-Pad12)") + (add_net "Net-(J1-Pad2)") + (add_net "Net-(J1-Pad26)") + (add_net "Net-(J1-Pad27)") + (add_net "Net-(J1-Pad28)") + (add_net "Net-(J1-Pad29)") + (add_net "Net-(J1-Pad3)") + (add_net "Net-(J1-Pad30)") + (add_net "Net-(J1-Pad4)") + (add_net "Net-(J1-Pad5)") + (add_net "Net-(J1-Pad6)") + (add_net "Net-(R3-Pad2)") + (add_net "Net-(RV1-Pad3)") + (add_net RX) + (add_net SPI_MISO) + (add_net SPI_MOSI) + (add_net SPI_SCK) + (add_net SRV0) + (add_net SSR0) + (add_net SSR1) + (add_net SW0) + (add_net SWIM[ICPCK]) + (add_net T+) + (add_net T-) + (add_net TX) + (add_net VCAP[ICPDA]) + (add_net VIN) + (add_net _SSR0) + (add_net _SSR1) + ) + + (module MICROJELLY:TRUDEAU_C2X5_REG_SMD locked (layer B.Cu) (tedit 602ABF2C) (tstamp 602ABCE6) + (at 165.608 109.982) + (path /6016ECE9) + (fp_text reference J3 (at -7.8867 -0.588) (layer B.SilkS) hide + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value ISP/UART (at -1.143 1.2662) (layer B.SilkS) hide + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (pad "" np_thru_hole circle (at -8.89 -2.54) (size 2.5 2.5) (drill 2.5) (layers *.Cu)) + (pad "" np_thru_hole circle (at 6.35 -2.54) (size 2.5 2.5) (drill 2.5) (layers *.Cu)) + (pad 9 smd rect (at 3.81 -1.778) (size 1.5 2.8) (layers B.Cu B.Mask) + (net 24 TX)) + (pad 7 smd rect (at 1.27 -1.778) (size 1.5 2.8) (layers B.Cu B.Mask) + (net 23 RX)) + (pad 5 smd rect (at -1.27 -1.778) (size 1.5 2.8) (layers B.Cu B.Mask) + (net 1 GND)) + (pad 3 smd rect (at -3.81 -1.778) (size 1.5 2.8) (layers B.Cu B.Mask) + (net 1 GND)) + (pad 1 smd rect (at -6.35 -1.778) (size 1.5 2.8) (layers B.Cu B.Mask) + (net 2 3V3)) + (pad 2 smd rect (at -6.35 -1.778) (size 1.5 2.8) (layers F.Cu F.Mask) + (net 2 3V3)) + (pad 4 smd rect (at -3.81 -1.778) (size 1.5 2.8) (layers F.Cu F.Mask) + (net 21 SWIM[ICPCK])) + (pad 6 smd rect (at -1.27 -1.778) (size 1.5 2.8) (layers F.Cu F.Mask) + (net 1 GND)) + (pad 8 smd rect (at 1.27 -1.778) (size 1.5 2.8) (layers F.Cu F.Mask) + (net 10 NRST[RST])) + (pad 10 smd rect (at 3.81 -1.778) (size 1.5 2.8) (layers F.Cu F.Mask) + (net 22 ICPDAT)) + ) + + (module Package_SO:SOIC-8_3.9x4.9mm_P1.27mm (layer B.Cu) (tedit 5D9F72B1) (tstamp 601473E9) + (at 159.3088 91.821 90) + (descr "SOIC, 8 Pin (JEDEC MS-012AA, https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/soic_narrow-r/r_8.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py") + (tags "SOIC SO") + (path /600B9718) + (attr smd) + (fp_text reference U3 (at -0.6096 1.524 180) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value MAX6675ISA+T (at 0 -3.4 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start 3.7 2.7) (end -3.7 2.7) (layer B.CrtYd) (width 0.05)) + (fp_line (start 3.7 -2.7) (end 3.7 2.7) (layer B.CrtYd) (width 0.05)) + (fp_line (start -3.7 -2.7) (end 3.7 -2.7) (layer B.CrtYd) (width 0.05)) + (fp_line (start -3.7 2.7) (end -3.7 -2.7) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.95 1.475) (end -0.975 2.45) (layer B.Fab) (width 0.1)) + (fp_line (start -1.95 -2.45) (end -1.95 1.475) (layer B.Fab) (width 0.1)) + (fp_line (start 1.95 -2.45) (end -1.95 -2.45) (layer B.Fab) (width 0.1)) + (fp_line (start 1.95 2.45) (end 1.95 -2.45) (layer B.Fab) (width 0.1)) + (fp_line (start -0.975 2.45) (end 1.95 2.45) (layer B.Fab) (width 0.1)) + (fp_line (start 0 2.56) (end -3.45 2.56) (layer B.SilkS) (width 0.12)) + (fp_line (start 0 2.56) (end 1.95 2.56) (layer B.SilkS) (width 0.12)) + (fp_line (start 0 -2.56) (end -1.95 -2.56) (layer B.SilkS) (width 0.12)) + (fp_line (start 0 -2.56) (end 1.95 -2.56) (layer B.SilkS) (width 0.12)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.98 0.98) (thickness 0.15)) (justify mirror)) + ) + (pad 8 smd roundrect (at 2.475 1.905 90) (size 1.95 0.6) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25)) + (pad 7 smd roundrect (at 2.475 0.635 90) (size 1.95 0.6) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 30 SPI_MISO)) + (pad 6 smd roundrect (at 2.475 -0.635 90) (size 1.95 0.6) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 29 K_CS)) + (pad 5 smd roundrect (at 2.475 -1.905 90) (size 1.95 0.6) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 17 SPI_SCK)) + (pad 4 smd roundrect (at -2.475 -1.905 90) (size 1.95 0.6) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 3V3)) + (pad 3 smd roundrect (at -2.475 -0.635 90) (size 1.95 0.6) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 5 T+)) + (pad 2 smd roundrect (at -2.475 0.635 90) (size 1.95 0.6) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 4 T-)) + (pad 1 smd roundrect (at -2.475 1.905 90) (size 1.95 0.6) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 1 GND)) + (model ${KISYS3DMOD}/Package_SO.3dshapes/SOIC-8_3.9x4.9mm_P1.27mm.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Package_TO_SOT_SMD:SOT-223-3_TabPin2 (layer B.Cu) (tedit 5A02FF57) (tstamp 60135630) + (at 137.7188 97.8662 90) + (descr "module CMS SOT223 4 pins") + (tags "CMS SOT") + (path /5FECBF8A) + (attr smd) + (fp_text reference U2 (at 0 0 180) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value AMS1117-3.3 (at 0 -4.5 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start 1.91 -3.41) (end 1.91 -2.15) (layer B.SilkS) (width 0.12)) + (fp_line (start 1.91 3.41) (end 1.91 2.15) (layer B.SilkS) (width 0.12)) + (fp_line (start 4.4 3.6) (end -4.4 3.6) (layer B.CrtYd) (width 0.05)) + (fp_line (start 4.4 -3.6) (end 4.4 3.6) (layer B.CrtYd) (width 0.05)) + (fp_line (start -4.4 -3.6) (end 4.4 -3.6) (layer B.CrtYd) (width 0.05)) + (fp_line (start -4.4 3.6) (end -4.4 -3.6) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.85 2.35) (end -0.85 3.35) (layer B.Fab) (width 0.1)) + (fp_line (start -1.85 2.35) (end -1.85 -3.35) (layer B.Fab) (width 0.1)) + (fp_line (start -1.85 -3.41) (end 1.91 -3.41) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.85 3.35) (end 1.85 3.35) (layer B.Fab) (width 0.1)) + (fp_line (start -4.1 3.41) (end 1.91 3.41) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.85 -3.35) (end 1.85 -3.35) (layer B.Fab) (width 0.1)) + (fp_line (start 1.85 3.35) (end 1.85 -3.35) (layer B.Fab) (width 0.1)) + (fp_text user %R (at 0 0 180) (layer B.Fab) + (effects (font (size 0.8 0.8) (thickness 0.12)) (justify mirror)) + ) + (pad 2 smd rect (at 3.15 0 90) (size 2 3.8) (layers B.Cu B.Paste B.Mask) + (net 2 3V3)) + (pad 2 smd rect (at -3.15 0 90) (size 2 1.5) (layers B.Cu B.Paste B.Mask) + (net 2 3V3)) + (pad 3 smd rect (at -3.15 -2.3 90) (size 2 1.5) (layers B.Cu B.Paste B.Mask) + (net 3 VIN)) + (pad 1 smd rect (at -3.15 2.3 90) (size 2 1.5) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (model ${KISYS3DMOD}/Package_TO_SOT_SMD.3dshapes/SOT-223.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm (layer B.Cu) (tedit 5E476F32) (tstamp 6013561A) + (at 166.3954 89.281 90) + (descr "TSSOP, 20 Pin (JEDEC MO-153 Var AC https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py") + (tags "TSSOP SO") + (path /60155462) + (attr smd) + (fp_text reference U1 (at -0.9475 2.4898 90) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value STM8S[N76E] (at 0 -4.2 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start 3.85 3.5) (end -3.85 3.5) (layer B.CrtYd) (width 0.05)) + (fp_line (start 3.85 -3.5) (end 3.85 3.5) (layer B.CrtYd) (width 0.05)) + (fp_line (start -3.85 -3.5) (end 3.85 -3.5) (layer B.CrtYd) (width 0.05)) + (fp_line (start -3.85 3.5) (end -3.85 -3.5) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.2 2.25) (end -1.2 3.25) (layer B.Fab) (width 0.1)) + (fp_line (start -2.2 -3.25) (end -2.2 2.25) (layer B.Fab) (width 0.1)) + (fp_line (start 2.2 -3.25) (end -2.2 -3.25) (layer B.Fab) (width 0.1)) + (fp_line (start 2.2 3.25) (end 2.2 -3.25) (layer B.Fab) (width 0.1)) + (fp_line (start -1.2 3.25) (end 2.2 3.25) (layer B.Fab) (width 0.1)) + (fp_line (start 0 3.385) (end -3.6 3.385) (layer B.SilkS) (width 0.12)) + (fp_line (start 0 3.385) (end 2.2 3.385) (layer B.SilkS) (width 0.12)) + (fp_line (start 0 -3.385) (end -2.2 -3.385) (layer B.SilkS) (width 0.12)) + (fp_line (start 0 -3.385) (end 2.2 -3.385) (layer B.SilkS) (width 0.12)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (pad 20 smd roundrect (at 2.8625 2.925 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 26 _SSR0)) + (pad 19 smd roundrect (at 2.8625 2.275 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 18 LCD_CD)) + (pad 18 smd roundrect (at 2.8625 1.625 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 21 SWIM[ICPCK])) + (pad 17 smd roundrect (at 2.8625 0.975 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 30 SPI_MISO)) + (pad 16 smd roundrect (at 2.8625 0.325 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 16 SPI_MOSI)) + (pad 15 smd roundrect (at 2.8625 -0.325 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 17 SPI_SCK)) + (pad 14 smd roundrect (at 2.8625 -0.975 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 20 LCD_CS)) + (pad 13 smd roundrect (at 2.8625 -1.625 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 25 SRV0)) + (pad 12 smd roundrect (at 2.8625 -2.275 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 11 SW0)) + (pad 11 smd roundrect (at 2.8625 -2.925 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 13 LED_RED)) + (pad 10 smd roundrect (at -2.8625 -2.925 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 27 _SSR1)) + (pad 9 smd roundrect (at -2.8625 -2.275 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 3V3)) + (pad 8 smd roundrect (at -2.8625 -1.625 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 12 VCAP[ICPDA])) + (pad 7 smd roundrect (at -2.8625 -0.975 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 1 GND)) + (pad 6 smd roundrect (at -2.8625 -0.325 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 19 LCD_RES)) + (pad 5 smd roundrect (at -2.8625 0.325 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 29 K_CS)) + (pad 4 smd roundrect (at -2.8625 0.975 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 10 NRST[RST])) + (pad 3 smd roundrect (at -2.8625 1.625 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 23 RX)) + (pad 2 smd roundrect (at -2.8625 2.275 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 24 TX)) + (pad 1 smd roundrect (at -2.8625 2.925 90) (size 1.475 0.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 9 BUZZER)) + (model ${KISYS3DMOD}/Package_SO.3dshapes/TSSOP-20_4.4x6.5mm_P0.65mm.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module MICROJELLY:UK-B0229-G2.5-B-250 (layer F.Cu) (tedit 5FF0A093) (tstamp 60135EB1) + (at 166.3954 93.4974) + (descr 6*6*2.5) + (path /5FFF837C) + (attr smd) + (fp_text reference SW2 (at -0.2196 0.0614) (layer F.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125))) + ) + (fp_text value ACTION (at 0 4.15) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -3 -3) (end -3 3) (layer F.Fab) (width 0.1)) + (fp_line (start -3 3) (end 3 3) (layer F.Fab) (width 0.1)) + (fp_line (start 3 3) (end 3 -3) (layer F.Fab) (width 0.1)) + (fp_line (start 3 -3) (end -3 -3) (layer F.Fab) (width 0.1)) + (fp_line (start 5 3.25) (end 5 -3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -5 -3.25) (end -5 3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -5 3.25) (end 5 3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -5 -3.25) (end 5 -3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 3.23 -3.23) (end 3.23 -3.2) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.23 3.23) (end 3.23 3.2) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.23 3.23) (end -3.23 3.2) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.23 -3.2) (end -3.23 -3.23) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.23 -1.3) (end 3.23 1.3) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.23 -3.23) (end 3.23 -3.23) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.23 -1.3) (end -3.23 1.3) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.23 3.23) (end 3.23 3.23) (layer F.SilkS) (width 0.12)) + (fp_circle (center 0 0) (end 1.75 -0.05) (layer F.Fab) (width 0.1)) + (fp_text user %R (at 0 -4.05) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 2 smd rect (at 4.2 2.25) (size 1.4 1.6) (layers F.Cu F.Paste F.Mask) + (net 1 GND)) + (pad 1 smd rect (at 4.2 -2.25) (size 1.4 1.6) (layers F.Cu F.Paste F.Mask) + (net 11 SW0)) + (pad 1 smd rect (at -4.2 -2.25) (size 1.4 1.6) (layers F.Cu F.Paste F.Mask) + (net 11 SW0)) + (pad 2 smd rect (at -4.2 2.25) (size 1.4 1.6) (layers F.Cu F.Paste F.Mask) + (net 1 GND)) + (model ${KISYS3DMOD}/Button_Switch_SMD.3dshapes/SW_PUSH_6mm_H9.5mm.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module MICROJELLY:Potentiometer_Bourns_TC33X_Vertical locked (layer B.Cu) (tedit 5C165D15) (tstamp 601607C9) + (at 151.1554 99.4156 90) + (descr "Potentiometer, Bourns, TC33X, Vertical, https://www.bourns.com/pdfs/TC33.pdf") + (tags "Potentiometer Bourns TC33X Vertical") + (path /5FF34C3B) + (attr smd) + (fp_text reference RV1 (at -0.2413 -0.0508 -180) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 1K (at 0 -2.5 -90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_circle (center 0 0) (end 1.8 0) (layer Dwgs.User) (width 0.05)) + (fp_line (start -2.65 -1.85) (end -2.65 1.85) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.45 -1.85) (end -2.65 -1.85) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.45 1.85) (end 2.45 -1.85) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.65 1.85) (end 2.45 1.85) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.6 1.8) (end -2.6 1.1) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.9 1.8) (end -2.6 1.8) (layer B.SilkS) (width 0.12)) + (fp_line (start 1.9 -1.6) (end 1.9 -1) (layer B.SilkS) (width 0.12)) + (fp_line (start -1 -1.6) (end 1.9 -1.6) (layer B.SilkS) (width 0.12)) + (fp_line (start 1.9 1.6) (end 1.9 1) (layer B.SilkS) (width 0.12)) + (fp_line (start -1 1.6) (end 1.9 1.6) (layer B.SilkS) (width 0.12)) + (fp_line (start -2.1 0.2) (end -2.1 -0.2) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.25 1.5) (end -2 0.75) (layer B.Fab) (width 0.1)) + (fp_line (start 1.8 1.5) (end -1.25 1.5) (layer B.Fab) (width 0.1)) + (fp_line (start 1.8 -1.5) (end 1.8 1.5) (layer B.Fab) (width 0.1)) + (fp_line (start -2 -1.5) (end 1.8 -1.5) (layer B.Fab) (width 0.1)) + (fp_line (start -2 0.75) (end -2 -1.5) (layer B.Fab) (width 0.1)) + (fp_circle (center 0 0) (end 1.5 0) (layer B.Fab) (width 0.1)) + (fp_text user %R (at -0.2413 -0.0254 -180) (layer B.Fab) + (effects (font (size 0.7 0.7) (thickness 0.105)) (justify mirror)) + ) + (fp_text user "Wiper may be\nanywhere within\ncircle shown" (at -0.15 0.8 -90) (layer Cmts.User) + (effects (font (size 0.15 0.15) (thickness 0.02))) + ) + (pad 1 smd rect (at -1.8 1 90) (size 1.2 1.2) (layers B.Cu B.Paste B.Mask) + (net 2 3V3)) + (pad 3 smd rect (at -1.8 -1 90) (size 1.2 1.2) (layers B.Cu B.Paste B.Mask) + (net 42 "Net-(RV1-Pad3)")) + (pad 2 smd rect (at 1.45 0 90) (size 1.5 1.6) (layers B.Cu B.Paste B.Mask) + (net 28 "Net-(R3-Pad2)")) + (model ${KISYS3DMOD}/Potentiometer_SMD.3dshapes/Potentiometer_Bourns_TC33X_Vertical.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 601355A9) + (at 156.5402 81.9785 180) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags resistor) + (path /5FEDFA7F) + (attr smd) + (fp_text reference R9 (at 0.0127 0.0215 270) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 51 (at 0 -1.65) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.68 -0.95) (end -1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.68 0.95) (end 1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 0.95) (end 1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 -0.95) (end -1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.9125 0 180) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 2 3V3)) + (pad 2 smd roundrect (at 0.9125 0 180) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 14 "Net-(D2-Pad2)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 60135598) + (at 136.2964 82.1944 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags resistor) + (path /5FEDD604) + (attr smd) + (fp_text reference R8 (at 0.034325 -0.0254 180) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 1K (at 0 -1.65 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.68 -0.95) (end -1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.68 0.95) (end 1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 0.95) (end 1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 -0.95) (end -1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.9125 0 90) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 1 GND)) + (pad 2 smd roundrect (at 0.9125 0 90) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 15 "Net-(D3-Pad1)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric locked (layer B.Cu) (tedit 5F68FEEE) (tstamp 601473B0) + (at 147.0344 97.7392) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags resistor) + (path /60034F59) + (attr smd) + (fp_text reference R7 (at -0.0508 0.0254 -90) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 10K (at 0 -1.65) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.68 -0.95) (end -1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.68 0.95) (end 1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 0.95) (end 1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 -0.95) (end -1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 27 _SSR1)) + (pad 2 smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 1 GND)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric locked (layer B.Cu) (tedit 5F68FEEE) (tstamp 6014742B) + (at 143.3006 97.730734) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags resistor) + (path /5FFAE1FA) + (attr smd) + (fp_text reference R6 (at 0 0 -90) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 10K (at 0 -1.65) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.68 -0.95) (end -1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.68 0.95) (end 1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 0.95) (end 1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 -0.95) (end -1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 26 _SSR0)) + (pad 2 smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 1 GND)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 602AC555) + (at 159.8168 100.8888 270) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags resistor) + (path /60167B52) + (attr smd) + (fp_text reference R5 (at 0 -0.0254) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value DNP[0] (at 0 -1.65 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start 1.68 -0.95) (end -1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 0.95) (end 1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.68 0.95) (end 1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.68 -0.95) (end -1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 0.9125 0 270) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 22 ICPDAT)) + (pad 1 smd roundrect (at -0.9125 0 270) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 12 VCAP[ICPDA])) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 60135554) + (at 171.7313 83.0345 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags resistor) + (path /602F4E9D) + (attr smd) + (fp_text reference R4 (at -0.0508 0 180) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 10K (at 0 -1.65 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start 1.68 -0.95) (end -1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 0.95) (end 1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.68 0.95) (end 1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.68 -0.95) (end -1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_text user %R (at 0 0 180) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 0.9125 0 90) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 25 SRV0)) + (pad 1 smd roundrect (at -0.9125 0 90) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 1 GND)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric locked (layer B.Cu) (tedit 5F68FEEE) (tstamp 6018CA42) + (at 151.511 95.7072) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags resistor) + (path /5FF2AAD0) + (attr smd) + (fp_text reference R3 (at 0.0235 -0.0254 -270) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 15 (at 0 -1.65) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.68 -0.95) (end -1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.68 0.95) (end 1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 0.95) (end 1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 -0.95) (end -1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0.0616 0 -270) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 6 "Net-(J1-Pad6)")) + (pad 2 smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 28 "Net-(R3-Pad2)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 601468A7) + (at 171.704 88.6695 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags resistor) + (path /5FFF87D3) + (attr smd) + (fp_text reference R2 (at -0.0254 -0.0254) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 10K (at 0 -1.65 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start 1.68 -0.95) (end -1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 0.95) (end 1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.68 0.95) (end 1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.68 -0.95) (end -1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 0.9125 0 90) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 2 3V3)) + (pad 1 smd roundrect (at -0.9125 0 90) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 11 SW0)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 60135521) + (at 132.8928 90.8558) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags resistor) + (path /5FED7A89) + (attr smd) + (fp_text reference R1 (at 0 0 90) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 10K (at 0 -1.65) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.68 -0.95) (end -1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.68 0.95) (end 1.68 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 0.95) (end 1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.68 -0.95) (end -1.68 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.9125 0) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 10 NRST[RST])) + (pad 2 smd roundrect (at 0.9125 0) (size 1.025 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.243902) + (net 2 3V3)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Package_TO_SOT_SMD:SOT-23 locked (layer B.Cu) (tedit 5A02FF57) (tstamp 601474E6) + (at 146.9644 100.592468 270) + (descr "SOT-23, Standard") + (tags SOT-23) + (path /5FF8F9B7) + (attr smd) + (fp_text reference Q2 (at -0.0856 -0.066 180) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 2N7002 (at 0 -2.5 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -0.7 0.95) (end -0.7 -1.5) (layer B.Fab) (width 0.1)) + (fp_line (start -0.15 1.52) (end 0.7 1.52) (layer B.Fab) (width 0.1)) + (fp_line (start -0.7 0.95) (end -0.15 1.52) (layer B.Fab) (width 0.1)) + (fp_line (start 0.7 1.52) (end 0.7 -1.52) (layer B.Fab) (width 0.1)) + (fp_line (start -0.7 -1.52) (end 0.7 -1.52) (layer B.Fab) (width 0.1)) + (fp_line (start 0.76 -1.58) (end 0.76 -0.65) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.76 1.58) (end 0.76 0.65) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.7 1.75) (end 1.7 1.75) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 1.75) (end 1.7 -1.75) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 -1.75) (end -1.7 -1.75) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 -1.75) (end -1.7 1.75) (layer B.CrtYd) (width 0.05)) + (fp_line (start 0.76 1.58) (end -1.4 1.58) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.76 -1.58) (end -0.7 -1.58) (layer B.SilkS) (width 0.12)) + (fp_text user %R (at 0 0 180) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.075)) (justify mirror)) + ) + (pad 1 smd rect (at -1 0.95 270) (size 0.9 0.8) (layers B.Cu B.Paste B.Mask) + (net 27 _SSR1)) + (pad 2 smd rect (at -1 -0.95 270) (size 0.9 0.8) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 3 smd rect (at 1 0 270) (size 0.9 0.8) (layers B.Cu B.Paste B.Mask) + (net 8 SSR1)) + (model ${KISYS3DMOD}/Package_TO_SOT_SMD.3dshapes/SOT-23.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Package_TO_SOT_SMD:SOT-23 locked (layer B.Cu) (tedit 5A02FF57) (tstamp 60147522) + (at 143.2306 100.584 270) + (descr "SOT-23, Standard") + (tags SOT-23) + (path /5FF88B00) + (attr smd) + (fp_text reference Q1 (at -0.0668 0.0508 180) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 2N7002 (at 0 -2.5 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -0.7 0.95) (end -0.7 -1.5) (layer B.Fab) (width 0.1)) + (fp_line (start -0.15 1.52) (end 0.7 1.52) (layer B.Fab) (width 0.1)) + (fp_line (start -0.7 0.95) (end -0.15 1.52) (layer B.Fab) (width 0.1)) + (fp_line (start 0.7 1.52) (end 0.7 -1.52) (layer B.Fab) (width 0.1)) + (fp_line (start -0.7 -1.52) (end 0.7 -1.52) (layer B.Fab) (width 0.1)) + (fp_line (start 0.76 -1.58) (end 0.76 -0.65) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.76 1.58) (end 0.76 0.65) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.7 1.75) (end 1.7 1.75) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 1.75) (end 1.7 -1.75) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 -1.75) (end -1.7 -1.75) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 -1.75) (end -1.7 1.75) (layer B.CrtYd) (width 0.05)) + (fp_line (start 0.76 1.58) (end -1.4 1.58) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.76 -1.58) (end -0.7 -1.58) (layer B.SilkS) (width 0.12)) + (fp_text user %R (at 0 0 180) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.075)) (justify mirror)) + ) + (pad 1 smd rect (at -1 0.95 270) (size 0.9 0.8) (layers B.Cu B.Paste B.Mask) + (net 26 _SSR0)) + (pad 2 smd rect (at -1 -0.95 270) (size 0.9 0.8) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 3 smd rect (at 1 0 270) (size 0.9 0.8) (layers B.Cu B.Paste B.Mask) + (net 7 SSR0)) + (model ${KISYS3DMOD}/Package_TO_SOT_SMD.3dshapes/SOT-23.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical (layer F.Cu) (tedit 59FED5CC) (tstamp 60160759) + (at 168.5798 81.9785 270) + (descr "Through hole straight pin header, 1x03, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x03 2.54mm single row") + (path /601FC65E) + (fp_text reference J5 (at 1.4351 -1.2446 180) (layer F.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125))) + ) + (fp_text value SERVO (at -2.9718 2.5908 180) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.8 -1.8) (end -1.8 6.85) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.33 1.27) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end -1.33 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 6.41) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 6.35) (end -1.27 -0.635) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1)) + (fp_text user %R (at 0 2.54) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 3 thru_hole oval (at 0 5.08 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 1 GND)) + (pad 2 thru_hole oval (at 0 2.54 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 2 3V3)) + (pad 1 thru_hole rect (at 0 0 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 25 SRV0)) + (model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x03_P2.54mm_Vertical.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module MICROJELLY:HT396V-3.96-6p (layer B.Cu) (tedit 60131900) (tstamp 601474B8) + (at 133.1341 106.1847) + (path /60223278) + (attr virtual) + (fp_text reference J2 (at -0.6985 2.9591) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value "Terminal Block" (at 4.7625 -2.8956) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1.98 3.7) (end 21.78 3.7) (layer B.SilkS) (width 0.12)) + (fp_line (start 21.78 3.7) (end 21.78 -3.7) (layer B.SilkS) (width 0.12)) + (fp_line (start 21.78 -3.7) (end -1.98 -3.7) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.98 -3.7) (end -1.98 3.7) (layer B.SilkS) (width 0.12)) + (pad 1 thru_hole roundrect (at 0 0) (size 3.16 4.1) (drill 1.7) (layers *.Cu *.Mask) (roundrect_rratio 0.25) + (net 3 VIN)) + (pad 2 thru_hole oval (at 3.96 0) (size 3.16 4.1) (drill 1.7) (layers *.Cu *.Mask) + (net 1 GND)) + (pad 3 thru_hole oval (at 7.92 0) (size 3.16 4.1) (drill 1.7) (layers *.Cu *.Mask) + (net 7 SSR0)) + (pad 4 thru_hole oval (at 11.8 0) (size 3.16 4.1) (drill 1.7) (layers *.Cu *.Mask) + (net 8 SSR1)) + (pad 5 thru_hole oval (at 15.84 0) (size 3.16 4.1) (drill 1.7) (layers *.Cu *.Mask) + (net 5 T+)) + (pad 6 thru_hole oval (at 19.8 0) (size 3.16 4.1) (drill 1.7) (layers *.Cu *.Mask) + (net 4 T-)) + ) + + (module MICROJELLY:ER-CON30HB-1 (layer B.Cu) (tedit 5FD252E2) (tstamp 60163934) + (at 145.642 89.102) + (path /600D30D4) + (fp_text reference J1 (at 6.6564 0.5854) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value ERC12864-10 (at -2.0304 0.6108 180) (layer B.SilkS) hide + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_line (start -10.75 3.25) (end -10.75 3.25) (layer B.Fab) (width 0.1)) + (fp_line (start -10.75 -3.25) (end -10.75 3.25) (layer B.Fab) (width 0.1)) + (fp_line (start 10.75 -3.25) (end -10.75 -3.25) (layer B.Fab) (width 0.1)) + (fp_line (start 10.75 3.25) (end 10.75 -3.25) (layer B.Fab) (width 0.1)) + (fp_line (start -10.75 3.25) (end 10.75 3.25) (layer B.Fab) (width 0.1)) + (fp_line (start -10.75 1.25) (end -10.75 1.25) (layer B.SilkS) (width 0.15)) + (fp_line (start -10.75 3.25) (end -10.75 1.25) (layer B.SilkS) (width 0.15)) + (fp_line (start -8.75 3.25) (end -8.75 3.25) (layer B.SilkS) (width 0.15)) + (fp_line (start -10.75 3.25) (end -8.75 3.25) (layer B.SilkS) (width 0.15)) + (fp_line (start -10.75 -1.25) (end -10.75 -1.25) (layer B.SilkS) (width 0.15)) + (fp_line (start -10.75 -3.25) (end -10.75 -1.25) (layer B.SilkS) (width 0.15)) + (fp_line (start -8.75 -3.25) (end -8.75 -3.25) (layer B.SilkS) (width 0.15)) + (fp_line (start -10.75 -3.25) (end -8.75 -3.25) (layer B.SilkS) (width 0.15)) + (fp_line (start 8.75 -3.25) (end 8.75 -3.25) (layer B.SilkS) (width 0.15)) + (fp_line (start 10.75 -3.25) (end 8.75 -3.25) (layer B.SilkS) (width 0.15)) + (fp_line (start 10.75 -1.25) (end 10.75 -1.25) (layer B.SilkS) (width 0.15)) + (fp_line (start 10.75 -3.25) (end 10.75 -1.25) (layer B.SilkS) (width 0.15)) + (fp_line (start 10.75 1.25) (end 10.75 1.25) (layer B.SilkS) (width 0.15)) + (fp_line (start 10.75 3.25) (end 10.75 1.25) (layer B.SilkS) (width 0.15)) + (fp_line (start 8.75 3.25) (end 8.75 3.25) (layer B.SilkS) (width 0.05)) + (fp_line (start 10.75 3.25) (end 8.75 3.25) (layer B.SilkS) (width 0.15)) + (fp_text user %R (at 5.7674 0.6108) (layer B.SilkS) hide + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (pad 30 smd rect (at -7.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 41 "Net-(J1-Pad30)")) + (pad "" smd rect (at -8.79 -0.075) (size 2 3) (layers B.Cu B.Paste B.Mask)) + (pad "" smd rect (at 8.79 -0.075) (size 2 3) (layers B.Cu B.Paste B.Mask)) + (pad 29 smd rect (at -6.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 40 "Net-(J1-Pad29)")) + (pad 28 smd rect (at -6.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 39 "Net-(J1-Pad28)")) + (pad 27 smd rect (at -5.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 38 "Net-(J1-Pad27)")) + (pad 26 smd rect (at -5.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 37 "Net-(J1-Pad26)")) + (pad 25 smd rect (at -4.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 16 SPI_MOSI)) + (pad 24 smd rect (at -4.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 17 SPI_SCK)) + (pad 23 smd rect (at -3.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 22 smd rect (at -3.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 21 smd rect (at -2.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 20 smd rect (at -2.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 19 smd rect (at -1.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 18 smd rect (at -1.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 17 smd rect (at -0.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 16 smd rect (at -0.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 15 smd rect (at 0.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 18 LCD_CD)) + (pad 14 smd rect (at 0.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 19 LCD_RES)) + (pad 13 smd rect (at 1.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 20 LCD_CS)) + (pad 12 smd rect (at 1.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 36 "Net-(J1-Pad12)")) + (pad 11 smd rect (at 2.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 10 smd rect (at 2.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 9 smd rect (at 3.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 2 3V3)) + (pad 8 smd rect (at 3.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 7 smd rect (at 4.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 6 smd rect (at 4.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 6 "Net-(J1-Pad6)")) + (pad 5 smd rect (at 5.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 35 "Net-(J1-Pad5)")) + (pad 4 smd rect (at 5.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 34 "Net-(J1-Pad4)")) + (pad 3 smd rect (at 6.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 33 "Net-(J1-Pad3)")) + (pad 2 smd rect (at 6.75 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 32 "Net-(J1-Pad2)")) + (pad 1 smd rect (at 7.25 2.25) (size 0.3 1.25) (layers B.Cu B.Paste B.Mask) + (net 31 "Net-(J1-Pad1)")) + ) + + (module LED_SMD:LED_0805_2012Metric (layer F.Cu) (tedit 5F68FEF1) (tstamp 60135456) + (at 134.504075 82 180) + (descr "LED SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags LED) + (path /5FEC417B) + (attr smd) + (fp_text reference D3 (at -0.039725 -0.0166 90) (layer F.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125))) + ) + (fp_text value "POWER (GREEN)" (at 0.011075 3.26) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 1 -0.6) (end -0.7 -0.6) (layer F.Fab) (width 0.1)) + (fp_line (start -0.7 -0.6) (end -1 -0.3) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.3) (end -1 0.6) (layer F.Fab) (width 0.1)) + (fp_line (start -1 0.6) (end 1 0.6) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.6) (end 1 -0.6) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.96) (end -1.685 -0.96) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.685 -0.96) (end -1.685 0.96) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.685 0.96) (end 1 0.96) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 1 smd roundrect (at -0.9375 0 180) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 15 "Net-(D3-Pad1)")) + (pad 2 smd roundrect (at 0.9375 0 180) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 2 3V3)) + (model ${KISYS3DMOD}/LED_SMD.3dshapes/LED_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module LED_SMD:LED_0805_2012Metric (layer F.Cu) (tedit 5F68FEF1) (tstamp 60135443) + (at 156.5202 81.9785 180) + (descr "LED SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags LED) + (path /5FEB80F4) + (attr smd) + (fp_text reference D2 (at -0.0454 -0.0127 90) (layer F.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125))) + ) + (fp_text value "HOT (RED)" (at -0.02 3.1242) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 1 -0.6) (end -0.7 -0.6) (layer F.Fab) (width 0.1)) + (fp_line (start -0.7 -0.6) (end -1 -0.3) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.3) (end -1 0.6) (layer F.Fab) (width 0.1)) + (fp_line (start -1 0.6) (end 1 0.6) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.6) (end 1 -0.6) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.96) (end -1.685 -0.96) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.685 -0.96) (end -1.685 0.96) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.685 0.96) (end 1 0.96) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.68 0.95) (end -1.68 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.68 -0.95) (end 1.68 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.68 -0.95) (end 1.68 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.68 0.95) (end -1.68 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 1 smd roundrect (at -0.9375 0 180) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 13 LED_RED)) + (pad 2 smd roundrect (at 0.9375 0 180) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 14 "Net-(D2-Pad2)")) + (model ${KISYS3DMOD}/LED_SMD.3dshapes/LED_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Diode_SMD:D_SOD-323 (layer B.Cu) (tedit 58641739) (tstamp 602AC4E7) + (at 161.8996 102.3366 90) + (descr SOD-323) + (tags SOD-323) + (path /5FEFB9A6) + (attr smd) + (fp_text reference D1 (at -0.0254 0 180) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value IN4148WS (at 0.1 -1.9 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1.5 0.85) (end 1.05 0.85) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.5 -0.85) (end 1.05 -0.85) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.6 0.95) (end -1.6 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.6 -0.95) (end 1.6 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.6 0.95) (end 1.6 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.6 0.95) (end 1.6 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.9 0.7) (end 0.9 0.7) (layer B.Fab) (width 0.1)) + (fp_line (start 0.9 0.7) (end 0.9 -0.7) (layer B.Fab) (width 0.1)) + (fp_line (start 0.9 -0.7) (end -0.9 -0.7) (layer B.Fab) (width 0.1)) + (fp_line (start -0.9 -0.7) (end -0.9 0.7) (layer B.Fab) (width 0.1)) + (fp_line (start -0.3 0.35) (end -0.3 -0.35) (layer B.Fab) (width 0.1)) + (fp_line (start -0.3 0) (end -0.5 0) (layer B.Fab) (width 0.1)) + (fp_line (start -0.3 0) (end 0.2 0.35) (layer B.Fab) (width 0.1)) + (fp_line (start 0.2 0.35) (end 0.2 -0.35) (layer B.Fab) (width 0.1)) + (fp_line (start 0.2 -0.35) (end -0.3 0) (layer B.Fab) (width 0.1)) + (fp_line (start 0.2 0) (end 0.45 0) (layer B.Fab) (width 0.1)) + (fp_line (start -1.5 0.85) (end -1.5 -0.85) (layer B.SilkS) (width 0.12)) + (fp_text user %R (at 0 1.85 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (pad 2 smd rect (at 1.05 0 90) (size 0.6 0.45) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 1 smd rect (at -1.05 0 90) (size 0.6 0.45) (layers B.Cu B.Paste B.Mask) + (net 9 BUZZER)) + (model ${KISYS3DMOD}/Diode_SMD.3dshapes/D_SOD-323.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 602B2114) + (at 155.321 94.488 270) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags capacitor) + (path /6030A57B) + (attr smd) + (fp_text reference C10 (at -0.0508 0) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 1uF (at 0 -1.68 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.7 -0.98) (end -1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 0.98) (end 1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 0.98) (end 1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 -0.98) (end -1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.95 0 270) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 3V3)) + (pad 2 smd roundrect (at 0.95 0 270) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 1 GND)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 601685B0) + (at 158.943 98.044 180) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags capacitor) + (path /6031D01B) + (attr smd) + (fp_text reference C9 (at 0.0356 0.0254 90) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value .01uF (at 0 -1.68) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start 1.7 -0.98) (end -1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 0.98) (end 1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 0.98) (end 1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 -0.98) (end -1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 0.95 0 180) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 5 T+)) + (pad 1 smd roundrect (at -0.95 0 180) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 4 T-)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A (layer B.Cu) (tedit 5EBA9318) (tstamp 601353F6) + (at 132.8928 95.8112 270) + (descr "Tantalum Capacitor SMD Kemet-A (3216-18 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator") + (tags "capacitor tantalum") + (path /5FEE6095) + (attr smd) + (fp_text reference C8 (at -0.0216 -0.0254 180) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 10uF (at 0 -1.75 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start 1.6 0.8) (end -1.2 0.8) (layer B.Fab) (width 0.1)) + (fp_line (start -1.2 0.8) (end -1.6 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -1.6 0.4) (end -1.6 -0.8) (layer B.Fab) (width 0.1)) + (fp_line (start -1.6 -0.8) (end 1.6 -0.8) (layer B.Fab) (width 0.1)) + (fp_line (start 1.6 -0.8) (end 1.6 0.8) (layer B.Fab) (width 0.1)) + (fp_line (start 1.6 0.935) (end -2.31 0.935) (layer B.SilkS) (width 0.12)) + (fp_line (start -2.31 0.935) (end -2.31 -0.935) (layer B.SilkS) (width 0.12)) + (fp_line (start -2.31 -0.935) (end 1.6 -0.935) (layer B.SilkS) (width 0.12)) + (fp_line (start -2.3 -1.05) (end -2.3 1.05) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.3 1.05) (end 2.3 1.05) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.3 1.05) (end 2.3 -1.05) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.3 -1.05) (end -2.3 -1.05) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.8 0.8) (thickness 0.12)) (justify mirror)) + ) + (pad 1 smd roundrect (at -1.35 0 270) (size 1.4 1.35) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.185185) + (net 2 3V3)) + (pad 2 smd roundrect (at 1.35 0 270) (size 1.4 1.35) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.185185) + (net 1 GND)) + (model ${KISYS3DMOD}/Capacitor_Tantalum_SMD.3dshapes/CP_EIA-3216-18_Kemet-A.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 60135E13) + (at 132.9628 100.5662 270) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags capacitor) + (path /5FEE58D5) + (attr smd) + (fp_text reference C7 (at 0 0 180) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 1uF (at 0 -1.68 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.7 -0.98) (end -1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 0.98) (end 1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 0.98) (end 1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 -0.98) (end -1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.95 0 270) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 1 GND)) + (pad 2 smd roundrect (at 0.95 0 270) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 3 VIN)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 601353D2) + (at 164.653 94.361 180) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags capacitor) + (path /5FEE24BB) + (attr smd) + (fp_text reference C6 (at 0.0254 0.0254 270) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 0.1uF (at 0 -1.68) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start 1.7 -0.98) (end -1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 0.98) (end 1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 0.98) (end 1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 -0.98) (end -1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 0.95 0 180) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 3V3)) + (pad 1 smd roundrect (at -0.95 0 180) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 1 GND)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 602AC525) + (at 161.8996 98.7806 90) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags capacitor) + (path /5FEE1D89) + (attr smd) + (fp_text reference C5 (at 0.0508 0.0254) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 1uF[DNP] (at 0 -1.68 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start 1.7 -0.98) (end -1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 0.98) (end 1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 0.98) (end 1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 -0.98) (end -1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 0.95 0 90) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 12 VCAP[ICPDA])) + (pad 1 smd roundrect (at -0.95 0 90) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 1 GND)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric locked (layer B.Cu) (tedit 5F68FEEE) (tstamp 601353B0) + (at 144.3228 95.6564 180) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags capacitor) + (path /603B13C8) + (attr smd) + (fp_text reference C4 (at -0.0102 -0.0254 270) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 0.1uF (at 0 -1.68) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.7 -0.98) (end -1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 0.98) (end 1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 0.98) (end 1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 -0.98) (end -1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.95 0 180) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 3V3)) + (pad 2 smd roundrect (at 0.95 0 180) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 1 GND)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric locked (layer B.Cu) (tedit 5F68FEEE) (tstamp 6013539F) + (at 147.9296 95.6818) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags capacitor) + (path /6039E003) + (attr smd) + (fp_text reference C3 (at -0.0152 0 270) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 10uF (at 0 -1.68) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.7 -0.98) (end -1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 0.98) (end 1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 0.98) (end 1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 -0.98) (end -1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.95 0) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 2 3V3)) + (pad 2 smd roundrect (at 0.95 0) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 1 GND)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric (layer B.Cu) (tedit 5F68FEEE) (tstamp 6013538E) + (at 171.704 92.517 90) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags capacitor) + (path /5FFF87DD) + (attr smd) + (fp_text reference C2 (at 0 0) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 0.1uF (at 0 -1.68 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start 1.7 -0.98) (end -1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 0.98) (end 1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 0.98) (end 1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 -0.98) (end -1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 0.95 0 90) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 11 SW0)) + (pad 1 smd roundrect (at -0.95 0 90) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 1 GND)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric locked (layer B.Cu) (tedit 5F68FEEE) (tstamp 60135AFE) + (at 132.9128 88.8238 180) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags capacitor) + (path /5FED8E6C) + (attr smd) + (fp_text reference C1 (at -0.0102 0 90) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value 0.1uF (at 0 -1.68) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.7 -0.98) (end -1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.7 0.98) (end 1.7 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 0.98) (end 1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.7 -0.98) (end -1.7 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 1 smd roundrect (at -0.95 0 180) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 1 GND)) + (pad 2 smd roundrect (at 0.95 0 180) (size 1 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) + (net 10 NRST[RST])) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module MICROJELLY:MLT-8530 (layer B.Cu) (tedit 5FF09B04) (tstamp 602AC49C) + (at 168.0464 100.463) + (descr "SMD 8530, Magnetic NO 2700Hz Buzzer") + (tags "SMD 8530") + (path /5FEFC705) + (attr smd) + (fp_text reference BZ1 (at 0.2 -0.1972) (layer B.SilkS) + (effects (font (size 0.45 0.45) (thickness 0.1125)) (justify mirror)) + ) + (fp_text value Buzzer (at 0.1 -6) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -2.75 4.25) (end 2.75 4.25) (layer B.Fab) (width 0.1)) + (fp_line (start 2.75 4.25) (end 4.25 2.75) (layer B.Fab) (width 0.1)) + (fp_line (start 4.25 2.75) (end 4.25 -2.75) (layer B.Fab) (width 0.1)) + (fp_line (start 4.25 -2.75) (end 2.75 -4.25) (layer B.Fab) (width 0.1)) + (fp_line (start 2.75 -4.25) (end -2.75 -4.25) (layer B.Fab) (width 0.1)) + (fp_line (start -2.75 -4.25) (end -4.25 -2.75) (layer B.Fab) (width 0.1)) + (fp_line (start -4.25 -2.75) (end -4.25 2.75) (layer B.Fab) (width 0.1)) + (fp_line (start -4.25 2.75) (end -2.75 4.25) (layer B.Fab) (width 0.1)) + (fp_line (start 2 4.35) (end -2 4.35) (layer B.SilkS) (width 0.12)) + (fp_line (start -4.35 2) (end -4.35 -2) (layer B.SilkS) (width 0.12)) + (fp_line (start -2 -4.35) (end 2 -4.35) (layer B.SilkS) (width 0.12)) + (fp_line (start 4.35 -2) (end 4.35 2) (layer B.SilkS) (width 0.12)) + (fp_line (start -4.75 4.75) (end 4.75 4.75) (layer B.CrtYd) (width 0.05)) + (fp_line (start 4.75 4.75) (end 4.75 -4.75) (layer B.CrtYd) (width 0.05)) + (fp_line (start 4.75 -4.75) (end -4.75 -4.75) (layer B.CrtYd) (width 0.05)) + (fp_line (start -4.75 -4.75) (end -4.75 4.75) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0.1 -0.1) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user + (at -2.75 2.75 -270) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user + (at -1.5 3.25 -270) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (pad 1 smd rect (at -3.55 3.55 90) (size 2.3 2.3) (layers B.Cu B.Paste B.Mask) + (net 9 BUZZER)) + (pad 2 smd rect (at -3.55 -3.55 90) (size 2.3 2.3) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 3 smd rect (at 3.55 -3.55 90) (size 2.3 2.3) (layers B.Cu B.Paste B.Mask)) + (pad 4 smd rect (at 3.55 3.55 90) (size 2.3 2.3) (layers B.Cu B.Paste B.Mask)) + (model ${KISYS3DMOD}/Buzzer_Beeper.3dshapes/PUIAudio_SMT_0825_S_4_R.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module MICROJELLY:TS-1186D-C-A (layer B.Cu) (tedit 60183143) (tstamp 60188E8B) + (at 133.0198 84.0232 90) + (descr "SPST 4.7mm x 3.5mm Side actuated Tactile switch") + (path /5FEBF6AE) + (attr smd) + (fp_text reference SW1 (at 0 0 90) (layer B.SilkS) + (effects (font (size 0.0004 0.0004) (thickness 0.00012)) (justify mirror)) + ) + (fp_text value RESET (at 0 0 90) (layer B.SilkS) + (effects (font (size 0.0004 0.0004) (thickness 0.00012)) (justify mirror)) + ) + (fp_line (start 1.27 -0.635) (end 1.27 1.27) (layer B.SilkS) (width 0.127)) + (fp_line (start -1.27 -0.635) (end 1.27 -0.635) (layer B.SilkS) (width 0.127)) + (fp_line (start -1.27 1.27) (end -1.27 -0.635) (layer B.SilkS) (width 0.127)) + (fp_line (start 2.3495 1.7526) (end -2.3495 1.7526) (layer B.SilkS) (width 0.127)) + (fp_line (start 2.3495 -1.7526) (end 2.3495 1.7526) (layer B.SilkS) (width 0.127)) + (fp_line (start -2.3495 -1.7526) (end 2.3495 -1.7526) (layer B.SilkS) (width 0.127)) + (fp_line (start -2.3495 1.7526) (end -2.3495 -1.7526) (layer B.SilkS) (width 0.127)) + (pad P$6 thru_hole circle (at -0.01524 -1.36144 90) (size 0.762 0.762) (drill 0.762) (layers *.Cu *.Mask B.SilkS)) + (pad P$5 thru_hole circle (at -0.01778 1.39192 90) (size 0.762 0.762) (drill 0.762) (layers *.Cu *.Mask B.SilkS)) + (pad 2 smd rect (at 2.6289 0.8763 90) (size 1.5494 0.9906) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 2 smd rect (at -2.6289 0.8763 90) (size 1.5494 0.9906) (layers B.Cu B.Paste B.Mask) + (net 1 GND)) + (pad 1 smd rect (at 2.6289 -0.8763 90) (size 1.5494 0.9906) (layers B.Cu B.Paste B.Mask) + (net 10 NRST[RST])) + (pad 1 smd rect (at -2.6289 -0.8763 90) (size 1.5494 0.9906) (layers B.Cu B.Paste B.Mask) + (net 10 NRST[RST])) + ) + + (gr_text T- (at 153.035 109.1692) (layer F.SilkS) (tstamp 6018E97E) + (effects (font (size 1 0.45) (thickness 0.1125))) + ) + (gr_text T+ (at 149.03704 109.1692) (layer F.SilkS) (tstamp 6018E97C) + (effects (font (size 1 0.45) (thickness 0.1125))) + ) + (gr_text SSR1 (at 145.03908 109.1692) (layer F.SilkS) (tstamp 6018E97A) + (effects (font (size 1 0.45) (thickness 0.1125))) + ) + (gr_text SSR0 (at 141.04112 109.1692) (layer F.SilkS) (tstamp 6018E978) + (effects (font (size 1 0.45) (thickness 0.1125))) + ) + (gr_text GND (at 137.04316 109.1692) (layer F.SilkS) (tstamp 6018E976) + (effects (font (size 1 0.45) (thickness 0.1125))) + ) + (gr_text VIN (at 133.0452 109.1692) (layer F.SilkS) + (effects (font (size 1 0.45) (thickness 0.1125))) + ) + (gr_line (start 173.863 110) (end 130.936 110) (layer Edge.Cuts) (width 0.05)) + (gr_line (start 130.936 80.1) (end 173.863 80.1) (layer Edge.Cuts) (width 0.05)) + (gr_line (start 130.936 80.1) (end 130.936 110) (layer Edge.Cuts) (width 0.05) (tstamp 5FF247D0)) + (gr_line (start 173.863 110) (end 173.863 80.1) (layer Edge.Cuts) (width 0.05)) + (gr_poly (pts (xy 131.6784 83.7438) (xy 157.6784 83.7438) (xy 157.6784 102.2438) (xy 131.6784 102.2438)) (layer F.CrtYd) (width 0.1) (tstamp 5FF20C37)) + + (segment (start 149.892 90.329) (end 149.892 91.352) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 149.479 89.916) (end 149.892 90.329) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 147.892 90.233) (end 148.209 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 147.892 91.352) (end 147.892 90.233) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 149.392 90.083) (end 149.225 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 149.392 91.352) (end 149.392 90.083) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 149.225 89.916) (end 149.479 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 148.392 90.114) (end 148.59 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 148.392 91.352) (end 148.392 90.114) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 148.209 89.916) (end 148.59 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 141.892 90.264) (end 141.892 91.352) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 142.24 89.916) (end 141.892 90.264) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 145.392 90.274) (end 145.034 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 145.392 91.352) (end 145.392 90.274) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 144.892 91.352) (end 144.892 90.028) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 144.892 90.028) (end 144.78 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 145.034 89.916) (end 144.78 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 144.392 89.923) (end 144.399 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 144.392 91.352) (end 144.392 89.923) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 144.78 89.916) (end 144.399 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 143.892 90.044) (end 143.764 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 143.892 91.352) (end 143.892 90.044) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 144.399 89.916) (end 143.764 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 143.392 90.034) (end 143.51 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 143.392 91.352) (end 143.392 90.034) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 143.764 89.916) (end 143.51 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 142.892 90.06) (end 142.748 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 142.892 91.352) (end 142.892 90.06) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 143.51 89.916) (end 142.748 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 142.392 90.018) (end 142.494 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 142.494 89.916) (end 142.24 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 142.392 91.352) (end 142.392 90.018) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 142.748 89.916) (end 142.494 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 134.5838 81.3943) (end 136.2964 83.1069) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 133.8961 81.3943) (end 134.5838 81.3943) (width 0.304) (layer B.Cu) (net 1)) + (via (at 134.874 86.614) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 134.8359 86.6521) (end 134.874 86.614) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 133.8961 86.6521) (end 134.8359 86.6521) (width 0.304) (layer B.Cu) (net 1)) + (via (at 134.874 88.773) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 134.8232 88.8238) (end 134.874 88.773) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 133.8628 88.8238) (end 134.8232 88.8238) (width 0.304) (layer B.Cu) (net 1)) + (via (at 137.668 83.058) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 137.6191 83.1069) (end 137.668 83.058) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 136.2964 83.1069) (end 137.6191 83.1069) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 132.8928 99.5462) (end 132.9628 99.6162) (width 0.304) (layer B.Cu) (net 1)) + (via (at 132.715 98.552) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 132.7658 98.5012) (end 132.715 98.552) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 132.8928 98.5012) (end 132.7658 98.5012) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 132.8928 97.1612) (end 132.8928 98.5012) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 132.8928 98.5012) (end 132.8928 99.5462) (width 0.304) (layer B.Cu) (net 1)) + (via (at 139.954 102.616) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 140.0188 102.5512) (end 139.954 102.616) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 140.0188 101.0162) (end 140.0188 102.5512) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 143.392 95.6372) (end 143.3728 95.6564) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 143.392 91.352) (end 143.392 95.6372) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 143.3728 96.890434) (end 144.2131 97.730734) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 143.3728 95.6564) (end 143.3728 96.890434) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 144.2131 99.5515) (end 144.1806 99.584) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 144.2131 97.730734) (end 144.2131 99.5515) (width 0.304) (layer B.Cu) (net 1)) + (via (at 143.383 99.568) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 143.399 99.584) (end 143.383 99.568) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 144.1806 99.584) (end 143.399 99.584) (width 0.304) (layer B.Cu) (net 1)) + (via (at 155.321 96.52) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 155.321 95.438) (end 155.321 96.52) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 161.2138 94.7658) (end 162.1954 95.7474) (width 0.304) (layer B.Cu) (net 1)) + (via (at 162.1954 95.7474) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 161.2138 94.296) (end 161.2138 94.7658) (width 0.304) (layer B.Cu) (net 1)) + (via (at 171.704 84.963) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 171.7313 84.9357) (end 171.704 84.963) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 171.7313 83.947) (end 171.7313 84.9357) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 149.392 95.1694) (end 149.392 91.352) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 148.8796 95.6818) (end 149.392 95.1694) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 148.8796 96.8065) (end 147.9469 97.7392) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 148.8796 95.6818) (end 148.8796 96.8065) (width 0.304) (layer B.Cu) (net 1)) + (via (at 148.844 89.154) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 148.844 89.916) (end 148.844 89.154) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 148.59 89.916) (end 148.844 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 148.844 89.916) (end 149.225 89.916) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 147.090468 99.592468) (end 147.066 99.568) (width 0.304) (layer B.Cu) (net 1)) + (via (at 147.066 99.568) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 147.9144 99.592468) (end 147.090468 99.592468) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 161.8996 101.2866) (end 161.8996 99.7306) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 165.4204 94.1784) (end 165.603 94.361) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 165.4204 92.1435) (end 165.4204 94.1784) (width 0.304) (layer B.Cu) (net 1)) + (via (at 164.338 108.204) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (via (at 161.798 106.172) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 161.798 108.204) (end 161.798 106.172) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 164.4964 97.1338) (end 164.4964 96.913) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 161.8996 99.7306) (end 164.4964 97.1338) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 165.603 95.8064) (end 165.603 94.361) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 164.4964 96.913) (end 165.603 95.8064) (width 0.304) (layer B.Cu) (net 1)) + (via (at 164.4964 96.913) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (via (at 170.18 94.361) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 170.5954 94.7764) (end 170.18 94.361) (width 0.304) (layer F.Cu) (net 1)) + (segment (start 170.5954 95.7474) (end 170.5954 94.7764) (width 0.304) (layer F.Cu) (net 1)) + (via (at 172.085 94.615) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 1)) + (segment (start 171.704 94.234) (end 172.085 94.615) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 171.704 93.467) (end 171.704 94.234) (width 0.304) (layer B.Cu) (net 1)) + (segment (start 137.7188 94.7162) (end 137.7188 101.0162) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 149.311879 100.311199) (end 151.250999 100.311199) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 149.276209 100.346869) (end 149.311879 100.311199) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 141.012321 99.711799) (end 141.647391 100.346869) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 139.023201 99.711799) (end 141.012321 99.711799) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 151.250999 100.311199) (end 152.1554 101.2156) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 137.7188 101.0162) (end 139.023201 99.711799) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 153.24041 95.61859) (end 155.321 93.538) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 153.24041 100.13059) (end 153.24041 95.61859) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 152.1554 101.2156) (end 153.24041 100.13059) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 156.6458 93.538) (end 157.4038 94.296) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 155.321 93.538) (end 156.6458 93.538) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 162.35859 93.01659) (end 163.703 94.361) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 157.70821 93.01659) (end 162.35859 93.01659) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 157.4038 93.321) (end 157.70821 93.01659) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 157.4038 94.296) (end 157.4038 93.321) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 164.1204 93.9436) (end 164.1204 92.1435) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 163.703 94.361) (end 164.1204 93.9436) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 158.607101 80.824099) (end 157.4527 81.9785) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 164.885399 80.824099) (end 158.607101 80.824099) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 166.0398 81.9785) (end 164.885399 80.824099) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 172.73571 81.629854) (end 172.73571 86.72529) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 172.73571 86.72529) (end 171.704 87.757) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 171.929955 80.824099) (end 172.73571 81.629854) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 167.194201 80.824099) (end 171.929955 80.824099) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 166.0398 81.9785) (end 167.194201 80.824099) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 146.9542 95.6564) (end 146.9796 95.6818) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 145.2728 95.6564) (end 146.9542 95.6564) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 145.2728 100.251938) (end 145.177869 100.346869) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 145.2728 95.6564) (end 145.2728 100.251938) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 145.177869 100.346869) (end 149.276209 100.346869) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 141.647391 100.346869) (end 145.177869 100.346869) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 148.892 93.7694) (end 148.892 91.352) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 146.9796 95.6818) (end 148.892 93.7694) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 137.4638 94.4612) (end 137.7188 94.7162) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 132.8928 94.4612) (end 137.4638 94.4612) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 132.8928 91.7683) (end 133.8053 90.8558) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 132.8928 94.4612) (end 132.8928 91.7683) (width 0.304) (layer B.Cu) (net 2)) + (via (at 137.7188 94.7162) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 2)) + (segment (start 133.566575 90.563975) (end 137.7188 94.7162) (width 0.304) (layer F.Cu) (net 2)) + (segment (start 133.566575 82) (end 133.566575 90.563975) (width 0.304) (layer F.Cu) (net 2)) + (via (at 159.258 108.204) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 2)) + (via (at 153.924 100.203) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 2)) + (segment (start 153.85159 100.13059) (end 153.924 100.203) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 153.24041 100.13059) (end 153.85159 100.13059) (width 0.304) (layer B.Cu) (net 2)) + (segment (start 159.258 105.537) (end 159.258 108.204) (width 0.304) (layer F.Cu) (net 2)) + (segment (start 153.924 100.203) (end 159.258 105.537) (width 0.304) (layer F.Cu) (net 2)) + (segment (start 164.782899 80.721599) (end 166.0398 81.9785) (width 0.304) (layer F.Cu) (net 2)) + (segment (start 134.844976 80.721599) (end 164.782899 80.721599) (width 0.304) (layer F.Cu) (net 2)) + (segment (start 133.566575 82) (end 134.844976 80.721599) (width 0.304) (layer F.Cu) (net 2)) + (segment (start 133.1341 101.6875) (end 132.9628 101.5162) (width 0.304) (layer B.Cu) (net 3)) + (segment (start 133.1341 106.1847) (end 133.1341 101.6875) (width 0.304) (layer B.Cu) (net 3)) + (segment (start 134.9188 101.5162) (end 135.4188 101.0162) (width 0.304) (layer B.Cu) (net 3)) + (segment (start 132.9628 101.5162) (end 134.9188 101.5162) (width 0.304) (layer B.Cu) (net 3)) + (segment (start 159.9438 97.9932) (end 159.893 98.044) (width 0.1524) (layer B.Cu) (net 4)) + (segment (start 159.9438 94.296) (end 159.9438 97.9932) (width 0.1524) (layer B.Cu) (net 4)) + (segment (start 152.9341 105.0029) (end 152.9341 106.1847) (width 0.1524) (layer B.Cu) (net 4)) + (segment (start 159.893 98.044) (end 152.9341 105.0029) (width 0.1524) (layer B.Cu) (net 4)) + (segment (start 158.6738 97.3632) (end 157.993 98.044) (width 0.1524) (layer B.Cu) (net 5)) + (segment (start 158.6738 94.296) (end 158.6738 97.3632) (width 0.1524) (layer B.Cu) (net 5)) + (segment (start 157.1148 98.044) (end 148.9741 106.1847) (width 0.1524) (layer B.Cu) (net 5)) + (segment (start 157.993 98.044) (end 157.1148 98.044) (width 0.1524) (layer B.Cu) (net 5)) + (segment (start 150.392 95.5007) (end 150.392 91.352) (width 0.1524) (layer B.Cu) (net 6)) + (segment (start 150.5985 95.7072) (end 150.392 95.5007) (width 0.1524) (layer B.Cu) (net 6)) + (segment (start 143.2306 104.0082) (end 141.0541 106.1847) (width 0.1524) (layer B.Cu) (net 7)) + (segment (start 143.2306 101.584) (end 143.2306 104.0082) (width 0.1524) (layer B.Cu) (net 7)) + (segment (start 146.9644 104.1544) (end 144.9341 106.1847) (width 0.1524) (layer B.Cu) (net 8)) + (segment (start 146.9644 101.592468) (end 146.9644 104.1544) (width 0.1524) (layer B.Cu) (net 8)) + (segment (start 162.526 104.013) (end 161.8996 103.3866) (width 0.1524) (layer B.Cu) (net 9)) + (segment (start 164.4964 104.013) (end 162.526 104.013) (width 0.1524) (layer B.Cu) (net 9)) + (via (at 169.164 100.965) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 9)) + (segment (start 169.3204 100.8086) (end 169.164 100.965) (width 0.1524) (layer B.Cu) (net 9)) + (segment (start 169.3204 92.1435) (end 169.3204 100.8086) (width 0.1524) (layer B.Cu) (net 9)) + (segment (start 164.4964 103.52135) (end 164.4964 104.013) (width 0.1524) (layer F.Cu) (net 9)) + (via (at 164.4964 104.013) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 9)) + (segment (start 167.05275 100.965) (end 164.4964 103.52135) (width 0.1524) (layer F.Cu) (net 9)) + (segment (start 169.164 100.965) (end 167.05275 100.965) (width 0.1524) (layer F.Cu) (net 9)) + (segment (start 132.267961 86.527639) (end 132.1435 86.6521) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 132.267961 81.518761) (end 132.267961 86.527639) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 132.1435 81.3943) (end 132.267961 81.518761) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 132.1435 88.6431) (end 131.9628 88.8238) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 132.1435 86.6521) (end 132.1435 88.6431) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 131.9628 90.8383) (end 131.9803 90.8558) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 131.9628 88.8238) (end 131.9628 90.8383) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 167.3704 91.406) (end 167.3704 92.1435) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 169.74901 89.02739) (end 167.3704 91.406) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 138.3033 84.233152) (end 168.337278 84.233152) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 137.885871 84.650581) (end 138.3033 84.233152) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 133.217919 84.650581) (end 137.885871 84.650581) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 168.337278 84.233152) (end 169.74901 85.644884) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 132.1435 85.725) (end 133.217919 84.650581) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 169.74901 85.644884) (end 169.74901 89.02739) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 132.1435 86.6521) (end 132.1435 85.725) (width 0.1524) (layer B.Cu) (net 10)) + (via (at 167.386 106.172) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 10)) + (segment (start 167.3704 106.1564) (end 167.386 106.172) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 167.3704 92.1435) (end 167.3704 106.1564) (width 0.1524) (layer B.Cu) (net 10)) + (segment (start 166.878 106.68) (end 166.878 108.204) (width 0.1524) (layer F.Cu) (net 10)) + (segment (start 167.386 106.172) (end 166.878 106.68) (width 0.1524) (layer F.Cu) (net 10)) + (segment (start 162.1954 91.2474) (end 170.5954 91.2474) (width 0.1524) (layer F.Cu) (net 11)) + (via (at 163.957 87.63) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 11)) + (segment (start 164.1204 87.4666) (end 163.957 87.63) (width 0.1524) (layer B.Cu) (net 11)) + (segment (start 164.1204 86.4185) (end 164.1204 87.4666) (width 0.1524) (layer B.Cu) (net 11)) + (segment (start 167.705712 88.357712) (end 170.5954 91.2474) (width 0.1524) (layer F.Cu) (net 11)) + (segment (start 163.957 87.98921) (end 164.325502 88.357712) (width 0.1524) (layer F.Cu) (net 11)) + (segment (start 164.325502 88.357712) (end 167.705712 88.357712) (width 0.1524) (layer F.Cu) (net 11)) + (segment (start 163.957 87.63) (end 163.957 87.98921) (width 0.1524) (layer F.Cu) (net 11)) + (via (at 170.5954 91.2474) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 11)) + (segment (start 170.915 91.567) (end 170.5954 91.2474) (width 0.1524) (layer B.Cu) (net 11)) + (segment (start 171.704 91.567) (end 170.915 91.567) (width 0.1524) (layer B.Cu) (net 11)) + (segment (start 171.704 91.567) (end 171.704 89.582) (width 0.1524) (layer B.Cu) (net 11)) + (segment (start 161.8996 96.798318) (end 161.8996 97.8306) (width 0.1524) (layer B.Cu) (net 12)) + (segment (start 163.163519 95.534399) (end 161.8996 96.798318) (width 0.1524) (layer B.Cu) (net 12)) + (segment (start 164.50101 94.964848) (end 163.931459 95.534399) (width 0.1524) (layer B.Cu) (net 12)) + (segment (start 164.50101 93.43599) (end 164.50101 94.964848) (width 0.1524) (layer B.Cu) (net 12)) + (segment (start 163.931459 95.534399) (end 163.163519 95.534399) (width 0.1524) (layer B.Cu) (net 12)) + (segment (start 164.9704 92.9666) (end 164.50101 93.43599) (width 0.1524) (layer B.Cu) (net 12)) + (segment (start 164.9704 92.3435) (end 164.9704 92.9666) (width 0.1524) (layer B.Cu) (net 12)) + (segment (start 164.7704 92.1435) (end 164.9704 92.3435) (width 0.1524) (layer B.Cu) (net 12)) + (segment (start 159.8168 99.9134) (end 159.8168 99.9763) (width 0.1524) (layer B.Cu) (net 12)) + (segment (start 161.8996 97.8306) (end 159.8168 99.9134) (width 0.1524) (layer B.Cu) (net 12)) + (via (at 159.004 86.487) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 13)) + (segment (start 157.4577 84.9407) (end 159.004 86.487) (width 0.1524) (layer F.Cu) (net 13)) + (segment (start 157.4577 81.9785) (end 157.4577 84.9407) (width 0.1524) (layer F.Cu) (net 13)) + (segment (start 163.4019 86.487) (end 163.4704 86.4185) (width 0.1524) (layer B.Cu) (net 13)) + (segment (start 159.004 86.487) (end 163.4019 86.487) (width 0.1524) (layer B.Cu) (net 13)) + (via (at 154.178 81.915) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 14)) + (segment (start 154.2415 81.9785) (end 154.178 81.915) (width 0.1524) (layer F.Cu) (net 14)) + (segment (start 155.5827 81.9785) (end 154.2415 81.9785) (width 0.1524) (layer F.Cu) (net 14)) + (segment (start 155.5642 81.915) (end 155.6277 81.9785) (width 0.1524) (layer B.Cu) (net 14)) + (segment (start 154.178 81.915) (end 155.5642 81.915) (width 0.1524) (layer B.Cu) (net 14)) + (via (at 137.668 81.28) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 15)) + (segment (start 137.6661 81.2819) (end 137.668 81.28) (width 0.1524) (layer B.Cu) (net 15)) + (segment (start 136.2964 81.2819) (end 137.6661 81.2819) (width 0.1524) (layer B.Cu) (net 15)) + (segment (start 136.948 82) (end 135.441575 82) (width 0.1524) (layer F.Cu) (net 15)) + (segment (start 137.668 81.28) (end 136.948 82) (width 0.1524) (layer F.Cu) (net 15)) + (segment (start 166.7204 85.866274) (end 166.7204 86.4185) (width 0.1524) (layer B.Cu) (net 16)) + (segment (start 165.696897 84.842771) (end 166.7204 85.866274) (width 0.1524) (layer B.Cu) (net 16)) + (segment (start 146.3439 84.842771) (end 165.696897 84.842771) (width 0.1524) (layer B.Cu) (net 16)) + (segment (start 140.892 90.294671) (end 146.3439 84.842771) (width 0.1524) (layer B.Cu) (net 16)) + (segment (start 140.892 91.352) (end 140.892 90.294671) (width 0.1524) (layer B.Cu) (net 16)) + (segment (start 166.0704 87.156) (end 166.0704 86.4185) (width 0.1524) (layer B.Cu) (net 17)) + (segment (start 163.826948 88.239601) (end 164.986799 88.239601) (width 0.1524) (layer B.Cu) (net 17)) + (segment (start 163.729737 88.14239) (end 163.826948 88.239601) (width 0.1524) (layer B.Cu) (net 17)) + (segment (start 164.986799 88.239601) (end 166.0704 87.156) (width 0.1524) (layer B.Cu) (net 17)) + (segment (start 157.63241 88.14239) (end 163.729737 88.14239) (width 0.1524) (layer B.Cu) (net 17)) + (segment (start 157.4038 88.371) (end 157.63241 88.14239) (width 0.1524) (layer B.Cu) (net 17)) + (segment (start 157.4038 89.346) (end 157.4038 88.371) (width 0.1524) (layer B.Cu) (net 17)) + (segment (start 166.0704 85.681) (end 166.0704 86.4185) (width 0.1524) (layer B.Cu) (net 17)) + (segment (start 165.536981 85.147581) (end 166.0704 85.681) (width 0.1524) (layer B.Cu) (net 17)) + (segment (start 146.470156 85.147581) (end 165.536981 85.147581) (width 0.1524) (layer B.Cu) (net 17)) + (segment (start 141.392 90.225737) (end 146.470156 85.147581) (width 0.1524) (layer B.Cu) (net 17)) + (segment (start 141.392 91.352) (end 141.392 90.225737) (width 0.1524) (layer B.Cu) (net 17)) + (via (at 145.923 89.408) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 18)) + (segment (start 145.892 89.439) (end 145.923 89.408) (width 0.1524) (layer B.Cu) (net 18)) + (segment (start 145.892 91.352) (end 145.892 89.439) (width 0.1524) (layer B.Cu) (net 18)) + (via (at 165.608 89.789) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 18)) + (segment (start 146.86965 89.789) (end 165.608 89.789) (width 0.1524) (layer F.Cu) (net 18)) + (segment (start 146.48865 89.408) (end 146.86965 89.789) (width 0.1524) (layer F.Cu) (net 18)) + (segment (start 145.923 89.408) (end 146.48865 89.408) (width 0.1524) (layer F.Cu) (net 18)) + (segment (start 168.6704 87.2346) (end 168.6704 86.4185) (width 0.1524) (layer B.Cu) (net 18)) + (segment (start 166.116 89.789) (end 168.6704 87.2346) (width 0.1524) (layer B.Cu) (net 18)) + (segment (start 165.608 89.789) (end 166.116 89.789) (width 0.1524) (layer B.Cu) (net 18)) + (via (at 146.4094 90.043) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 19)) + (segment (start 146.392 90.0604) (end 146.4094 90.043) (width 0.1524) (layer B.Cu) (net 19)) + (segment (start 146.392 91.352) (end 146.392 90.0604) (width 0.1524) (layer B.Cu) (net 19)) + (segment (start 147.6794 91.313) (end 157.734 91.313) (width 0.1524) (layer F.Cu) (net 19)) + (via (at 157.734 91.313) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 19)) + (segment (start 146.4094 90.043) (end 147.6794 91.313) (width 0.1524) (layer F.Cu) (net 19)) + (segment (start 163.07661 91.17739) (end 165.656516 91.17739) (width 0.1524) (layer B.Cu) (net 19)) + (segment (start 165.656516 91.17739) (end 166.0704 91.591274) (width 0.1524) (layer B.Cu) (net 19)) + (segment (start 162.941 91.313) (end 163.07661 91.17739) (width 0.1524) (layer B.Cu) (net 19)) + (segment (start 166.0704 91.591274) (end 166.0704 92.1435) (width 0.1524) (layer B.Cu) (net 19)) + (segment (start 157.734 91.313) (end 162.941 91.313) (width 0.1524) (layer B.Cu) (net 19)) + (segment (start 165.4204 85.681) (end 165.4204 86.4185) (width 0.1524) (layer B.Cu) (net 20)) + (segment (start 165.19179 85.45239) (end 165.4204 85.681) (width 0.1524) (layer B.Cu) (net 20)) + (segment (start 147.187589 85.45239) (end 165.19179 85.45239) (width 0.1524) (layer B.Cu) (net 20)) + (segment (start 146.892 85.747979) (end 147.187589 85.45239) (width 0.1524) (layer B.Cu) (net 20)) + (segment (start 146.892 91.352) (end 146.892 85.747979) (width 0.1524) (layer B.Cu) (net 20)) + (segment (start 168.0204 87.003226) (end 166.183313 88.840313) (width 0.1524) (layer B.Cu) (net 21)) + (via (at 166.183313 88.840313) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 21)) + (segment (start 168.0204 86.4185) (end 168.0204 87.003226) (width 0.1524) (layer B.Cu) (net 21)) + (segment (start 161.266799 107.672799) (end 161.798 108.204) (width 0.1524) (layer F.Cu) (net 21)) + (segment (start 161.266799 90.264519) (end 161.266799 107.672799) (width 0.1524) (layer F.Cu) (net 21)) + (segment (start 161.312519 90.218799) (end 161.266799 90.264519) (width 0.1524) (layer F.Cu) (net 21)) + (segment (start 163.078281 90.218799) (end 161.312519 90.218799) (width 0.1524) (layer F.Cu) (net 21)) + (segment (start 163.131083 90.271601) (end 163.078281 90.218799) (width 0.1524) (layer F.Cu) (net 21)) + (segment (start 165.839649 90.271601) (end 163.131083 90.271601) (width 0.1524) (layer F.Cu) (net 21)) + (segment (start 166.183313 89.927937) (end 165.839649 90.271601) (width 0.1524) (layer F.Cu) (net 21)) + (segment (start 166.183313 88.840313) (end 166.183313 89.927937) (width 0.1524) (layer F.Cu) (net 21)) + (via (at 166.751 101.981) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 22)) + (segment (start 159.9965 101.981) (end 166.751 101.981) (width 0.1524) (layer B.Cu) (net 22)) + (segment (start 159.8168 101.8013) (end 159.9965 101.981) (width 0.1524) (layer B.Cu) (net 22)) + (segment (start 169.418 104.648) (end 169.418 108.204) (width 0.1524) (layer F.Cu) (net 22)) + (segment (start 166.751 101.981) (end 169.418 104.648) (width 0.1524) (layer F.Cu) (net 22)) + (segment (start 168.0204 107.0616) (end 168.0204 92.1435) (width 0.1524) (layer B.Cu) (net 23)) + (segment (start 166.878 108.204) (end 168.0204 107.0616) (width 0.1524) (layer B.Cu) (net 23)) + (segment (start 168.6704 107.4564) (end 168.6704 92.1435) (width 0.1524) (layer B.Cu) (net 24)) + (segment (start 169.418 108.204) (end 168.6704 107.4564) (width 0.1524) (layer B.Cu) (net 24)) + (via (at 164.719 87.757) (size 0.508) (drill 0.254) (layers F.Cu B.Cu) (net 25)) + (segment (start 164.7704 87.7056) (end 164.719 87.757) (width 0.1524) (layer B.Cu) (net 25)) + (segment (start 164.7704 86.4185) (end 164.7704 87.7056) (width 0.1524) (layer B.Cu) (net 25)) + (segment (start 168.5798 83.8962) (end 168.5798 81.9785) (width 0.1524) (layer F.Cu) (net 25)) + (segment (start 164.719 87.757) (end 168.5798 83.8962) (width 0.1524) (layer F.Cu) (net 25)) + (segment (start 168.7233 82.122) (end 168.5798 81.9785) (width 0.1524) (layer B.Cu) (net 25)) + (segment (start 171.7313 82.122) (end 168.7233 82.122) (width 0.1524) (layer B.Cu) (net 25)) + (segment (start 142.3881 96.074018) (end 142.3881 97.730734) (width 0.1524) (layer B.Cu) (net 26)) + (segment (start 139.801681 93.487599) (end 142.3881 96.074018) (width 0.1524) (layer B.Cu) (net 26)) + (segment (start 137.175599 93.487599) (end 139.801681 93.487599) (width 0.1524) (layer B.Cu) (net 26)) + (segment (start 135.623399 87.344119) (end 135.623399 91.935399) (width 0.1524) (layer B.Cu) (net 26)) + (segment (start 138.429556 84.537962) (end 135.623399 87.344119) (width 0.1524) (layer B.Cu) (net 26)) + (segment (start 169.3204 85.681) (end 168.177362 84.537962) (width 0.1524) (layer B.Cu) (net 26)) + (segment (start 135.623399 91.935399) (end 137.175599 93.487599) (width 0.1524) (layer B.Cu) (net 26)) + (segment (start 168.177362 84.537962) (end 138.429556 84.537962) (width 0.1524) (layer B.Cu) (net 26)) + (segment (start 169.3204 86.4185) (end 169.3204 85.681) (width 0.1524) (layer B.Cu) (net 26)) + (segment (start 142.3881 99.4765) (end 142.2806 99.584) (width 0.1524) (layer B.Cu) (net 26)) + (segment (start 142.3881 97.730734) (end 142.3881 99.4765) (width 0.1524) (layer B.Cu) (net 26)) + (segment (start 150.088459 96.986999) (end 148.407648 98.66781) (width 0.1524) (layer B.Cu) (net 27)) + (segment (start 147.05051 98.66781) (end 146.1219 97.7392) (width 0.1524) (layer B.Cu) (net 27)) + (segment (start 148.407648 98.66781) (end 147.05051 98.66781) (width 0.1524) (layer B.Cu) (net 27)) + (segment (start 150.708059 96.986999) (end 150.088459 96.986999) (width 0.1524) (layer B.Cu) (net 27)) + (segment (start 151.33961 96.355448) (end 150.708059 96.986999) (width 0.1524) (layer B.Cu) (net 27)) + (segment (start 151.33961 95.058952) (end 151.33961 96.355448) (width 0.1524) (layer B.Cu) (net 27)) + (segment (start 154.255062 92.1435) (end 151.33961 95.058952) (width 0.1524) (layer B.Cu) (net 27)) + (segment (start 163.4704 92.1435) (end 154.255062 92.1435) (width 0.1524) (layer B.Cu) (net 27)) + (segment (start 146.1219 99.484968) (end 146.0144 99.592468) (width 0.1524) (layer B.Cu) (net 27)) + (segment (start 146.1219 97.7392) (end 146.1219 99.484968) (width 0.1524) (layer B.Cu) (net 27)) + (segment (start 151.1554 96.9753) (end 152.4235 95.7072) (width 0.1524) (layer B.Cu) (net 28)) + (segment (start 151.1554 97.9656) (end 151.1554 96.9753) (width 0.1524) (layer B.Cu) (net 28)) + (segment (start 158.6738 90.321) (end 158.6738 89.346) (width 0.1524) (layer B.Cu) (net 29)) + (segment (start 159.20722 90.85442) (end 158.6738 90.321) (width 0.1524) (layer B.Cu) (net 29)) + (segment (start 166.16882 90.85442) (end 159.20722 90.85442) (width 0.1524) (layer B.Cu) (net 29)) + (segment (start 166.7204 91.406) (end 166.16882 90.85442) (width 0.1524) (layer B.Cu) (net 29)) + (segment (start 166.7204 92.1435) (end 166.7204 91.406) (width 0.1524) (layer B.Cu) (net 29)) + (segment (start 167.3704 86.970726) (end 167.3704 86.4185) (width 0.1524) (layer B.Cu) (net 30)) + (segment (start 163.791516 90.54961) (end 167.3704 86.970726) (width 0.1524) (layer B.Cu) (net 30)) + (segment (start 160.17241 90.54961) (end 163.791516 90.54961) (width 0.1524) (layer B.Cu) (net 30)) + (segment (start 159.9438 90.321) (end 160.17241 90.54961) (width 0.1524) (layer B.Cu) (net 30)) + (segment (start 159.9438 89.346) (end 159.9438 90.321) (width 0.1524) (layer B.Cu) (net 30)) + + (zone (net 1) (net_name GND) (layer F.Cu) (tstamp 602AD4F8) (hatch edge 0.508) + (connect_pads (clearance 0.254)) + (min_thickness 0.254) + (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon + (pts + (xy 173.863 80.095827) (xy 173.863 109.940827) (xy 130.937 109.982) (xy 130.937 80.137) + ) + ) + (filled_polygon + (pts + (xy 133.887993 80.924807) (xy 133.810325 80.917157) (xy 133.322825 80.917157) (xy 133.200583 80.929197) (xy 133.083038 80.964854) + (xy 132.974709 81.022757) (xy 132.879757 81.100682) (xy 132.801832 81.195634) (xy 132.743929 81.303963) (xy 132.708272 81.421508) + (xy 132.696232 81.54375) (xy 132.696232 82.45625) (xy 132.708272 82.578492) (xy 132.743929 82.696037) (xy 132.801832 82.804366) + (xy 132.879757 82.899318) (xy 132.974709 82.977243) (xy 133.033575 83.008708) (xy 133.033576 90.53779) (xy 133.030997 90.563975) + (xy 133.041288 90.668461) (xy 133.060263 90.731012) (xy 133.071766 90.768932) (xy 133.121259 90.861526) (xy 133.187865 90.942686) + (xy 133.208197 90.959372) (xy 137.097763 94.848939) (xy 137.108203 94.901423) (xy 137.156071 95.016985) (xy 137.225564 95.120989) + (xy 137.314011 95.209436) (xy 137.418015 95.278929) (xy 137.533577 95.326797) (xy 137.656258 95.3512) (xy 137.781342 95.3512) + (xy 137.904023 95.326797) (xy 138.019585 95.278929) (xy 138.123589 95.209436) (xy 138.212036 95.120989) (xy 138.281529 95.016985) + (xy 138.329397 94.901423) (xy 138.3538 94.778742) (xy 138.3538 94.653658) (xy 138.329397 94.530977) (xy 138.281529 94.415415) + (xy 138.212036 94.311411) (xy 138.123589 94.222964) (xy 138.019585 94.153471) (xy 137.904023 94.105603) (xy 137.851539 94.095163) + (xy 134.099575 90.3432) (xy 134.099575 84.736468) (xy 134.189453 84.773697) (xy 134.33667 84.80298) (xy 134.48677 84.80298) + (xy 134.633987 84.773697) (xy 134.772662 84.716256) (xy 134.897467 84.632864) (xy 135.003604 84.526727) (xy 135.086996 84.401922) + (xy 135.144437 84.263247) (xy 135.17372 84.11603) (xy 135.17372 83.96593) (xy 135.144437 83.818713) (xy 135.086996 83.680038) + (xy 135.003604 83.555233) (xy 134.897467 83.449096) (xy 134.772662 83.365704) (xy 134.633987 83.308263) (xy 134.48677 83.27898) + (xy 134.33667 83.27898) (xy 134.189453 83.308263) (xy 134.099575 83.345492) (xy 134.099575 83.008708) (xy 134.158441 82.977243) + (xy 134.253393 82.899318) (xy 134.331318 82.804366) (xy 134.389221 82.696037) (xy 134.424878 82.578492) (xy 134.436918 82.45625) + (xy 134.436918 81.883432) (xy 134.571232 81.749118) (xy 134.571232 82.45625) (xy 134.583272 82.578492) (xy 134.618929 82.696037) + (xy 134.676832 82.804366) (xy 134.754757 82.899318) (xy 134.849709 82.977243) (xy 134.958038 83.035146) (xy 135.075583 83.070803) + (xy 135.197825 83.082843) (xy 135.685325 83.082843) (xy 135.807567 83.070803) (xy 135.925112 83.035146) (xy 136.033441 82.977243) + (xy 136.128393 82.899318) (xy 136.206318 82.804366) (xy 136.264221 82.696037) (xy 136.299878 82.578492) (xy 136.311824 82.4572) + (xy 136.92555 82.4572) (xy 136.948 82.459411) (xy 136.97045 82.4572) (xy 136.97046 82.4572) (xy 137.037627 82.450585) + (xy 137.123809 82.424441) (xy 137.203236 82.381987) (xy 137.272853 82.324853) (xy 137.287174 82.307403) (xy 137.679578 81.915) + (xy 137.730542 81.915) (xy 137.853223 81.890597) (xy 137.968785 81.842729) (xy 138.072789 81.773236) (xy 138.161236 81.684789) + (xy 138.230729 81.580785) (xy 138.278597 81.465223) (xy 138.303 81.342542) (xy 138.303 81.254599) (xy 154.774948 81.254599) + (xy 154.760054 81.282463) (xy 154.724397 81.400008) (xy 154.712451 81.5213) (xy 154.678645 81.5213) (xy 154.671236 81.510211) + (xy 154.582789 81.421764) (xy 154.478785 81.352271) (xy 154.363223 81.304403) (xy 154.240542 81.28) (xy 154.115458 81.28) + (xy 153.992777 81.304403) (xy 153.877215 81.352271) (xy 153.773211 81.421764) (xy 153.684764 81.510211) (xy 153.615271 81.614215) + (xy 153.567403 81.729777) (xy 153.543 81.852458) (xy 153.543 81.977542) (xy 153.567403 82.100223) (xy 153.615271 82.215785) + (xy 153.684764 82.319789) (xy 153.773211 82.408236) (xy 153.877215 82.477729) (xy 153.992777 82.525597) (xy 154.115458 82.55) + (xy 154.240542 82.55) (xy 154.363223 82.525597) (xy 154.478785 82.477729) (xy 154.541686 82.4357) (xy 154.712451 82.4357) + (xy 154.724397 82.556992) (xy 154.760054 82.674537) (xy 154.817957 82.782866) (xy 154.895882 82.877818) (xy 154.990834 82.955743) + (xy 155.099163 83.013646) (xy 155.216708 83.049303) (xy 155.33895 83.061343) (xy 155.82645 83.061343) (xy 155.948692 83.049303) + (xy 156.066237 83.013646) (xy 156.174566 82.955743) (xy 156.269518 82.877818) (xy 156.347443 82.782866) (xy 156.405346 82.674537) + (xy 156.441003 82.556992) (xy 156.453043 82.43475) (xy 156.453043 81.52225) (xy 156.441003 81.400008) (xy 156.405346 81.282463) + (xy 156.390452 81.254599) (xy 156.649948 81.254599) (xy 156.635054 81.282463) (xy 156.599397 81.400008) (xy 156.587357 81.52225) + (xy 156.587357 82.43475) (xy 156.599397 82.556992) (xy 156.635054 82.674537) (xy 156.692957 82.782866) (xy 156.770882 82.877818) + (xy 156.865834 82.955743) (xy 156.974163 83.013646) (xy 157.0005 83.021635) (xy 157.000501 84.91824) (xy 156.998289 84.9407) + (xy 157.000501 84.96316) (xy 157.007116 85.030327) (xy 157.03326 85.116509) (xy 157.075714 85.195936) (xy 157.132848 85.265553) + (xy 157.150293 85.27987) (xy 158.369 86.498578) (xy 158.369 86.549542) (xy 158.393403 86.672223) (xy 158.441271 86.787785) + (xy 158.510764 86.891789) (xy 158.599211 86.980236) (xy 158.703215 87.049729) (xy 158.818777 87.097597) (xy 158.941458 87.122) + (xy 159.066542 87.122) (xy 159.189223 87.097597) (xy 159.304785 87.049729) (xy 159.408789 86.980236) (xy 159.497236 86.891789) + (xy 159.566729 86.787785) (xy 159.614597 86.672223) (xy 159.639 86.549542) (xy 159.639 86.424458) (xy 159.614597 86.301777) + (xy 159.566729 86.186215) (xy 159.497236 86.082211) (xy 159.408789 85.993764) (xy 159.304785 85.924271) (xy 159.189223 85.876403) + (xy 159.066542 85.852) (xy 159.015578 85.852) (xy 157.9149 84.751323) (xy 157.9149 83.021635) (xy 157.941237 83.013646) + (xy 158.049566 82.955743) (xy 158.144518 82.877818) (xy 158.222443 82.782866) (xy 158.280346 82.674537) (xy 158.316003 82.556992) + (xy 158.328043 82.43475) (xy 158.328043 82.335391) (xy 162.058319 82.335391) (xy 162.155643 82.609752) (xy 162.304622 82.859855) + (xy 162.499531 83.076088) (xy 162.73288 83.250141) (xy 162.995701 83.375325) (xy 163.14291 83.419976) (xy 163.3728 83.298655) + (xy 163.3728 82.1055) (xy 162.178986 82.1055) (xy 162.058319 82.335391) (xy 158.328043 82.335391) (xy 158.328043 81.52225) + (xy 158.316003 81.400008) (xy 158.280346 81.282463) (xy 158.265452 81.254599) (xy 162.210831 81.254599) (xy 162.155643 81.347248) + (xy 162.058319 81.621609) (xy 162.178986 81.8515) (xy 163.3728 81.8515) (xy 163.3728 81.8315) (xy 163.6268 81.8315) + (xy 163.6268 81.8515) (xy 163.6468 81.8515) (xy 163.6468 82.1055) (xy 163.6268 82.1055) (xy 163.6268 83.298655) + (xy 163.85669 83.419976) (xy 164.003899 83.375325) (xy 164.26672 83.250141) (xy 164.500069 83.076088) (xy 164.694978 82.859855) + (xy 164.843957 82.609752) (xy 164.901572 82.447332) (xy 164.948902 82.561597) (xy 165.08362 82.763217) (xy 165.255083 82.93468) + (xy 165.456703 83.069398) (xy 165.680731 83.162193) (xy 165.918557 83.2095) (xy 166.161043 83.2095) (xy 166.398869 83.162193) + (xy 166.622897 83.069398) (xy 166.824517 82.93468) (xy 166.99598 82.763217) (xy 167.130698 82.561597) (xy 167.223493 82.337569) + (xy 167.2708 82.099743) (xy 167.2708 81.857257) (xy 167.223493 81.619431) (xy 167.130698 81.395403) (xy 166.99598 81.193783) + (xy 166.824517 81.02232) (xy 166.622897 80.887602) (xy 166.398869 80.794807) (xy 166.161043 80.7475) (xy 165.918557 80.7475) + (xy 165.680731 80.794807) (xy 165.630633 80.815558) (xy 165.321075 80.506) (xy 173.457001 80.506) (xy 173.457 106.798897) + (xy 173.403374 106.669432) (xy 173.224881 106.402298) (xy 172.997702 106.175119) (xy 172.730568 105.996626) (xy 172.433745 105.873678) + (xy 172.11864 105.811) (xy 171.79736 105.811) (xy 171.482255 105.873678) (xy 171.185432 105.996626) (xy 170.918298 106.175119) + (xy 170.691119 106.402298) (xy 170.521213 106.65658) (xy 170.486322 106.591304) (xy 170.438711 106.533289) (xy 170.380696 106.485678) + (xy 170.314508 106.450299) (xy 170.242689 106.428513) (xy 170.168 106.421157) (xy 169.8752 106.421157) (xy 169.8752 104.670452) + (xy 169.877411 104.648) (xy 169.8752 104.625548) (xy 169.8752 104.62554) (xy 169.868585 104.558373) (xy 169.842508 104.472412) + (xy 169.842441 104.47219) (xy 169.799987 104.392764) (xy 169.757171 104.340592) (xy 169.757165 104.340586) (xy 169.742853 104.323147) + (xy 169.725415 104.308836) (xy 167.386 101.969423) (xy 167.386 101.918458) (xy 167.361597 101.795777) (xy 167.313729 101.680215) + (xy 167.244236 101.576211) (xy 167.166176 101.498151) (xy 167.242128 101.4222) (xy 168.723175 101.4222) (xy 168.759211 101.458236) + (xy 168.863215 101.527729) (xy 168.978777 101.575597) (xy 169.101458 101.6) (xy 169.226542 101.6) (xy 169.349223 101.575597) + (xy 169.464785 101.527729) (xy 169.568789 101.458236) (xy 169.657236 101.369789) (xy 169.726729 101.265785) (xy 169.774597 101.150223) + (xy 169.799 101.027542) (xy 169.799 100.902458) (xy 169.774597 100.779777) (xy 169.726729 100.664215) (xy 169.657236 100.560211) + (xy 169.568789 100.471764) (xy 169.464785 100.402271) (xy 169.349223 100.354403) (xy 169.226542 100.33) (xy 169.101458 100.33) + (xy 168.978777 100.354403) (xy 168.863215 100.402271) (xy 168.759211 100.471764) (xy 168.723175 100.5078) (xy 167.0752 100.5078) + (xy 167.05275 100.505589) (xy 167.0303 100.5078) (xy 167.03029 100.5078) (xy 166.963123 100.514415) (xy 166.876941 100.540559) + (xy 166.797514 100.583013) (xy 166.727897 100.640147) (xy 166.71358 100.657592) (xy 164.188997 103.182176) (xy 164.171547 103.196497) + (xy 164.114413 103.266115) (xy 164.071959 103.345542) (xy 164.045815 103.431724) (xy 164.0392 103.498891) (xy 164.0392 103.4989) + (xy 164.036989 103.52135) (xy 164.0392 103.543801) (xy 164.0392 103.572175) (xy 164.003164 103.608211) (xy 163.933671 103.712215) + (xy 163.885803 103.827777) (xy 163.8614 103.950458) (xy 163.8614 104.075542) (xy 163.885803 104.198223) (xy 163.933671 104.313785) + (xy 164.003164 104.417789) (xy 164.091611 104.506236) (xy 164.195615 104.575729) (xy 164.311177 104.623597) (xy 164.433858 104.648) + (xy 164.558942 104.648) (xy 164.681623 104.623597) (xy 164.797185 104.575729) (xy 164.901189 104.506236) (xy 164.989636 104.417789) + (xy 165.059129 104.313785) (xy 165.106997 104.198223) (xy 165.1314 104.075542) (xy 165.1314 103.950458) (xy 165.106997 103.827777) + (xy 165.059129 103.712215) (xy 165.016264 103.648063) (xy 166.268151 102.396176) (xy 166.346211 102.474236) (xy 166.450215 102.543729) + (xy 166.565777 102.591597) (xy 166.688458 102.616) (xy 166.739423 102.616) (xy 168.9608 104.837379) (xy 168.9608 106.421157) + (xy 168.668 106.421157) (xy 168.593311 106.428513) (xy 168.521492 106.450299) (xy 168.455304 106.485678) (xy 168.397289 106.533289) + (xy 168.349678 106.591304) (xy 168.314299 106.657492) (xy 168.292513 106.729311) (xy 168.285157 106.804) (xy 168.285157 109.594) + (xy 168.010843 109.594) (xy 168.010843 106.804) (xy 168.003487 106.729311) (xy 167.981701 106.657492) (xy 167.946322 106.591304) + (xy 167.903997 106.539731) (xy 167.948729 106.472785) (xy 167.996597 106.357223) (xy 168.021 106.234542) (xy 168.021 106.109458) + (xy 167.996597 105.986777) (xy 167.948729 105.871215) (xy 167.879236 105.767211) (xy 167.790789 105.678764) (xy 167.686785 105.609271) + (xy 167.571223 105.561403) (xy 167.448542 105.537) (xy 167.323458 105.537) (xy 167.200777 105.561403) (xy 167.085215 105.609271) + (xy 166.981211 105.678764) (xy 166.892764 105.767211) (xy 166.823271 105.871215) (xy 166.775403 105.986777) (xy 166.751 106.109458) + (xy 166.751 106.160423) (xy 166.570597 106.340826) (xy 166.553147 106.355147) (xy 166.498974 106.421157) (xy 166.128 106.421157) + (xy 166.053311 106.428513) (xy 165.981492 106.450299) (xy 165.915304 106.485678) (xy 165.857289 106.533289) (xy 165.809678 106.591304) + (xy 165.774299 106.657492) (xy 165.752513 106.729311) (xy 165.745157 106.804) (xy 165.745157 109.594) (xy 165.726044 109.594) + (xy 165.723 108.48975) (xy 165.56425 108.331) (xy 164.465 108.331) (xy 164.465 108.351) (xy 164.211 108.351) + (xy 164.211 108.331) (xy 163.11175 108.331) (xy 162.953 108.48975) (xy 162.949956 109.594) (xy 162.930843 109.594) + (xy 162.930843 106.804) (xy 162.949928 106.804) (xy 162.953 107.91825) (xy 163.11175 108.077) (xy 164.211 108.077) + (xy 164.211 106.32775) (xy 164.465 106.32775) (xy 164.465 108.077) (xy 165.56425 108.077) (xy 165.723 107.91825) + (xy 165.726072 106.804) (xy 165.713812 106.679518) (xy 165.677502 106.55982) (xy 165.618537 106.449506) (xy 165.539185 106.352815) + (xy 165.442494 106.273463) (xy 165.33218 106.214498) (xy 165.212482 106.178188) (xy 165.088 106.165928) (xy 164.62375 106.169) + (xy 164.465 106.32775) (xy 164.211 106.32775) (xy 164.05225 106.169) (xy 163.588 106.165928) (xy 163.463518 106.178188) + (xy 163.34382 106.214498) (xy 163.233506 106.273463) (xy 163.136815 106.352815) (xy 163.057463 106.449506) (xy 162.998498 106.55982) + (xy 162.962188 106.679518) (xy 162.949928 106.804) (xy 162.930843 106.804) (xy 162.923487 106.729311) (xy 162.901701 106.657492) + (xy 162.866322 106.591304) (xy 162.818711 106.533289) (xy 162.760696 106.485678) (xy 162.694508 106.450299) (xy 162.622689 106.428513) + (xy 162.548 106.421157) (xy 161.723999 106.421157) (xy 161.723999 97.183777) (xy 161.90965 97.1824) (xy 162.0684 97.02365) + (xy 162.0684 95.8744) (xy 162.3224 95.8744) (xy 162.3224 97.02365) (xy 162.48115 97.1824) (xy 162.8954 97.185472) + (xy 163.019882 97.173212) (xy 163.13958 97.136902) (xy 163.249894 97.077937) (xy 163.346585 96.998585) (xy 163.425937 96.901894) + (xy 163.484902 96.79158) (xy 163.521212 96.671882) (xy 163.533472 96.5474) (xy 169.257328 96.5474) (xy 169.269588 96.671882) + (xy 169.305898 96.79158) (xy 169.364863 96.901894) (xy 169.444215 96.998585) (xy 169.540906 97.077937) (xy 169.65122 97.136902) + (xy 169.770918 97.173212) (xy 169.8954 97.185472) (xy 170.30965 97.1824) (xy 170.4684 97.02365) (xy 170.4684 95.8744) + (xy 170.7224 95.8744) (xy 170.7224 97.02365) (xy 170.88115 97.1824) (xy 171.2954 97.185472) (xy 171.419882 97.173212) + (xy 171.53958 97.136902) (xy 171.649894 97.077937) (xy 171.746585 96.998585) (xy 171.825937 96.901894) (xy 171.884902 96.79158) + (xy 171.921212 96.671882) (xy 171.933472 96.5474) (xy 171.9304 96.03315) (xy 171.77165 95.8744) (xy 170.7224 95.8744) + (xy 170.4684 95.8744) (xy 169.41915 95.8744) (xy 169.2604 96.03315) (xy 169.257328 96.5474) (xy 163.533472 96.5474) + (xy 163.5304 96.03315) (xy 163.37165 95.8744) (xy 162.3224 95.8744) (xy 162.0684 95.8744) (xy 162.0484 95.8744) + (xy 162.0484 95.6204) (xy 162.0684 95.6204) (xy 162.0684 94.47115) (xy 162.3224 94.47115) (xy 162.3224 95.6204) + (xy 163.37165 95.6204) (xy 163.5304 95.46165) (xy 163.533472 94.9474) (xy 169.257328 94.9474) (xy 169.2604 95.46165) + (xy 169.41915 95.6204) (xy 170.4684 95.6204) (xy 170.4684 94.47115) (xy 170.7224 94.47115) (xy 170.7224 95.6204) + (xy 171.77165 95.6204) (xy 171.9304 95.46165) (xy 171.933472 94.9474) (xy 171.921212 94.822918) (xy 171.884902 94.70322) + (xy 171.825937 94.592906) (xy 171.746585 94.496215) (xy 171.649894 94.416863) (xy 171.53958 94.357898) (xy 171.419882 94.321588) + (xy 171.2954 94.309328) (xy 170.88115 94.3124) (xy 170.7224 94.47115) (xy 170.4684 94.47115) (xy 170.30965 94.3124) + (xy 169.8954 94.309328) (xy 169.770918 94.321588) (xy 169.65122 94.357898) (xy 169.540906 94.416863) (xy 169.444215 94.496215) + (xy 169.364863 94.592906) (xy 169.305898 94.70322) (xy 169.269588 94.822918) (xy 169.257328 94.9474) (xy 163.533472 94.9474) + (xy 163.521212 94.822918) (xy 163.484902 94.70322) (xy 163.425937 94.592906) (xy 163.346585 94.496215) (xy 163.249894 94.416863) + (xy 163.13958 94.357898) (xy 163.019882 94.321588) (xy 162.8954 94.309328) (xy 162.48115 94.3124) (xy 162.3224 94.47115) + (xy 162.0684 94.47115) (xy 161.90965 94.3124) (xy 161.723999 94.311023) (xy 161.723999 92.430243) (xy 162.8954 92.430243) + (xy 162.970089 92.422887) (xy 163.041908 92.401101) (xy 163.108096 92.365722) (xy 163.166111 92.318111) (xy 163.213722 92.260096) + (xy 163.249101 92.193908) (xy 163.270887 92.122089) (xy 163.278243 92.0474) (xy 163.278243 91.7046) (xy 169.512557 91.7046) + (xy 169.512557 92.0474) (xy 169.519913 92.122089) (xy 169.541699 92.193908) (xy 169.577078 92.260096) (xy 169.624689 92.318111) + (xy 169.682704 92.365722) (xy 169.748892 92.401101) (xy 169.820711 92.422887) (xy 169.8954 92.430243) (xy 171.2954 92.430243) + (xy 171.370089 92.422887) (xy 171.441908 92.401101) (xy 171.508096 92.365722) (xy 171.566111 92.318111) (xy 171.613722 92.260096) + (xy 171.649101 92.193908) (xy 171.670887 92.122089) (xy 171.678243 92.0474) (xy 171.678243 90.4474) (xy 171.670887 90.372711) + (xy 171.649101 90.300892) (xy 171.613722 90.234704) (xy 171.566111 90.176689) (xy 171.508096 90.129078) (xy 171.441908 90.093699) + (xy 171.370089 90.071913) (xy 171.2954 90.064557) (xy 170.059135 90.064557) (xy 168.044886 88.050309) (xy 168.030565 88.032859) + (xy 167.960948 87.975725) (xy 167.881521 87.933271) (xy 167.795339 87.907127) (xy 167.728172 87.900512) (xy 167.728162 87.900512) + (xy 167.705712 87.898301) (xy 167.683262 87.900512) (xy 165.337894 87.900512) (xy 165.354 87.819542) (xy 165.354 87.768577) + (xy 168.887215 84.235364) (xy 168.904653 84.221053) (xy 168.918965 84.203614) (xy 168.918971 84.203608) (xy 168.961787 84.151436) + (xy 169.004241 84.07201) (xy 169.010326 84.051951) (xy 169.030385 83.985827) (xy 169.037 83.91866) (xy 169.037 83.91865) + (xy 169.039211 83.8962) (xy 169.037 83.87375) (xy 169.037 83.211343) (xy 169.4298 83.211343) (xy 169.504489 83.203987) + (xy 169.576308 83.182201) (xy 169.642496 83.146822) (xy 169.700511 83.099211) (xy 169.748122 83.041196) (xy 169.783501 82.975008) + (xy 169.805287 82.903189) (xy 169.812643 82.8285) (xy 169.812643 81.1285) (xy 169.805287 81.053811) (xy 169.783501 80.981992) + (xy 169.748122 80.915804) (xy 169.700511 80.857789) (xy 169.642496 80.810178) (xy 169.576308 80.774799) (xy 169.504489 80.753013) + (xy 169.4298 80.745657) (xy 167.7298 80.745657) (xy 167.655111 80.753013) (xy 167.583292 80.774799) (xy 167.517104 80.810178) + (xy 167.459089 80.857789) (xy 167.411478 80.915804) (xy 167.376099 80.981992) (xy 167.354313 81.053811) (xy 167.346957 81.1285) + (xy 167.346957 82.8285) (xy 167.354313 82.903189) (xy 167.376099 82.975008) (xy 167.411478 83.041196) (xy 167.459089 83.099211) + (xy 167.517104 83.146822) (xy 167.583292 83.182201) (xy 167.655111 83.203987) (xy 167.7298 83.211343) (xy 168.1226 83.211343) + (xy 168.1226 83.706821) (xy 164.707423 87.122) (xy 164.656458 87.122) (xy 164.533777 87.146403) (xy 164.418979 87.193954) + (xy 164.361789 87.136764) (xy 164.257785 87.067271) (xy 164.142223 87.019403) (xy 164.019542 86.995) (xy 163.894458 86.995) + (xy 163.771777 87.019403) (xy 163.656215 87.067271) (xy 163.552211 87.136764) (xy 163.463764 87.225211) (xy 163.394271 87.329215) + (xy 163.346403 87.444777) (xy 163.322 87.567458) (xy 163.322 87.692542) (xy 163.346403 87.815223) (xy 163.394271 87.930785) + (xy 163.463764 88.034789) (xy 163.506262 88.077287) (xy 163.506415 88.078837) (xy 163.524663 88.138987) (xy 163.53256 88.165019) + (xy 163.572957 88.240597) (xy 163.575014 88.244446) (xy 163.632148 88.314063) (xy 163.649592 88.328379) (xy 163.986336 88.665125) + (xy 164.000649 88.682565) (xy 164.018088 88.696877) (xy 164.018094 88.696883) (xy 164.070266 88.739699) (xy 164.149692 88.782153) + (xy 164.235875 88.808297) (xy 164.303042 88.814912) (xy 164.30305 88.814912) (xy 164.325502 88.817123) (xy 164.347954 88.814912) + (xy 165.548313 88.814912) (xy 165.548313 88.902855) (xy 165.572716 89.025536) (xy 165.620584 89.141098) (xy 165.629205 89.154) + (xy 165.545458 89.154) (xy 165.422777 89.178403) (xy 165.307215 89.226271) (xy 165.203211 89.295764) (xy 165.167175 89.3318) + (xy 147.059028 89.3318) (xy 146.827824 89.100597) (xy 146.813503 89.083147) (xy 146.743886 89.026013) (xy 146.664459 88.983559) + (xy 146.578277 88.957415) (xy 146.51111 88.9508) (xy 146.5111 88.9508) (xy 146.48865 88.948589) (xy 146.4662 88.9508) + (xy 146.363825 88.9508) (xy 146.327789 88.914764) (xy 146.223785 88.845271) (xy 146.108223 88.797403) (xy 145.985542 88.773) + (xy 145.860458 88.773) (xy 145.737777 88.797403) (xy 145.622215 88.845271) (xy 145.518211 88.914764) (xy 145.429764 89.003211) + (xy 145.360271 89.107215) (xy 145.312403 89.222777) (xy 145.288 89.345458) (xy 145.288 89.470542) (xy 145.312403 89.593223) + (xy 145.360271 89.708785) (xy 145.429764 89.812789) (xy 145.518211 89.901236) (xy 145.622215 89.970729) (xy 145.737777 90.018597) + (xy 145.7744 90.025882) (xy 145.7744 90.105542) (xy 145.798803 90.228223) (xy 145.846671 90.343785) (xy 145.916164 90.447789) + (xy 146.004611 90.536236) (xy 146.108615 90.605729) (xy 146.224177 90.653597) (xy 146.346858 90.678) (xy 146.397823 90.678) + (xy 147.34023 91.620408) (xy 147.354547 91.637853) (xy 147.371992 91.65217) (xy 147.424163 91.694987) (xy 147.446285 91.706811) + (xy 147.503591 91.737441) (xy 147.589773 91.763585) (xy 147.65694 91.7702) (xy 147.656949 91.7702) (xy 147.679399 91.772411) + (xy 147.701849 91.7702) (xy 157.293175 91.7702) (xy 157.329211 91.806236) (xy 157.433215 91.875729) (xy 157.548777 91.923597) + (xy 157.671458 91.948) (xy 157.796542 91.948) (xy 157.919223 91.923597) (xy 158.034785 91.875729) (xy 158.138789 91.806236) + (xy 158.227236 91.717789) (xy 158.296729 91.613785) (xy 158.344597 91.498223) (xy 158.369 91.375542) (xy 158.369 91.250458) + (xy 158.344597 91.127777) (xy 158.296729 91.012215) (xy 158.227236 90.908211) (xy 158.138789 90.819764) (xy 158.034785 90.750271) + (xy 157.919223 90.702403) (xy 157.796542 90.678) (xy 157.671458 90.678) (xy 157.548777 90.702403) (xy 157.433215 90.750271) + (xy 157.329211 90.819764) (xy 157.293175 90.8558) (xy 147.868778 90.8558) (xy 147.259177 90.2462) (xy 160.809192 90.2462) + (xy 160.807388 90.264519) (xy 160.809599 90.286969) (xy 160.8096 106.506772) (xy 160.777289 106.533289) (xy 160.729678 106.591304) + (xy 160.694299 106.657492) (xy 160.672513 106.729311) (xy 160.665157 106.804) (xy 160.665157 109.594) (xy 160.390843 109.594) + (xy 160.390843 106.804) (xy 160.383487 106.729311) (xy 160.361701 106.657492) (xy 160.326322 106.591304) (xy 160.278711 106.533289) + (xy 160.220696 106.485678) (xy 160.154508 106.450299) (xy 160.082689 106.428513) (xy 160.008 106.421157) (xy 159.791 106.421157) + (xy 159.791 105.563172) (xy 159.793578 105.536999) (xy 159.791 105.510825) (xy 159.783287 105.432514) (xy 159.75281 105.332043) + (xy 159.703317 105.239449) (xy 159.636711 105.158289) (xy 159.616379 105.141603) (xy 154.545037 100.070262) (xy 154.534597 100.017777) + (xy 154.486729 99.902215) (xy 154.417236 99.798211) (xy 154.328789 99.709764) (xy 154.224785 99.640271) (xy 154.109223 99.592403) + (xy 153.986542 99.568) (xy 153.861458 99.568) (xy 153.738777 99.592403) (xy 153.623215 99.640271) (xy 153.519211 99.709764) + (xy 153.430764 99.798211) (xy 153.361271 99.902215) (xy 153.313403 100.017777) (xy 153.289 100.140458) (xy 153.289 100.265542) + (xy 153.313403 100.388223) (xy 153.361271 100.503785) (xy 153.430764 100.607789) (xy 153.519211 100.696236) (xy 153.623215 100.765729) + (xy 153.738777 100.813597) (xy 153.791262 100.824037) (xy 158.725 105.757776) (xy 158.725 106.421157) (xy 158.508 106.421157) + (xy 158.433311 106.428513) (xy 158.361492 106.450299) (xy 158.295304 106.485678) (xy 158.237289 106.533289) (xy 158.189678 106.591304) + (xy 158.154787 106.65658) (xy 157.984881 106.402298) (xy 157.757702 106.175119) (xy 157.490568 105.996626) (xy 157.193745 105.873678) + (xy 156.87864 105.811) (xy 156.55736 105.811) (xy 156.242255 105.873678) (xy 155.945432 105.996626) (xy 155.678298 106.175119) + (xy 155.451119 106.402298) (xy 155.272626 106.669432) (xy 155.149678 106.966255) (xy 155.087 107.28136) (xy 155.087 107.60264) + (xy 155.149678 107.917745) (xy 155.272626 108.214568) (xy 155.451119 108.481702) (xy 155.678298 108.708881) (xy 155.945432 108.887374) + (xy 156.242255 109.010322) (xy 156.55736 109.073) (xy 156.87864 109.073) (xy 157.193745 109.010322) (xy 157.490568 108.887374) + (xy 157.757702 108.708881) (xy 157.984881 108.481702) (xy 158.125157 108.271764) (xy 158.125157 109.594) (xy 131.342 109.594) + (xy 131.342 108.045939) (xy 131.368917 108.096297) (xy 131.514775 108.274025) (xy 131.692503 108.419883) (xy 131.895272 108.528266) + (xy 132.11529 108.595007) (xy 132.3441 108.617543) (xy 133.9241 108.617543) (xy 134.15291 108.595007) (xy 134.372928 108.528266) + (xy 134.575697 108.419883) (xy 134.753425 108.274025) (xy 134.899283 108.096297) (xy 135.007666 107.893528) (xy 135.074407 107.67351) + (xy 135.083221 107.584023) (xy 135.096308 107.619677) (xy 135.322953 107.990885) (xy 135.617662 108.310744) (xy 135.969109 108.566962) + (xy 136.363789 108.749693) (xy 136.622731 108.818963) (xy 136.9671 108.707024) (xy 136.9671 106.3117) (xy 136.9471 106.3117) + (xy 136.9471 106.0577) (xy 136.9671 106.0577) (xy 136.9671 103.662376) (xy 137.2211 103.662376) (xy 137.2211 106.0577) + (xy 137.2411 106.0577) (xy 137.2411 106.3117) (xy 137.2211 106.3117) (xy 137.2211 108.707024) (xy 137.565469 108.818963) + (xy 137.824411 108.749693) (xy 138.219091 108.566962) (xy 138.570538 108.310744) (xy 138.865247 107.990885) (xy 139.091892 107.619677) + (xy 139.204513 107.312865) (xy 139.233606 107.408773) (xy 139.4157 107.749444) (xy 139.660756 108.048045) (xy 139.959357 108.293101) + (xy 140.300028 108.475194) (xy 140.669678 108.587326) (xy 141.0541 108.625188) (xy 141.438523 108.587326) (xy 141.808173 108.475194) + (xy 142.148844 108.293101) (xy 142.447445 108.048045) (xy 142.692501 107.749444) (xy 142.874594 107.408773) (xy 142.986726 107.039122) + (xy 142.9941 106.964252) (xy 143.001474 107.039123) (xy 143.113606 107.408773) (xy 143.2957 107.749444) (xy 143.540756 108.048045) + (xy 143.839357 108.293101) (xy 144.180028 108.475194) (xy 144.549678 108.587326) (xy 144.9341 108.625188) (xy 145.318523 108.587326) + (xy 145.688173 108.475194) (xy 146.028844 108.293101) (xy 146.327445 108.048045) (xy 146.572501 107.749444) (xy 146.754594 107.408773) + (xy 146.866726 107.039122) (xy 146.8951 106.751033) (xy 146.8951 105.618367) (xy 147.0131 105.618367) (xy 147.0131 106.751034) + (xy 147.041474 107.039123) (xy 147.153606 107.408773) (xy 147.3357 107.749444) (xy 147.580756 108.048045) (xy 147.879357 108.293101) + (xy 148.220028 108.475194) (xy 148.589678 108.587326) (xy 148.9741 108.625188) (xy 149.358523 108.587326) (xy 149.728173 108.475194) + (xy 150.068844 108.293101) (xy 150.367445 108.048045) (xy 150.612501 107.749444) (xy 150.794594 107.408773) (xy 150.906726 107.039122) + (xy 150.9351 106.751033) (xy 150.9351 105.618367) (xy 150.9731 105.618367) (xy 150.9731 106.751034) (xy 151.001474 107.039123) + (xy 151.113606 107.408773) (xy 151.2957 107.749444) (xy 151.540756 108.048045) (xy 151.839357 108.293101) (xy 152.180028 108.475194) + (xy 152.549678 108.587326) (xy 152.9341 108.625188) (xy 153.318523 108.587326) (xy 153.688173 108.475194) (xy 154.028844 108.293101) + (xy 154.327445 108.048045) (xy 154.572501 107.749444) (xy 154.754594 107.408773) (xy 154.866726 107.039122) (xy 154.8951 106.751033) + (xy 154.8951 105.618366) (xy 154.866726 105.330277) (xy 154.754594 104.960627) (xy 154.572501 104.619956) (xy 154.327445 104.321355) + (xy 154.028844 104.076299) (xy 153.688172 103.894206) (xy 153.318522 103.782074) (xy 152.9341 103.744212) (xy 152.549677 103.782074) + (xy 152.180027 103.894206) (xy 151.839356 104.076299) (xy 151.540755 104.321355) (xy 151.295699 104.619956) (xy 151.113606 104.960628) + (xy 151.001474 105.330278) (xy 150.9731 105.618367) (xy 150.9351 105.618367) (xy 150.9351 105.618366) (xy 150.906726 105.330277) + (xy 150.794594 104.960627) (xy 150.612501 104.619956) (xy 150.367445 104.321355) (xy 150.068844 104.076299) (xy 149.728172 103.894206) + (xy 149.358522 103.782074) (xy 148.9741 103.744212) (xy 148.589677 103.782074) (xy 148.220027 103.894206) (xy 147.879356 104.076299) + (xy 147.580755 104.321355) (xy 147.335699 104.619956) (xy 147.153606 104.960628) (xy 147.041474 105.330278) (xy 147.0131 105.618367) + (xy 146.8951 105.618367) (xy 146.8951 105.618366) (xy 146.866726 105.330277) (xy 146.754594 104.960627) (xy 146.572501 104.619956) + (xy 146.327445 104.321355) (xy 146.028844 104.076299) (xy 145.688172 103.894206) (xy 145.318522 103.782074) (xy 144.9341 103.744212) + (xy 144.549677 103.782074) (xy 144.180027 103.894206) (xy 143.839356 104.076299) (xy 143.540755 104.321355) (xy 143.295699 104.619956) + (xy 143.113606 104.960628) (xy 143.001474 105.330278) (xy 142.9941 105.405148) (xy 142.986726 105.330277) (xy 142.874594 104.960627) + (xy 142.692501 104.619956) (xy 142.447445 104.321355) (xy 142.148844 104.076299) (xy 141.808172 103.894206) (xy 141.438522 103.782074) + (xy 141.0541 103.744212) (xy 140.669677 103.782074) (xy 140.300027 103.894206) (xy 139.959356 104.076299) (xy 139.660755 104.321355) + (xy 139.415699 104.619956) (xy 139.233606 104.960628) (xy 139.204513 105.056535) (xy 139.091892 104.749723) (xy 138.865247 104.378515) + (xy 138.570538 104.058656) (xy 138.219091 103.802438) (xy 137.824411 103.619707) (xy 137.565469 103.550437) (xy 137.2211 103.662376) + (xy 136.9671 103.662376) (xy 136.622731 103.550437) (xy 136.363789 103.619707) (xy 135.969109 103.802438) (xy 135.617662 104.058656) + (xy 135.322953 104.378515) (xy 135.096308 104.749723) (xy 135.083221 104.785377) (xy 135.074407 104.69589) (xy 135.007666 104.475872) + (xy 134.899283 104.273103) (xy 134.753425 104.095375) (xy 134.575697 103.949517) (xy 134.372928 103.841134) (xy 134.15291 103.774393) + (xy 133.9241 103.751857) (xy 132.3441 103.751857) (xy 132.11529 103.774393) (xy 131.895272 103.841134) (xy 131.692503 103.949517) + (xy 131.514775 104.095375) (xy 131.368917 104.273103) (xy 131.342 104.323461) (xy 131.342 84.732182) (xy 131.436093 84.771157) + (xy 131.58331 84.80044) (xy 131.73341 84.80044) (xy 131.880627 84.771157) (xy 132.019302 84.713716) (xy 132.144107 84.630324) + (xy 132.250244 84.524187) (xy 132.333636 84.399382) (xy 132.391077 84.260707) (xy 132.42036 84.11349) (xy 132.42036 83.96339) + (xy 132.391077 83.816173) (xy 132.333636 83.677498) (xy 132.250244 83.552693) (xy 132.144107 83.446556) (xy 132.019302 83.363164) + (xy 131.880627 83.305723) (xy 131.73341 83.27644) (xy 131.58331 83.27644) (xy 131.436093 83.305723) (xy 131.342 83.344698) + (xy 131.342 80.506) (xy 134.306799 80.506) + ) + ) + ) +) diff --git a/hw/v1/v1.net b/hw/v1/v1.net new file mode 100644 index 0000000..00c3486 --- /dev/null +++ b/hw/v1/v1.net @@ -0,0 +1,785 @@ +(export (version D) + (design + (source /Users/mike/OneDrive/Desktop/toaster/hw/v1/v1.sch) + (date "Monday, February 01, 2021 at 11:53:24 AM") + (tool "Eeschema (5.1.8-0-10_14)") + (sheet (number 1) (name /) (tstamps /) + (title_block + (title) + (company) + (rev) + (date) + (source v1.sch) + (comment (number 1) (value "")) + (comment (number 2) (value "")) + (comment (number 3) (value "")) + (comment (number 4) (value ""))))) + (components + (comp (ref D2) + (value "HOT (RED)") + (footprint LED_SMD:LED_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part LED) (description "Light emitting diode")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FEB80F4)) + (comp (ref SW1) + (value RESET) + (footprint MICROJELLY:TS-1186D-C-A) + (datasheet ~) + (libsource (lib Switch) (part SW_Push) (description "Push button switch, generic, two pins")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FEBF6AE)) + (comp (ref D3) + (value "POWER (GREEN)") + (footprint LED_SMD:LED_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part LED) (description "Light emitting diode")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FEC417B)) + (comp (ref U2) + (value AMS1117-3.3) + (footprint Package_TO_SOT_SMD:SOT-223-3_TabPin2) + (datasheet http://www.advanced-monolithic.com/pdf/ds1117.pdf) + (libsource (lib Regulator_Linear) (part AMS1117-3.3) (description "1A Low Dropout regulator, positive, 3.3V fixed output, SOT-223")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FECBF8A)) + (comp (ref R1) + (value 10K) + (footprint Resistor_SMD:R_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FED7A89)) + (comp (ref C1) + (value 0.1uF) + (footprint Capacitor_SMD:C_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FED8E6C)) + (comp (ref R8) + (value 1K) + (footprint Resistor_SMD:R_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FEDD604)) + (comp (ref R9) + (value 51) + (footprint Resistor_SMD:R_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FEDFA7F)) + (comp (ref C5) + (value 1uF[DNP]) + (footprint Capacitor_SMD:C_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FEE1D89)) + (comp (ref C6) + (value 0.1uF) + (footprint Capacitor_SMD:C_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FEE24BB)) + (comp (ref C7) + (value 1uF) + (footprint Capacitor_SMD:C_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FEE58D5)) + (comp (ref C8) + (value 10uF) + (footprint Capacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A) + (datasheet ~) + (libsource (lib Device) (part CP_Small) (description "Polarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FEE6095)) + (comp (ref D1) + (value IN4148WS) + (footprint Diode_SMD:D_SOD-323) + (datasheet ~) + (libsource (lib Device) (part D) (description Diode)) + (sheetpath (names /) (tstamps /)) + (tstamp 5FEFB9A6)) + (comp (ref BZ1) + (value Buzzer) + (footprint MICROJELLY:MLT-8530) + (datasheet ~) + (libsource (lib Device) (part Buzzer) (description "Buzzer, polarized")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FEFC705)) + (comp (ref Q1) + (value 2N7002) + (footprint Package_TO_SOT_SMD:SOT-23) + (datasheet https://www.onsemi.com/pub/Collateral/NDS7002A-D.PDF) + (libsource (lib Transistor_FET) (part 2N7002) (description "0.115A Id, 60V Vds, N-Channel MOSFET, SOT-23")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FF88B00)) + (comp (ref Q2) + (value 2N7002) + (footprint Package_TO_SOT_SMD:SOT-23) + (datasheet https://www.onsemi.com/pub/Collateral/NDS7002A-D.PDF) + (libsource (lib Transistor_FET) (part 2N7002) (description "0.115A Id, 60V Vds, N-Channel MOSFET, SOT-23")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FF8F9B7)) + (comp (ref R6) + (value 10K) + (footprint Resistor_SMD:R_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FFAE1FA)) + (comp (ref SW2) + (value ACTION) + (footprint MICROJELLY:UK-B0229-G2.5-B-250) + (datasheet ~) + (libsource (lib Switch) (part SW_Push) (description "Push button switch, generic, two pins")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FFF837C)) + (comp (ref R2) + (value 10K) + (footprint Resistor_SMD:R_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FFF87D3)) + (comp (ref C2) + (value 0.1uF) + (footprint Capacitor_SMD:C_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FFF87DD)) + (comp (ref R7) + (value 10K) + (footprint Resistor_SMD:R_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 60034F59)) + (comp (ref R3) + (value 15) + (footprint Resistor_SMD:R_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 5FF2AAD0)) + (comp (ref RV1) + (value 1K) + (footprint MICROJELLY:Potentiometer_Bourns_TC33X_Vertical) + (datasheet ~) + (libsource (lib Device) (part R_POT_Small) (description Potentiometer)) + (sheetpath (names /) (tstamps /)) + (tstamp 5FF34C3B)) + (comp (ref U3) + (value MAX6675ISA+T) + (footprint Package_SO:SOIC-8_3.9x4.9mm_P1.27mm) + (datasheet http://datasheets.maximintegrated.com/en/ds/MAX31855.pdf) + (libsource (lib MICROJELLY) (part MAX6675ISA+T) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 600B9718)) + (comp (ref J1) + (value ERC12864-10) + (footprint MICROJELLY:ER-CON30HB-1) + (libsource (lib MICROJELLY) (part ERC12864-10) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 600D30D4)) + (comp (ref U1) + (value STM8S[N76E]) + (footprint Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm) + (datasheet http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00024550.pdf) + (libsource (lib MICROJELLY) (part STM8S[N76E]) (description "")) + (sheetpath (names /) (tstamps /)) + (tstamp 60155462)) + (comp (ref R5) + (value DNP[0]) + (footprint Resistor_SMD:R_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 60167B52)) + (comp (ref J5) + (value SERVO) + (footprint Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical) + (datasheet ~) + (libsource (lib Connector) (part Conn_01x03_Male) (description "Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)")) + (sheetpath (names /) (tstamps /)) + (tstamp 601FC65E)) + (comp (ref J2) + (value "Terminal Block") + (footprint MICROJELLY:HT396V-3.96-6p) + (datasheet ~) + (libsource (lib Connector) (part Conn_01x06_Male) (description "Generic connector, single row, 01x06, script generated (kicad-library-utils/schlib/autogen/connector/)")) + (sheetpath (names /) (tstamps /)) + (tstamp 60223278)) + (comp (ref R4) + (value 10K) + (footprint Resistor_SMD:R_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 602F4E9D)) + (comp (ref C10) + (value 1uF) + (footprint Capacitor_SMD:C_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 6030A57B)) + (comp (ref C9) + (value .01uF) + (footprint Capacitor_SMD:C_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 6031D01B)) + (comp (ref C3) + (value 10uF) + (footprint Capacitor_SMD:C_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 6039E003)) + (comp (ref C4) + (value 0.1uF) + (footprint Capacitor_SMD:C_0805_2012Metric) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 603B13C8)) + (comp (ref J3) + (value ISP/UART) + (footprint MICROJELLY:TRUDEAU_C2X5_SMD) + (datasheet ~) + (libsource (lib Connector_Generic) (part Conn_02x05_Odd_Even) (description "Generic connector, double row, 02x05, odd/even pin numbering scheme (row 1 odd numbers, row 2 even numbers), script generated (kicad-library-utils/schlib/autogen/connector/)")) + (sheetpath (names /) (tstamps /)) + (tstamp 6016ECE9))) + (libparts + (libpart (lib Connector) (part Conn_01x03_Male) + (description "Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)") + (docs ~) + (footprints + (fp Connector*:*_1x??_*)) + (fields + (field (name Reference) J) + (field (name Value) Conn_01x03_Male)) + (pins + (pin (num 1) (name Pin_1) (type passive)) + (pin (num 2) (name Pin_2) (type passive)) + (pin (num 3) (name Pin_3) (type passive)))) + (libpart (lib Connector) (part Conn_01x06_Male) + (description "Generic connector, single row, 01x06, script generated (kicad-library-utils/schlib/autogen/connector/)") + (docs ~) + (footprints + (fp Connector*:*_1x??_*)) + (fields + (field (name Reference) J) + (field (name Value) Conn_01x06_Male)) + (pins + (pin (num 1) (name Pin_1) (type passive)) + (pin (num 2) (name Pin_2) (type passive)) + (pin (num 3) (name Pin_3) (type passive)) + (pin (num 4) (name Pin_4) (type passive)) + (pin (num 5) (name Pin_5) (type passive)) + (pin (num 6) (name Pin_6) (type passive)))) + (libpart (lib Connector_Generic) (part Conn_02x05_Odd_Even) + (description "Generic connector, double row, 02x05, odd/even pin numbering scheme (row 1 odd numbers, row 2 even numbers), script generated (kicad-library-utils/schlib/autogen/connector/)") + (docs ~) + (footprints + (fp Connector*:*_2x??_*)) + (fields + (field (name Reference) J) + (field (name Value) Conn_02x05_Odd_Even)) + (pins + (pin (num 1) (name Pin_1) (type passive)) + (pin (num 2) (name Pin_2) (type passive)) + (pin (num 3) (name Pin_3) (type passive)) + (pin (num 4) (name Pin_4) (type passive)) + (pin (num 5) (name Pin_5) (type passive)) + (pin (num 6) (name Pin_6) (type passive)) + (pin (num 7) (name Pin_7) (type passive)) + (pin (num 8) (name Pin_8) (type passive)) + (pin (num 9) (name Pin_9) (type passive)) + (pin (num 10) (name Pin_10) (type passive)))) + (libpart (lib Device) (part Buzzer) + (description "Buzzer, polarized") + (docs ~) + (footprints + (fp *Buzzer*)) + (fields + (field (name Reference) BZ) + (field (name Value) Buzzer)) + (pins + (pin (num 1) (name -) (type passive)) + (pin (num 2) (name +) (type passive)))) + (libpart (lib Device) (part CP_Small) + (description "Polarized capacitor, small symbol") + (docs ~) + (footprints + (fp CP_*)) + (fields + (field (name Reference) C) + (field (name Value) CP_Small)) + (pins + (pin (num 1) (name ~) (type passive)) + (pin (num 2) (name ~) (type passive)))) + (libpart (lib Device) (part C_Small) + (description "Unpolarized capacitor, small symbol") + (docs ~) + (footprints + (fp C_*)) + (fields + (field (name Reference) C) + (field (name Value) C_Small)) + (pins + (pin (num 1) (name ~) (type passive)) + (pin (num 2) (name ~) (type passive)))) + (libpart (lib Device) (part D) + (description Diode) + (docs ~) + (footprints + (fp TO-???*) + (fp *_Diode_*) + (fp *SingleDiode*) + (fp D_*)) + (fields + (field (name Reference) D) + (field (name Value) D)) + (pins + (pin (num 1) (name K) (type passive)) + (pin (num 2) (name A) (type passive)))) + (libpart (lib Device) (part LED) + (description "Light emitting diode") + (docs ~) + (footprints + (fp LED*) + (fp LED_SMD:*) + (fp LED_THT:*)) + (fields + (field (name Reference) D) + (field (name Value) LED)) + (pins + (pin (num 1) (name K) (type passive)) + (pin (num 2) (name A) (type passive)))) + (libpart (lib Device) (part R_POT_Small) + (description Potentiometer) + (docs ~) + (footprints + (fp Potentiometer*)) + (fields + (field (name Reference) RV) + (field (name Value) R_POT_Small)) + (pins + (pin (num 1) (name 1) (type passive)) + (pin (num 2) (name 2) (type passive)) + (pin (num 3) (name 3) (type passive)))) + (libpart (lib Device) (part R_Small) + (description "Resistor, small symbol") + (docs ~) + (footprints + (fp R_*)) + (fields + (field (name Reference) R) + (field (name Value) R_Small)) + (pins + (pin (num 1) (name ~) (type passive)) + (pin (num 2) (name ~) (type passive)))) + (libpart (lib Regulator_Linear) (part AP1117-15) + (aliases + (alias AP1117-18) + (alias AP1117-25) + (alias AP1117-33) + (alias AP1117-50) + (alias LD1117S33TR_SOT223) + (alias LD1117S12TR_SOT223) + (alias LD1117S18TR_SOT223) + (alias LD1117S25TR_SOT223) + (alias LD1117S50TR_SOT223) + (alias NCP1117-12_SOT223) + (alias NCP1117-1.5_SOT223) + (alias NCP1117-1.8_SOT223) + (alias NCP1117-2.0_SOT223) + (alias NCP1117-2.5_SOT223) + (alias NCP1117-2.85_SOT223) + (alias NCP1117-3.3_SOT223) + (alias NCP1117-5.0_SOT223) + (alias AMS1117-1.5) + (alias AMS1117-1.8) + (alias AMS1117-2.5) + (alias AMS1117-2.85) + (alias AMS1117-3.3) + (alias AMS1117-5.0)) + (description "1A Low Dropout regulator, positive, 1.5V fixed output, SOT-223") + (docs http://www.diodes.com/datasheets/AP1117.pdf) + (footprints + (fp SOT?223*TabPin2*)) + (fields + (field (name Reference) U) + (field (name Value) AP1117-15) + (field (name Footprint) Package_TO_SOT_SMD:SOT-223-3_TabPin2)) + (pins + (pin (num 1) (name GND) (type power_in)) + (pin (num 2) (name VO) (type power_out)) + (pin (num 3) (name VI) (type power_in)))) + (libpart (lib Switch) (part SW_Push) + (description "Push button switch, generic, two pins") + (docs ~) + (fields + (field (name Reference) SW) + (field (name Value) SW_Push)) + (pins + (pin (num 1) (name 1) (type passive)) + (pin (num 2) (name 2) (type passive)))) + (libpart (lib Transistor_FET) (part BSS138) + (aliases + (alias 2N7002) + (alias 2N7002E) + (alias 2N7002H) + (alias 2N7002K) + (alias BS170F) + (alias BS870) + (alias BSN20) + (alias BSS123) + (alias BSS127S) + (alias DMG2302U) + (alias DMG3402L) + (alias DMG3404L) + (alias DMG3406L) + (alias DMG3414U) + (alias DMG3418L) + (alias DMN10H220L) + (alias DMN10H700S) + (alias DMN13H750S) + (alias DMN2041L) + (alias DMN2050L) + (alias DMN2056U) + (alias DMN2058U) + (alias DMN2075U) + (alias DMN2230U) + (alias DMN24H11DS) + (alias DMN24H3D5L) + (alias DMN3042L) + (alias DMN3051L) + (alias DMN30H4D0L) + (alias DMN3110S) + (alias DMN3150L) + (alias DMN3300U) + (alias DMN3404L) + (alias DMN6075S) + (alias DMN6140L) + (alias DMN67D7L) + (alias DMN67D8L) + (alias MMBF170) + (alias VN10LF) + (alias ZVN3306F) + (alias ZVN3310F) + (alias ZVN3320F) + (alias ZVN4106F) + (alias ZXM61N02F) + (alias ZXM61N03F) + (alias ZXMN10A07F) + (alias ZXMN2A01F) + (alias ZXMN2A14F) + (alias ZXMN2B01F) + (alias ZXMN2B14FH) + (alias ZXMN2F30FH) + (alias ZXMN2F34FH) + (alias ZXMN3A01F) + (alias ZXMN3A14F) + (alias ZXMN3B01F) + (alias ZXMN3B14F) + (alias ZXMN3F30FH) + (alias ZXMN6A07F) + (alias IRLML0030) + (alias IRLML2060) + (alias TSM2302CX) + (alias AO3400A)) + (description "50V Vds, 0.22A Id, N-Channel MOSFET, SOT-23") + (docs https://www.onsemi.com/pub/Collateral/BSS138-D.PDF) + (footprints + (fp SOT?23*)) + (fields + (field (name Reference) Q) + (field (name Value) BSS138) + (field (name Footprint) Package_TO_SOT_SMD:SOT-23)) + (pins + (pin (num 1) (name G) (type input)) + (pin (num 2) (name S) (type passive)) + (pin (num 3) (name D) (type passive)))) + (libpart (lib MICROJELLY) (part ERC12864-10) + (fields + (field (name Reference) J) + (field (name Value) ERC12864-10)) + (pins + (pin (num 1) (name NC) (type NotConnected)) + (pin (num 2) (name NC) (type NotConnected)) + (pin (num 3) (name NC) (type NotConnected)) + (pin (num 4) (name NC) (type NotConnected)) + (pin (num 5) (name NC) (type NotConnected)) + (pin (num 6) (name LEDA+) (type power_in)) + (pin (num 7) (name LEDK-) (type power_in)) + (pin (num 8) (name VSS) (type power_in)) + (pin (num 9) (name VDD) (type power_in)) + (pin (num 10) (name BM0) (type input)) + (pin (num 11) (name BM1) (type input)) + (pin (num 12) (name TST5) (type input)) + (pin (num 13) (name CS) (type input)) + (pin (num 14) (name RES) (type input)) + (pin (num 15) (name CD) (type input)) + (pin (num 16) (name WR0/A3) (type input)) + (pin (num 17) (name WR1/A2) (type input)) + (pin (num 18) (name D0) (type BiDi)) + (pin (num 19) (name D1) (type BiDi)) + (pin (num 20) (name D2) (type BiDi)) + (pin (num 21) (name D3) (type BiDi)) + (pin (num 22) (name D4) (type BiDi)) + (pin (num 23) (name D5) (type BiDi)) + (pin (num 24) (name D6/SCK) (type BiDi)) + (pin (num 25) (name D7/SDA) (type BiDi)) + (pin (num 26) (name NC) (type NotConnected)) + (pin (num 27) (name NC) (type NotConnected)) + (pin (num 28) (name NC) (type NotConnected)) + (pin (num 29) (name NC) (type NotConnected)) + (pin (num 30) (name NC) (type NotConnected)))) + (libpart (lib MICROJELLY) (part MAX6675ISA+T) + (footprints + (fp SOIC*3.9x4.9mm*P1.27mm*)) + (fields + (field (name Reference) U) + (field (name Value) MAX6675ISA+T) + (field (name Footprint) Package_SO:SOIC-8_3.9x4.9mm_P1.27mm)) + (pins + (pin (num 1) (name GND) (type power_in)) + (pin (num 2) (name T-) (type passive)) + (pin (num 3) (name T+) (type passive)) + (pin (num 4) (name VCC) (type power_in)) + (pin (num 5) (name SCK) (type input)) + (pin (num 6) (name ~CS~) (type input)) + (pin (num 7) (name SO) (type 3state)))) + (libpart (lib MICROJELLY) (part STM8S[N76E]) + (footprints + (fp TSSOP*4.4x6.5mm*P0.65mm*)) + (fields + (field (name Reference) U) + (field (name Value) STM8S[N76E]) + (field (name Footprint) Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm)) + (pins + (pin (num 1) (name PD4[P0.5]) (type BiDi)) + (pin (num 2) (name PD5[P0.6]) (type BiDi)) + (pin (num 3) (name PD6[P0.7]) (type BiDi)) + (pin (num 4) (name NRST[RST]) (type input)) + (pin (num 5) (name PA1[P3.0]) (type BiDi)) + (pin (num 6) (name PA2[P1.7]) (type BiDi)) + (pin (num 7) (name VSS) (type power_in)) + (pin (num 8) (name VCAP[ICPDA]) (type BiDi)) + (pin (num 9) (name VDD) (type power_in)) + (pin (num 10) (name PA3[P1.5]) (type BiDi)) + (pin (num 11) (name PB5[P1.4]) (type BiDi)) + (pin (num 12) (name PB4[P1.3]) (type BiDi)) + (pin (num 13) (name PC3[P1.2]) (type BiDi)) + (pin (num 14) (name PC4[P1.1]) (type BiDi)) + (pin (num 15) (name PC5[P1.0]) (type BiDi)) + (pin (num 16) (name PC6[P0.0]) (type BiDi)) + (pin (num 17) (name PC7[P0.1]) (type BiDi)) + (pin (num 18) (name SWIM[ICPCK]) (type BiDi)) + (pin (num 19) (name PD2[P0.3]) (type BiDi)) + (pin (num 20) (name PD3[P0.4]) (type BiDi))))) + (libraries + (library (logical Connector) + (uri "/Library/Application Support/kicad/library/Connector.lib")) + (library (logical Connector_Generic) + (uri "/Library/Application Support/kicad/library/Connector_Generic.lib")) + (library (logical Device) + (uri "/Library/Application Support/kicad/library/Device.lib")) + (library (logical Regulator_Linear) + (uri "/Library/Application Support/kicad/library/Regulator_Linear.lib")) + (library (logical Switch) + (uri "/Library/Application Support/kicad/library/Switch.lib")) + (library (logical Transistor_FET) + (uri "/Library/Application Support/kicad/library/Transistor_FET.lib"))) + (nets + (net (code 1) (name 3V3) + (node (ref J5) (pin 2)) + (node (ref J3) (pin 2)) + (node (ref J3) (pin 1)) + (node (ref R2) (pin 2)) + (node (ref RV1) (pin 1)) + (node (ref D3) (pin 2)) + (node (ref C4) (pin 1)) + (node (ref C3) (pin 1)) + (node (ref U2) (pin 2)) + (node (ref U3) (pin 4)) + (node (ref C10) (pin 1)) + (node (ref J1) (pin 9)) + (node (ref C8) (pin 1)) + (node (ref U1) (pin 9)) + (node (ref C6) (pin 2)) + (node (ref R1) (pin 2)) + (node (ref R9) (pin 1))) + (net (code 2) (name LED_RED) + (node (ref D2) (pin 1)) + (node (ref U1) (pin 11))) + (net (code 3) (name "Net-(D3-Pad1)") + (node (ref R8) (pin 2)) + (node (ref D3) (pin 1))) + (net (code 4) (name "Net-(D2-Pad2)") + (node (ref D2) (pin 2)) + (node (ref R9) (pin 2))) + (net (code 5) (name VIN) + (node (ref U2) (pin 3)) + (node (ref J2) (pin 1)) + (node (ref C7) (pin 2))) + (net (code 6) (name BUZZER) + (node (ref D1) (pin 1)) + (node (ref BZ1) (pin 1)) + (node (ref U1) (pin 1))) + (net (code 7) (name "Net-(J1-Pad12)") + (node (ref J1) (pin 12))) + (net (code 8) (name SPI_SCK) + (node (ref U1) (pin 15)) + (node (ref J1) (pin 24)) + (node (ref U3) (pin 5))) + (net (code 9) (name SPI_MOSI) + (node (ref J1) (pin 25)) + (node (ref U1) (pin 16))) + (net (code 10) (name LCD_CS) + (node (ref J1) (pin 13)) + (node (ref U1) (pin 14))) + (net (code 11) (name LCD_CD) + (node (ref J1) (pin 15)) + (node (ref U1) (pin 19))) + (net (code 12) (name LCD_RES) + (node (ref J1) (pin 14)) + (node (ref U1) (pin 6))) + (net (code 13) (name K_CS) + (node (ref U3) (pin 6)) + (node (ref U1) (pin 5))) + (net (code 14) (name _SSR0) + (node (ref R6) (pin 1)) + (node (ref Q1) (pin 1)) + (node (ref U1) (pin 20))) + (net (code 15) (name SSR1) + (node (ref Q2) (pin 3)) + (node (ref J2) (pin 4))) + (net (code 16) (name _SSR1) + (node (ref U1) (pin 10)) + (node (ref R7) (pin 1)) + (node (ref Q2) (pin 1))) + (net (code 17) (name "Net-(J1-Pad6)") + (node (ref R3) (pin 1)) + (node (ref J1) (pin 6))) + (net (code 18) (name "Net-(R3-Pad2)") + (node (ref RV1) (pin 2)) + (node (ref R3) (pin 2))) + (net (code 19) (name "Net-(RV1-Pad3)") + (node (ref RV1) (pin 3))) + (net (code 20) (name T+) + (node (ref C9) (pin 2)) + (node (ref J2) (pin 5)) + (node (ref U3) (pin 3))) + (net (code 21) (name "Net-(J1-Pad1)") + (node (ref J1) (pin 1))) + (net (code 22) (name "Net-(J1-Pad2)") + (node (ref J1) (pin 2))) + (net (code 23) (name "Net-(J1-Pad26)") + (node (ref J1) (pin 26))) + (net (code 24) (name "Net-(J1-Pad27)") + (node (ref J1) (pin 27))) + (net (code 25) (name "Net-(J1-Pad28)") + (node (ref J1) (pin 28))) + (net (code 26) (name "Net-(J1-Pad29)") + (node (ref J1) (pin 29))) + (net (code 27) (name "Net-(J1-Pad3)") + (node (ref J1) (pin 3))) + (net (code 28) (name "Net-(J1-Pad30)") + (node (ref J1) (pin 30))) + (net (code 29) (name "Net-(J1-Pad4)") + (node (ref J1) (pin 4))) + (net (code 30) (name "Net-(J1-Pad5)") + (node (ref J1) (pin 5))) + (net (code 31) (name SW0) + (node (ref R2) (pin 1)) + (node (ref C2) (pin 2)) + (node (ref SW2) (pin 1)) + (node (ref U1) (pin 12))) + (net (code 32) (name SPI_MISO) + (node (ref U1) (pin 17)) + (node (ref U3) (pin 7))) + (net (code 33) (name TX) + (node (ref J3) (pin 9)) + (node (ref U1) (pin 2))) + (net (code 34) (name RX) + (node (ref J3) (pin 7)) + (node (ref U1) (pin 3))) + (net (code 35) (name NRST[RST]) + (node (ref SW1) (pin 1)) + (node (ref U1) (pin 4)) + (node (ref R1) (pin 1)) + (node (ref J3) (pin 8)) + (node (ref C1) (pin 2))) + (net (code 36) (name ICPDAT) + (node (ref J3) (pin 10)) + (node (ref R5) (pin 2))) + (net (code 37) (name VCAP[ICPDA]) + (node (ref R5) (pin 1)) + (node (ref C5) (pin 2)) + (node (ref U1) (pin 8))) + (net (code 38) (name SSR0) + (node (ref Q1) (pin 3)) + (node (ref J2) (pin 3))) + (net (code 39) (name T-) + (node (ref U3) (pin 2)) + (node (ref J2) (pin 6)) + (node (ref C9) (pin 1))) + (net (code 40) (name SRV0) + (node (ref J5) (pin 1)) + (node (ref R4) (pin 2)) + (node (ref U1) (pin 13))) + (net (code 41) (name SWIM[ICPCK]) + (node (ref U1) (pin 18)) + (node (ref J3) (pin 4))) + (net (code 42) (name GND) + (node (ref BZ1) (pin 2)) + (node (ref D1) (pin 2)) + (node (ref C8) (pin 2)) + (node (ref J1) (pin 8)) + (node (ref J1) (pin 7)) + (node (ref C7) (pin 1)) + (node (ref U1) (pin 7)) + (node (ref J1) (pin 23)) + (node (ref J1) (pin 22)) + (node (ref J1) (pin 21)) + (node (ref J1) (pin 20)) + (node (ref J1) (pin 19)) + (node (ref J1) (pin 18)) + (node (ref J1) (pin 17)) + (node (ref J1) (pin 16)) + (node (ref J1) (pin 11)) + (node (ref J1) (pin 10)) + (node (ref C6) (pin 1)) + (node (ref U3) (pin 1)) + (node (ref J5) (pin 3)) + (node (ref C5) (pin 1)) + (node (ref R8) (pin 1)) + (node (ref J2) (pin 2)) + (node (ref R7) (pin 2)) + (node (ref C2) (pin 1)) + (node (ref C1) (pin 1)) + (node (ref R4) (pin 1)) + (node (ref SW2) (pin 2)) + (node (ref R6) (pin 2)) + (node (ref Q2) (pin 2)) + (node (ref C10) (pin 2)) + (node (ref Q1) (pin 2)) + (node (ref U2) (pin 1)) + (node (ref C3) (pin 2)) + (node (ref C4) (pin 2)) + (node (ref SW1) (pin 2)) + (node (ref J3) (pin 3)) + (node (ref J3) (pin 5)) + (node (ref J3) (pin 6))))) \ No newline at end of file diff --git a/hw/v1/v1.pro b/hw/v1/v1.pro new file mode 100644 index 0000000..8eafd55 --- /dev/null +++ b/hw/v1/v1.pro @@ -0,0 +1,249 @@ +update=Friday, March 05, 2021 at 04:46:14 PM +version=1 +last_client=kicad +[general] +version=1 +RootSch= +BoardNm= +[cvpcb] +version=1 +NetIExt=net +[eeschema] +version=1 +LibDir= +[eeschema/libraries] +[schematic_editor] +version=1 +PageLayoutDescrFile= +PlotDirectoryName= +SubpartIdSeparator=0 +SubpartFirstId=65 +NetFmtName=Pcbnew +SpiceAjustPassiveValues=0 +LabSize=50 +ERC_TestSimilarLabels=1 +[pcbnew] +version=1 +PageLayoutDescrFile= +LastNetListRead=v1.net +CopperLayerCount=2 +BoardThickness=1.6002 +AllowMicroVias=0 +AllowBlindVias=0 +RequireCourtyardDefinitions=0 +ProhibitOverlappingCourtyards=1 +MinTrackWidth=0.1524 +MinViaDiameter=0.508 +MinViaDrill=0.254 +MinMicroViaDiameter=0.2 +MinMicroViaDrill=0.09999999999999999 +MinHoleToHole=0.25 +TrackWidth1=0.1524 +TrackWidth2=0.304 +ViaDiameter1=0.508 +ViaDrill1=0.254 +dPairWidth1=0.2 +dPairGap1=0.25 +dPairViaGap1=0.25 +SilkLineWidth=0.12 +SilkTextSizeV=1 +SilkTextSizeH=1 +SilkTextSizeThickness=0.15 +SilkTextItalic=0 +SilkTextUpright=1 +CopperLineWidth=0.2 +CopperTextSizeV=1.5 +CopperTextSizeH=1.5 +CopperTextThickness=0.3 +CopperTextItalic=0 +CopperTextUpright=1 +EdgeCutLineWidth=0.05 +CourtyardLineWidth=0.05 +OthersLineWidth=0.15 +OthersTextSizeV=1 +OthersTextSizeH=1 +OthersTextSizeThickness=0.15 +OthersTextItalic=0 +OthersTextUpright=1 +SolderMaskClearance=0.0508 +SolderMaskMinWidth=0.25 +SolderPasteClearance=-0.02 +SolderPasteRatio=-0 +[pcbnew/Layer.F.Cu] +Name=F.Cu +Type=0 +Enabled=1 +[pcbnew/Layer.In1.Cu] +Name=In1.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In2.Cu] +Name=In2.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In3.Cu] +Name=In3.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In4.Cu] +Name=In4.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In5.Cu] +Name=In5.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In6.Cu] +Name=In6.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In7.Cu] +Name=In7.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In8.Cu] +Name=In8.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In9.Cu] +Name=In9.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In10.Cu] +Name=In10.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In11.Cu] +Name=In11.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In12.Cu] +Name=In12.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In13.Cu] +Name=In13.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In14.Cu] +Name=In14.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In15.Cu] +Name=In15.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In16.Cu] +Name=In16.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In17.Cu] +Name=In17.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In18.Cu] +Name=In18.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In19.Cu] +Name=In19.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In20.Cu] +Name=In20.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In21.Cu] +Name=In21.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In22.Cu] +Name=In22.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In23.Cu] +Name=In23.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In24.Cu] +Name=In24.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In25.Cu] +Name=In25.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In26.Cu] +Name=In26.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In27.Cu] +Name=In27.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In28.Cu] +Name=In28.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In29.Cu] +Name=In29.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In30.Cu] +Name=In30.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.B.Cu] +Name=B.Cu +Type=0 +Enabled=1 +[pcbnew/Layer.B.Adhes] +Enabled=0 +[pcbnew/Layer.F.Adhes] +Enabled=0 +[pcbnew/Layer.B.Paste] +Enabled=1 +[pcbnew/Layer.F.Paste] +Enabled=1 +[pcbnew/Layer.B.SilkS] +Enabled=1 +[pcbnew/Layer.F.SilkS] +Enabled=1 +[pcbnew/Layer.B.Mask] +Enabled=1 +[pcbnew/Layer.F.Mask] +Enabled=1 +[pcbnew/Layer.Dwgs.User] +Enabled=0 +[pcbnew/Layer.Cmts.User] +Enabled=0 +[pcbnew/Layer.Eco1.User] +Enabled=0 +[pcbnew/Layer.Eco2.User] +Enabled=0 +[pcbnew/Layer.Edge.Cuts] +Enabled=1 +[pcbnew/Layer.Margin] +Enabled=1 +[pcbnew/Layer.B.CrtYd] +Enabled=1 +[pcbnew/Layer.F.CrtYd] +Enabled=1 +[pcbnew/Layer.B.Fab] +Enabled=0 +[pcbnew/Layer.F.Fab] +Enabled=1 +[pcbnew/Layer.Rescue] +Enabled=0 +[pcbnew/Netclasses] +[pcbnew/Netclasses/Default] +Name=Default +Clearance=0.1524 +TrackWidth=0.1524 +ViaDiameter=0.508 +ViaDrill=0.254 +uViaDiameter=0.508 +uViaDrill=0.254 +dPairWidth=0.2 +dPairGap=0.25 +dPairViaGap=0.25 diff --git a/hw/v1/v1.sch b/hw/v1/v1.sch new file mode 100644 index 0000000..dbf992f --- /dev/null +++ b/hw/v1/v1.sch @@ -0,0 +1,999 @@ +EESchema Schematic File Version 4 +EELAYER 30 0 +EELAYER END +$Descr A4 11693 8268 +encoding utf-8 +Sheet 1 1 +Title "" +Date "" +Rev "" +Comp "" +Comment1 "" +Comment2 "" +Comment3 "" +Comment4 "" +$EndDescr +$Comp +L Device:LED D2 +U 1 1 5FEB80F4 +P 6600 3400 +F 0 "D2" H 6593 3617 50 0000 C CNN +F 1 "HOT (RED)" H 6593 3526 50 0000 C CNN +F 2 "LED_SMD:LED_0805_2012Metric" H 6600 3400 50 0001 C CNN +F 3 "~" H 6600 3400 50 0001 C CNN + 1 6600 3400 + 1 0 0 -1 +$EndComp +Text GLabel 7300 3400 2 50 Input ~ 0 +3V3 +Text GLabel 6250 3400 0 50 Input ~ 0 +LED_RED +Wire Wire Line + 7300 3400 7150 3400 +Text GLabel 1550 5950 2 50 Input ~ 0 +SWIM[ICPCK] +Text GLabel 1550 5850 2 50 Input ~ 0 +3V3 +Text GLabel 1550 6050 2 50 Input ~ 0 +GND +Text GLabel 2950 2900 2 50 Input ~ 0 +NRST[RST] +Text GLabel 1450 2150 0 50 Input ~ 0 +LED_RED +$Comp +L Switch:SW_Push SW1 +U 1 1 5FEBF6AE +P 10150 2150 +F 0 "SW1" H 10150 2435 50 0000 C CNN +F 1 "RESET" H 10150 2344 50 0000 C CNN +F 2 "MICROJELLY:TS-1186D-C-A" H 10150 2350 50 0001 C CNN +F 3 "~" H 10150 2350 50 0001 C CNN + 1 10150 2150 + 1 0 0 -1 +$EndComp +Text GLabel 10500 2150 2 50 Input ~ 0 +GND +Wire Wire Line + 10500 2150 10350 2150 +Wire Wire Line + 10350 2150 10350 2350 +Connection ~ 10350 2150 +Wire Wire Line + 9800 2150 9900 2150 +Text GLabel 9500 2350 0 50 Input ~ 0 +NRST[RST] +Text GLabel 9500 2150 0 50 Input ~ 0 +3V3 +$Comp +L Device:LED D3 +U 1 1 5FEC417B +P 6900 2550 +F 0 "D3" H 6893 2767 50 0000 C CNN +F 1 "POWER (GREEN)" H 6893 2676 50 0000 C CNN +F 2 "LED_SMD:LED_0805_2012Metric" H 6900 2550 50 0001 C CNN +F 3 "~" H 6900 2550 50 0001 C CNN + 1 6900 2550 + 1 0 0 -1 +$EndComp +Text GLabel 6200 2550 0 50 Input ~ 0 +GND +Text GLabel 7250 2550 2 50 Input ~ 0 +3V3 +Wire Wire Line + 6200 2550 6350 2550 +Text GLabel 4600 2650 2 50 Input ~ 0 +GND +Text GLabel 4600 3100 2 50 Input ~ 0 +GND +Text GLabel 4050 3100 0 50 Input ~ 0 +3V3 +$Comp +L Regulator_Linear:AMS1117-3.3 U2 +U 1 1 5FECBF8A +P 6600 1050 +F 0 "U2" H 6600 1292 50 0000 C CNN +F 1 "AMS1117-3.3" H 6600 1201 50 0000 C CNN +F 2 "Package_TO_SOT_SMD:SOT-223-3_TabPin2" H 6600 1250 50 0001 C CNN +F 3 "http://www.advanced-monolithic.com/pdf/ds1117.pdf" H 6700 800 50 0001 C CNN + 1 6600 1050 + 1 0 0 -1 +$EndComp +Wire Wire Line + 6350 1450 6600 1450 +Wire Wire Line + 6600 1350 6600 1450 +Connection ~ 6600 1450 +Wire Wire Line + 6600 1450 6900 1450 +Text GLabel 6600 1600 3 50 Input ~ 0 +GND +Wire Wire Line + 6600 1600 6600 1450 +Text GLabel 7350 1050 2 50 Input ~ 0 +3V3 +Wire Wire Line + 7200 1450 7200 1050 +Wire Wire Line + 7200 1050 6900 1050 +Text GLabel 5950 1050 0 50 Input ~ 0 +VIN +Wire Wire Line + 6050 1450 6050 1050 +Wire Wire Line + 6050 1050 6300 1050 +Text GLabel 2450 1350 2 50 Input ~ 0 +3V3 +Text GLabel 1950 3350 2 50 Input ~ 0 +GND +$Comp +L Device:R_Small R1 +U 1 1 5FED7A89 +P 9700 2150 +F 0 "R1" V 9504 2150 50 0000 C CNN +F 1 "10K" V 9595 2150 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric" H 9700 2150 50 0001 C CNN +F 3 "~" H 9700 2150 50 0001 C CNN + 1 9700 2150 + 0 1 1 0 +$EndComp +$Comp +L Device:C_Small C1 +U 1 1 5FED8E6C +P 10150 2350 +F 0 "C1" V 10250 2350 50 0000 C CNN +F 1 "0.1uF" V 10350 2350 50 0000 C CNN +F 2 "Capacitor_SMD:C_0805_2012Metric" H 10150 2350 50 0001 C CNN +F 3 "~" H 10150 2350 50 0001 C CNN + 1 10150 2350 + 0 1 1 0 +$EndComp +Wire Wire Line + 10250 2350 10350 2350 +Wire Wire Line + 9500 2150 9600 2150 +Wire Wire Line + 9500 2350 9900 2350 +Wire Wire Line + 9900 2150 9900 2350 +Connection ~ 9900 2150 +Wire Wire Line + 9900 2150 9950 2150 +Connection ~ 9900 2350 +Wire Wire Line + 9900 2350 10050 2350 +$Comp +L Device:R_Small R8 +U 1 1 5FEDD604 +P 6450 2550 +F 0 "R8" V 6646 2550 50 0000 C CNN +F 1 "1K" V 6555 2550 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric" H 6450 2550 50 0001 C CNN +F 3 "~" H 6450 2550 50 0001 C CNN + 1 6450 2550 + 0 -1 -1 0 +$EndComp +Wire Wire Line + 7050 2550 7250 2550 +$Comp +L Device:R_Small R9 +U 1 1 5FEDFA7F +P 7050 3400 +F 0 "R9" V 7246 3400 50 0000 C CNN +F 1 "51" V 7155 3400 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric" H 7050 3400 50 0001 C CNN +F 3 "~" H 7050 3400 50 0001 C CNN + 1 7050 3400 + 0 1 1 0 +$EndComp +Wire Wire Line + 6450 3400 6250 3400 +$Comp +L Device:C_Small C5 +U 1 1 5FEE1D89 +P 4350 2650 +F 0 "C5" V 4121 2650 50 0000 C CNN +F 1 "1uF[DNP]" V 4212 2650 50 0000 C CNN +F 2 "Capacitor_SMD:C_0805_2012Metric" H 4350 2650 50 0001 C CNN +F 3 "~" H 4350 2650 50 0001 C CNN + 1 4350 2650 + 0 1 1 0 +$EndComp +$Comp +L Device:C_Small C6 +U 1 1 5FEE24BB +P 4350 3100 +F 0 "C6" V 4121 3100 50 0000 C CNN +F 1 "0.1uF" V 4212 3100 50 0000 C CNN +F 2 "Capacitor_SMD:C_0805_2012Metric" H 4350 3100 50 0001 C CNN +F 3 "~" H 4350 3100 50 0001 C CNN + 1 4350 3100 + 0 1 1 0 +$EndComp +Wire Wire Line + 4050 2650 4100 2650 +Wire Wire Line + 4050 3100 4250 3100 +Wire Wire Line + 4450 3100 4600 3100 +Wire Wire Line + 4450 2650 4600 2650 +$Comp +L Device:C_Small C7 +U 1 1 5FEE58D5 +P 6250 1450 +F 0 "C7" V 6021 1450 50 0000 C CNN +F 1 "1uF" V 6112 1450 50 0000 C CNN +F 2 "Capacitor_SMD:C_0805_2012Metric" H 6250 1450 50 0001 C CNN +F 3 "~" H 6250 1450 50 0001 C CNN + 1 6250 1450 + 0 1 1 0 +$EndComp +$Comp +L Device:CP_Small C8 +U 1 1 5FEE6095 +P 7000 1450 +F 0 "C8" V 6775 1450 50 0000 C CNN +F 1 "10uF" V 6866 1450 50 0000 C CNN +F 2 "Capacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A" H 7000 1450 50 0001 C CNN +F 3 "~" H 7000 1450 50 0001 C CNN + 1 7000 1450 + 0 1 1 0 +$EndComp +Wire Wire Line + 5950 1050 6050 1050 +Connection ~ 6050 1050 +Wire Wire Line + 6050 1450 6150 1450 +Wire Wire Line + 7100 1450 7200 1450 +Wire Wire Line + 7200 1050 7350 1050 +Connection ~ 7200 1050 +$Comp +L Device:D D1 +U 1 1 5FEFB9A6 +P 9800 1150 +F 0 "D1" V 9754 1230 50 0000 L CNN +F 1 "IN4148WS" V 9845 1230 50 0000 L CNN +F 2 "Diode_SMD:D_SOD-323" H 9800 1150 50 0001 C CNN +F 3 "~" H 9800 1150 50 0001 C CNN + 1 9800 1150 + 0 1 1 0 +$EndComp +$Comp +L Device:Buzzer BZ1 +U 1 1 5FEFC705 +P 10450 1150 +F 0 "BZ1" H 10602 1179 50 0000 L CNN +F 1 "Buzzer" H 10602 1088 50 0000 L CNN +F 2 "MICROJELLY:MLT-8530" V 10425 1250 50 0001 C CNN +F 3 "~" V 10425 1250 50 0001 C CNN + 1 10450 1150 + 1 0 0 -1 +$EndComp +Text GLabel 9650 1300 0 50 Input ~ 0 +GND +Text GLabel 9650 1000 0 50 Input ~ 0 +BUZZER +NoConn ~ 3500 5750 +Text GLabel 4600 5650 2 50 Input ~ 0 +GND +Wire Wire Line + 4450 6350 4500 6350 +Wire Wire Line + 4500 6350 4500 6250 +Wire Wire Line + 4500 5650 4600 5650 +Wire Wire Line + 4450 5650 4500 5650 +Connection ~ 4500 5650 +Wire Wire Line + 4450 5750 4500 5750 +Connection ~ 4500 5750 +Wire Wire Line + 4500 5750 4500 5650 +Wire Wire Line + 4450 5850 4500 5850 +Connection ~ 4500 5850 +Wire Wire Line + 4500 5850 4500 5750 +Wire Wire Line + 4450 5950 4500 5950 +Connection ~ 4500 5950 +Wire Wire Line + 4500 5950 4500 5850 +Wire Wire Line + 4450 6050 4500 6050 +Connection ~ 4500 6050 +Wire Wire Line + 4500 6050 4500 5950 +Wire Wire Line + 4450 6150 4500 6150 +Connection ~ 4500 6150 +Wire Wire Line + 4500 6150 4500 6050 +Wire Wire Line + 4450 6250 4500 6250 +Connection ~ 4500 6250 +Wire Wire Line + 4500 6250 4500 6150 +Text GLabel 3350 5550 0 50 Input ~ 0 +GND +Wire Wire Line + 3500 5650 3450 5650 +Wire Wire Line + 3450 5650 3450 5550 +Wire Wire Line + 3450 5550 3350 5550 +Wire Wire Line + 3450 5550 3500 5550 +Connection ~ 3450 5550 +Wire Wire Line + 3450 5550 3450 5350 +Wire Wire Line + 3450 5350 3500 5350 +Text GLabel 4600 6950 2 50 Input ~ 0 +GND +Text GLabel 4600 6750 2 50 Input ~ 0 +3V3 +Text GLabel 4600 6450 2 50 Input ~ 0 +SPI_SCK +Wire Wire Line + 4600 6450 4450 6450 +Text GLabel 4600 6550 2 50 Input ~ 0 +SPI_MOSI +Wire Wire Line + 4600 6550 4450 6550 +Text GLabel 1450 2650 0 50 Input ~ 0 +SPI_MOSI +Text GLabel 4600 5250 2 50 Input ~ 0 +LCD_CS +Wire Wire Line + 4600 5250 4450 5250 +Text GLabel 2950 2400 2 50 Input ~ 0 +TX +Text GLabel 4600 5450 2 50 Input ~ 0 +LCD_CD +Wire Wire Line + 4600 5450 4450 5450 +Text GLabel 4600 5350 2 50 Input ~ 0 +LCD_RES +Wire Wire Line + 4600 5350 4450 5350 +Text GLabel 8700 4850 1 50 Input ~ 0 +3V3 +Text GLabel 8700 5900 3 50 Input ~ 0 +GND +Text GLabel 9200 5200 2 50 Input ~ 0 +SPI_SCK +Text GLabel 1450 2750 0 50 Input ~ 0 +SPI_MISO +Text GLabel 9200 5300 2 50 Input ~ 0 +SPI_MISO +Wire Wire Line + 9100 5200 9200 5200 +Wire Wire Line + 9200 5300 9100 5300 +Wire Wire Line + 8700 5800 8700 5900 +Text GLabel 10550 5600 2 50 Input ~ 0 +3V3 +Text GLabel 10050 5600 0 50 Input ~ 0 +GND +Text GLabel 9200 5500 2 50 Input ~ 0 +K_CS +Wire Wire Line + 9100 5500 9200 5500 +Text GLabel 8150 5300 0 50 Input ~ 0 +T+ +Text GLabel 1600 4950 2 50 Input ~ 0 +T+ +Text GLabel 1600 5050 2 50 Input ~ 0 +T- +Text GLabel 8150 5500 0 50 Input ~ 0 +T- +Text GLabel 1600 4550 2 50 Input ~ 0 +VIN +Text GLabel 1600 4650 2 50 Input ~ 0 +GND +Text GLabel 1450 2050 0 50 Input ~ 0 +SW0 +Text GLabel 2950 2500 2 50 Input ~ 0 +RX +Text GLabel 1050 6050 0 50 Input ~ 0 +GND +Text GLabel 1050 6250 0 50 Input ~ 0 +TX +Text GLabel 1050 6150 0 50 Input ~ 0 +RX +$Comp +L Transistor_FET:2N7002 Q1 +U 1 1 5FF88B00 +P 6550 4750 +F 0 "Q1" H 6754 4796 50 0000 L CNN +F 1 "2N7002" H 6754 4705 50 0000 L CNN +F 2 "Package_TO_SOT_SMD:SOT-23" H 6750 4675 50 0001 L CIN +F 3 "https://www.onsemi.com/pub/Collateral/NDS7002A-D.PDF" H 6550 4750 50 0001 L CNN + 1 6550 4750 + 1 0 0 -1 +$EndComp +$Comp +L Transistor_FET:2N7002 Q2 +U 1 1 5FF8F9B7 +P 6550 5700 +F 0 "Q2" H 6754 5746 50 0000 L CNN +F 1 "2N7002" H 6754 5655 50 0000 L CNN +F 2 "Package_TO_SOT_SMD:SOT-23" H 6750 5625 50 0001 L CIN +F 3 "https://www.onsemi.com/pub/Collateral/NDS7002A-D.PDF" H 6550 5700 50 0001 L CNN + 1 6550 5700 + 1 0 0 -1 +$EndComp +Text GLabel 1600 4750 2 50 Input ~ 0 +SSR0 +Text GLabel 6800 5500 2 50 Input ~ 0 +SSR1 +Text GLabel 6800 4550 2 50 Input ~ 0 +SSR0 +Text GLabel 1600 4850 2 50 Input ~ 0 +SSR1 +Wire Wire Line + 6650 4550 6800 4550 +Wire Wire Line + 6800 5500 6650 5500 +$Comp +L Device:R_Small R6 +U 1 1 5FFAE1FA +P 6200 4900 +F 0 "R6" H 6259 4946 50 0000 L CNN +F 1 "10K" H 6259 4855 50 0000 L CNN +F 2 "Resistor_SMD:R_0805_2012Metric" H 6200 4900 50 0001 C CNN +F 3 "~" H 6200 4900 50 0001 C CNN + 1 6200 4900 + 1 0 0 -1 +$EndComp +$Comp +L Switch:SW_Push SW2 +U 1 1 5FFF837C +P 10150 3400 +F 0 "SW2" H 10150 3685 50 0000 C CNN +F 1 "ACTION" H 10150 3594 50 0000 C CNN +F 2 "MICROJELLY:UK-B0229-G2.5-B-250" H 10150 3600 50 0001 C CNN +F 3 "~" H 10150 3600 50 0001 C CNN + 1 10150 3400 + 1 0 0 -1 +$EndComp +Text GLabel 10500 3400 2 50 Input ~ 0 +GND +Wire Wire Line + 10500 3400 10350 3400 +Wire Wire Line + 10350 3400 10350 3600 +Connection ~ 10350 3400 +Wire Wire Line + 9800 3400 9900 3400 +Text GLabel 9500 3600 0 50 Input ~ 0 +SW0 +Text GLabel 9500 3400 0 50 Input ~ 0 +3V3 +$Comp +L Device:R_Small R2 +U 1 1 5FFF87D3 +P 9700 3400 +F 0 "R2" V 9504 3400 50 0000 C CNN +F 1 "10K" V 9595 3400 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric" H 9700 3400 50 0001 C CNN +F 3 "~" H 9700 3400 50 0001 C CNN + 1 9700 3400 + 0 1 1 0 +$EndComp +$Comp +L Device:C_Small C2 +U 1 1 5FFF87DD +P 10150 3600 +F 0 "C2" V 10250 3600 50 0000 C CNN +F 1 "0.1uF" V 10350 3600 50 0000 C CNN +F 2 "Capacitor_SMD:C_0805_2012Metric" H 10150 3600 50 0001 C CNN +F 3 "~" H 10150 3600 50 0001 C CNN + 1 10150 3600 + 0 1 1 0 +$EndComp +Wire Wire Line + 10250 3600 10350 3600 +Wire Wire Line + 9500 3400 9600 3400 +Wire Wire Line + 9500 3600 9900 3600 +Wire Wire Line + 9900 3400 9900 3600 +Connection ~ 9900 3400 +Wire Wire Line + 9900 3400 9950 3400 +Connection ~ 9900 3600 +Wire Wire Line + 9900 3600 10050 3600 +Text GLabel 6800 5050 2 50 Input ~ 0 +GND +Text GLabel 6100 4750 0 50 Input ~ 0 +_SSR0 +Text GLabel 6100 5700 0 50 Input ~ 0 +_SSR1 +Wire Wire Line + 6800 5050 6650 5050 +Wire Wire Line + 6650 5050 6650 4950 +Wire Wire Line + 6200 5000 6200 5050 +Wire Wire Line + 6200 5050 6650 5050 +Connection ~ 6650 5050 +Wire Wire Line + 6350 4750 6200 4750 +Wire Wire Line + 6200 4750 6200 4800 +Wire Wire Line + 6200 4750 6100 4750 +Connection ~ 6200 4750 +Text GLabel 6800 6050 2 50 Input ~ 0 +GND +Wire Wire Line + 6650 6050 6650 5900 +Wire Wire Line + 6650 6050 6800 6050 +Wire Wire Line + 6100 5700 6250 5700 +$Comp +L Device:R_Small R7 +U 1 1 60034F59 +P 6250 5900 +F 0 "R7" H 6309 5946 50 0000 L CNN +F 1 "10K" H 6309 5855 50 0000 L CNN +F 2 "Resistor_SMD:R_0805_2012Metric" H 6250 5900 50 0001 C CNN +F 3 "~" H 6250 5900 50 0001 C CNN + 1 6250 5900 + 1 0 0 -1 +$EndComp +Wire Wire Line + 6250 5800 6250 5700 +Connection ~ 6250 5700 +Wire Wire Line + 6250 5700 6350 5700 +Wire Wire Line + 6250 6000 6250 6050 +Wire Wire Line + 6250 6050 6650 6050 +Connection ~ 6650 6050 +$Comp +L Device:R_Small R3 +U 1 1 5FF2AAD0 +P 3250 5250 +F 0 "R3" V 3054 5250 50 0000 C CNN +F 1 "15" V 3145 5250 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric" H 3250 5250 50 0001 C CNN +F 3 "~" H 3250 5250 50 0001 C CNN + 1 3250 5250 + 0 1 1 0 +$EndComp +Wire Wire Line + 3350 5250 3500 5250 +$Comp +L Device:R_POT_Small RV1 +U 1 1 5FF34C3B +P 2900 5250 +F 0 "RV1" H 2840 5296 50 0000 R CNN +F 1 "1K" H 2840 5205 50 0000 R CNN +F 2 "MICROJELLY:Potentiometer_Bourns_TC33X_Vertical" H 2900 5250 50 0001 C CNN +F 3 "~" H 2900 5250 50 0001 C CNN + 1 2900 5250 + 1 0 0 -1 +$EndComp +Text GLabel 2900 5050 1 50 Input ~ 0 +3V3 +Wire Wire Line + 2900 5050 2900 5150 +Wire Wire Line + 3000 5250 3150 5250 +NoConn ~ 2900 5350 +Wire Wire Line + 6550 2550 6750 2550 +Wire Wire Line + 6950 3400 6750 3400 +$Comp +L MICROJELLY:MAX6675ISA+T U3 +U 1 1 600B9718 +P 8700 5400 +F 0 "U3" H 8450 5900 50 0000 C CNN +F 1 "MAX6675ISA+T" H 8250 5800 50 0000 C CNN +F 2 "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" H 9700 5050 50 0001 C CIN +F 3 "http://datasheets.maximintegrated.com/en/ds/MAX31855.pdf" H 8700 5400 50 0001 C CNN + 1 8700 5400 + 1 0 0 -1 +$EndComp +$Comp +L MICROJELLY:ERC12864-10 J1 +U 1 1 600D30D4 +P 4000 6150 +F 0 "J1" H 3975 7337 60 0000 C CNN +F 1 "ERC12864-10" H 3975 7231 60 0000 C CNN +F 2 "MICROJELLY:ER-CON30HB-1" H 3500 7050 60 0001 C CNN +F 3 "" H 3500 7050 60 0001 C CNN + 1 4000 6150 + 1 0 0 -1 +$EndComp +$Comp +L MICROJELLY:STM8S[N76E] U1 +U 1 1 60155462 +P 2200 2350 +F 0 "U1" H 2200 3531 50 0000 C CNN +F 1 "STM8S[N76E]" H 2200 3440 50 0000 C CNN +F 2 "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm" H 2250 3450 50 0001 L CNN +F 3 "http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00024550.pdf" H 2150 1950 50 0001 C CNN + 1 2200 2350 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2400 1350 2450 1350 +Wire Wire Line + 1900 3350 1950 3350 +$Comp +L Device:R_Small R5 +U 1 1 60167B52 +P 4350 2250 +F 0 "R5" V 4550 2250 50 0000 L CNN +F 1 "DNP[0]" V 4450 2100 50 0000 L CNN +F 2 "Resistor_SMD:R_0805_2012Metric" H 4350 2250 50 0001 C CNN +F 3 "~" H 4350 2250 50 0001 C CNN + 1 4350 2250 + 0 -1 -1 0 +$EndComp +Wire Wire Line + 4250 2250 4100 2250 +Wire Wire Line + 4100 2250 4100 2650 +Connection ~ 4100 2650 +Wire Wire Line + 4100 2650 4250 2650 +Text GLabel 4600 2250 2 50 Input ~ 0 +ICPDAT +Wire Wire Line + 4600 2250 4450 2250 +Text GLabel 2950 3000 2 50 Input ~ 0 +VCAP[ICPDA] +Wire Wire Line + 2950 3000 2800 3000 +Text GLabel 4050 2650 0 50 Input ~ 0 +VCAP[ICPDA] +Wire Wire Line + 2800 2900 2950 2900 +Text GLabel 1550 6150 2 50 Input ~ 0 +NRST[RST] +Text GLabel 2950 3100 2 50 Input ~ 0 +SWIM[ICPCK] +Wire Wire Line + 2800 3100 2950 3100 +Wire Wire Line + 1600 2050 1450 2050 +Wire Wire Line + 1450 2150 1600 2150 +Wire Wire Line + 1600 2750 1450 2750 +Text GLabel 1550 6250 2 50 Input ~ 0 +ICPDAT +$Comp +L Connector:Conn_01x03_Male J5 +U 1 1 601FC65E +P 1100 7150 +F 0 "J5" H 1208 7431 50 0000 C CNN +F 1 "SERVO" H 1208 7340 50 0000 C CNN +F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 1100 7150 50 0001 C CNN +F 3 "~" H 1100 7150 50 0001 C CNN + 1 1100 7150 + 1 0 0 -1 +$EndComp +Text GLabel 1450 7250 2 50 Input ~ 0 +GND +Wire Wire Line + 1450 7250 1300 7250 +Text GLabel 1450 7150 2 50 Input ~ 0 +3V3 +Wire Wire Line + 1300 7150 1450 7150 +Wire Wire Line + 2800 2400 2950 2400 +Wire Wire Line + 2800 2500 2950 2500 +$Comp +L Connector:Conn_01x06_Male J2 +U 1 1 60223278 +P 1250 4750 +F 0 "J2" H 1358 5131 50 0000 C CNN +F 1 "Terminal Block" H 1358 5040 50 0000 C CNN +F 2 "MICROJELLY:HT396V-3.96-6p" H 1250 4750 50 0001 C CNN +F 3 "~" H 1250 4750 50 0001 C CNN + 1 1250 4750 + 1 0 0 -1 +$EndComp +Wire Wire Line + 1450 4550 1600 4550 +Wire Wire Line + 1450 4650 1600 4650 +Wire Wire Line + 1600 4750 1450 4750 +Wire Wire Line + 1450 4850 1600 4850 +Wire Wire Line + 1600 4950 1450 4950 +Wire Wire Line + 1450 5050 1600 5050 +Text GLabel 1450 7050 2 50 Input ~ 0 +SRV0 +Wire Wire Line + 1300 7050 1450 7050 +Text GLabel 1450 2350 0 50 Input ~ 0 +SRV0 +Wire Wire Line + 1450 2350 1600 2350 +Text GLabel 1450 2450 0 50 Input ~ 0 +LCD_CS +Wire Wire Line + 1450 2450 1600 2450 +Text GLabel 1450 1750 0 50 Input ~ 0 +LCD_RES +Wire Wire Line + 1450 1750 1600 1750 +Text GLabel 2950 1850 2 50 Input ~ 0 +LCD_CD +Wire Wire Line + 2800 1850 2950 1850 +Text GLabel 1450 2550 0 50 Input ~ 0 +SPI_SCK +Wire Wire Line + 1600 2550 1450 2550 +Wire Wire Line + 1600 2650 1450 2650 +Text GLabel 1450 1650 0 50 Input ~ 0 +K_CS +Wire Wire Line + 1450 1650 1600 1650 +Text GLabel 2950 2050 2 50 Input ~ 0 +BUZZER +Wire Wire Line + 2950 2050 2800 2050 +Text GLabel 4600 1500 2 50 Input ~ 0 +GND +Text GLabel 4050 1500 0 50 Input ~ 0 +SRV0 +Wire Wire Line + 4050 1500 4250 1500 +Wire Wire Line + 4450 1500 4600 1500 +$Comp +L Device:R_Small R4 +U 1 1 602F4E9D +P 4350 1500 +F 0 "R4" V 4546 1500 50 0000 C CNN +F 1 "10K" V 4455 1500 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric" H 4350 1500 50 0001 C CNN +F 3 "~" H 4350 1500 50 0001 C CNN + 1 4350 1500 + 0 1 1 0 +$EndComp +Text GLabel 2950 1950 2 50 Input ~ 0 +_SSR0 +Wire Wire Line + 2950 1950 2800 1950 +Text GLabel 1450 1850 0 50 Input ~ 0 +_SSR1 +Wire Wire Line + 1450 1850 1600 1850 +$Comp +L Device:C_Small C10 +U 1 1 6030A57B +P 10300 5600 +F 0 "C10" V 10071 5600 50 0000 C CNN +F 1 "1uF" V 10162 5600 50 0000 C CNN +F 2 "Capacitor_SMD:C_0805_2012Metric" H 10300 5600 50 0001 C CNN +F 3 "~" H 10300 5600 50 0001 C CNN + 1 10300 5600 + 0 1 1 0 +$EndComp +Wire Wire Line + 10050 5600 10200 5600 +Wire Wire Line + 10400 5600 10550 5600 +$Comp +L Device:C_Small C9 +U 1 1 6031D01B +P 10300 5100 +F 0 "C9" V 10071 5100 50 0000 C CNN +F 1 ".01uF" V 10162 5100 50 0000 C CNN +F 2 "Capacitor_SMD:C_0805_2012Metric" H 10300 5100 50 0001 C CNN +F 3 "~" H 10300 5100 50 0001 C CNN + 1 10300 5100 + 0 1 1 0 +$EndComp +Text GLabel 10050 5100 0 50 Input ~ 0 +T+ +Text GLabel 10550 5100 2 50 Input ~ 0 +T- +Wire Wire Line + 10050 5100 10200 5100 +Wire Wire Line + 10550 5100 10400 5100 +Wire Wire Line + 8150 5500 8300 5500 +Wire Wire Line + 8300 5300 8150 5300 +Wire Wire Line + 8700 4850 8700 5000 +Wire Notes Line + 7600 4250 11050 4250 +Wire Notes Line + 11050 4250 11050 6350 +Wire Notes Line + 11050 6350 7600 6350 +Wire Notes Line + 7600 6350 7600 4250 +$Comp +L Device:C_Small C3 +U 1 1 6039E003 +P 3050 6250 +F 0 "C3" V 2821 6250 50 0000 C CNN +F 1 "10uF" V 2912 6250 50 0000 C CNN +F 2 "Capacitor_SMD:C_0805_2012Metric" H 3050 6250 50 0001 C CNN +F 3 "~" H 3050 6250 50 0001 C CNN + 1 3050 6250 + 0 1 1 0 +$EndComp +Text GLabel 3250 6250 2 50 Input ~ 0 +3V3 +Text GLabel 2850 6250 0 50 Input ~ 0 +GND +Wire Wire Line + 2850 6250 2950 6250 +Wire Wire Line + 3150 6250 3250 6250 +$Comp +L Device:C_Small C4 +U 1 1 603B13C8 +P 3050 6650 +F 0 "C4" V 2821 6650 50 0000 C CNN +F 1 "0.1uF" V 2912 6650 50 0000 C CNN +F 2 "Capacitor_SMD:C_0805_2012Metric" H 3050 6650 50 0001 C CNN +F 3 "~" H 3050 6650 50 0001 C CNN + 1 3050 6650 + 0 1 1 0 +$EndComp +Text GLabel 3250 6650 2 50 Input ~ 0 +3V3 +Text GLabel 2850 6650 0 50 Input ~ 0 +GND +Wire Wire Line + 2850 6650 2950 6650 +Wire Wire Line + 3150 6650 3250 6650 +Wire Wire Line + 4450 6750 4600 6750 +Wire Wire Line + 4450 6950 4600 6950 +Wire Notes Line + 7450 4250 7450 6350 +Wire Notes Line + 7450 6350 5450 6350 +Wire Notes Line + 5450 6350 5450 4250 +Wire Notes Line + 5450 4250 7450 4250 +Wire Notes Line + 5300 4250 5300 7550 +Wire Notes Line + 5300 7550 2500 7550 +Wire Notes Line + 2500 7550 2500 4250 +Wire Notes Line + 2500 4250 5300 4250 +Wire Notes Line + 10900 4050 9150 4050 +Wire Notes Line + 9150 4050 9150 2900 +Wire Notes Line + 9150 2900 10900 2900 +Wire Notes Line + 10900 2900 10900 4050 +Wire Notes Line + 10900 1600 10900 2750 +Wire Notes Line + 10900 1450 9150 1450 +Wire Notes Line + 9150 1450 9150 750 +Wire Notes Line + 9150 750 10900 750 +Wire Notes Line + 10900 750 10900 1450 +Wire Wire Line + 9650 1000 9800 1000 +Wire Wire Line + 9800 1000 10050 1000 +Wire Wire Line + 10050 1000 10050 1050 +Wire Wire Line + 10050 1050 10350 1050 +Connection ~ 9800 1000 +Wire Wire Line + 9650 1300 9800 1300 +Wire Wire Line + 9800 1300 10050 1300 +Wire Wire Line + 10050 1300 10050 1250 +Wire Wire Line + 10050 1250 10350 1250 +Connection ~ 9800 1300 +Wire Notes Line + 600 4050 600 600 +Wire Notes Line + 600 600 5300 600 +Wire Notes Line + 5300 600 5300 4050 +Wire Notes Line + 600 4050 5300 4050 +Wire Notes Line + 5450 4050 7750 4050 +Wire Notes Line + 7750 4050 7750 2100 +Wire Notes Line + 7750 2100 5450 2100 +Wire Notes Line + 5450 2100 5450 4050 +Wire Notes Line + 5450 1950 5450 600 +Wire Notes Line + 5450 600 7750 600 +Wire Notes Line + 7750 600 7750 1950 +Wire Notes Line + 7750 1950 5450 1950 +Wire Notes Line + 600 4150 600 5350 +Wire Notes Line + 600 5350 2200 5350 +Wire Notes Line + 2200 5350 2200 4150 +Wire Notes Line + 2200 4150 600 4150 +Wire Notes Line + 8900 1600 8900 2750 +Wire Notes Line + 8900 2750 10900 2750 +Wire Notes Line + 8900 1600 10900 1600 +$Comp +L Connector_Generic:Conn_02x05_Odd_Even J3 +U 1 1 6016ECE9 +P 1250 6050 +F 0 "J3" H 1300 6467 50 0000 C CNN +F 1 "ISP/UART" H 1300 6376 50 0000 C CNN +F 2 "MICROJELLY:TRUDEAU_C2X5_SMD" H 1250 6050 50 0001 C CNN +F 3 "~" H 1250 6050 50 0001 C CNN + 1 1250 6050 + 1 0 0 -1 +$EndComp +Text GLabel 1050 5850 0 50 Input ~ 0 +3V3 +Text GLabel 1050 5950 0 50 Input ~ 0 +GND +Wire Notes Line + 2200 5500 600 5500 +Wire Notes Line + 600 5500 600 6550 +Wire Notes Line + 600 6550 2200 6550 +Wire Notes Line + 2200 6550 2200 5500 +Wire Notes Line + 600 6700 2200 6700 +Wire Notes Line + 2200 6700 2200 7550 +Wire Notes Line + 2200 7550 600 7550 +Wire Notes Line + 600 7550 600 6700 +$EndSCHEMATC