From fc7786299e72bfbc2e6d484c5b51b083d8460456 Mon Sep 17 00:00:00 2001
From: Will Langford <langfordw@gmail.com>
Date: Sat, 9 Dec 2017 15:39:22 -0500
Subject: [PATCH] init commit

---
 boards.txt                                    | 147 ++++++++++++++++++
 bootloaders/ATmegaBOOT_168_atmega328.hex      | 125 +++++++++++++++
 .../ATmegaBOOT_168_atmega328_pro_8MHz.hex     | 124 +++++++++++++++
 platform.txt                                  |  11 ++
 variants/tiny14/pins_arduino.h                | 132 ++++++++++++++++
 variants/tiny8/pins_arduino.h                 | 126 +++++++++++++++
 6 files changed, 665 insertions(+)
 create mode 100644 boards.txt
 create mode 100644 bootloaders/ATmegaBOOT_168_atmega328.hex
 create mode 100644 bootloaders/ATmegaBOOT_168_atmega328_pro_8MHz.hex
 create mode 100644 platform.txt
 create mode 100644 variants/tiny14/pins_arduino.h
 create mode 100644 variants/tiny8/pins_arduino.h

diff --git a/boards.txt b/boards.txt
new file mode 100644
index 0000000..c07eb46
--- /dev/null
+++ b/boards.txt
@@ -0,0 +1,147 @@
+###################################################
+####### ATmega Boards w/ Arduino Bootloader #######
+###################################################
+
+atmega328p8bl.name=ATmega328p (Internal 8MHz) w/ bootloader
+atmega328p8bl.upload.protocol=arduino
+atmega328p8bl.upload.speed=57600
+atmega328p8bl.bootloader.unlock_bits=0x3F
+atmega328p8bl.bootloader.lock_bits=0x0F
+atmega328p8bl.build.core=arduino:arduino
+atmega328p8bl.upload.maximum_size=30720
+atmega328p8bl.build.mcu=atmega328p
+atmega328p8bl.build.variant=arduino:standard
+atmega328p8bl.bootloader.low_fuses=0xE2
+atmega328p8bl.bootloader.high_fuses=0xDA
+atmega328p8bl.extended_fuses=0x07
+atmega328p8bl.build.f_cpu=8000000L
+atmega328p8bl.bootloader.path=arduino:atmega
+atmega328p8bl.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
+atmega328p8bl.build.board = AVR_ATMEGA328P8BL
+
+atmega328p16bl.name=ATmega328p (External 16MHz) w/ bootloader
+atmega328p16bl.upload.protocol=arduino
+atmega328p16bl.upload.speed=57600
+atmega328p16bl.bootloader.unlock_bits=0x3F
+atmega328p16bl.bootloader.lock_bits=0x0F
+atmega328p16bl.build.core=arduino:arduino
+atmega328p16bl.upload.maximum_size=30720
+atmega328p16bl.build.mcu=atmega328p
+atmega328p16bl.build.variant=arduino:standard
+atmega328p16bl.bootloader.low_fuses=0xFF
+atmega328p16bl.bootloader.high_fuses=0xDA
+atmega328p16bl.extended_fuses=0xFD
+atmega328p16bl.build.f_cpu=16000000L
+atmega328p16bl.bootloader.path=arduino:atmega
+atmega328p16bl.bootloader.file=ATmegaBOOT_168_atmega328.hex
+atmega328p16bl.build.board = AVR_ATMEGA328P16BL
+
+#############################################
+############### ATmega Boards ###############
+#############################################
+
+menu.cpu=Processor
+menu.clock=Clock
+
+fabatmega.name=ATmega
+fabatmega.upload.protocol=arduino
+fabatmega.upload.speed=57600
+fabatmega.bootloader.unlock_bits=0x3F
+fabatmega.bootloader.lock_bits=0x0F
+fabatmega.build.core=arduino:arduino
+fabatmega.build.baord=AVR_FABATMEGA
+
+fabatmega.menu.cpu.atmega328p=ATmega328p
+fabatmega.menu.cpu.atmega328p.upload.maximum_size=30720
+fabatmega.menu.cpu.atmega328p.build.mcu=atmega328p
+fabatmega.menu.cpu.atmega328p.build.variant=arduino:standard
+
+
+fabatmega.menu.clock.internal8=8 MHz (internal)
+fabatmega.menu.clock.internal8.bootloader.low_fuses=0xE2
+fabatmega.menu.clock.internal8.bootloader.high_fuses=0xDA
+fabatmega.menu.clock.internal8.bootloader.extended_fuses=0x07
+fabatmega.menu.clock.internal8.build.f_cpu=8000000L
+
+fabatmega.menu.clock.external8=8 MHz (external)
+fabatmega.menu.clock.external8.bootloader.low_fuses=0xFF
+fabatmega.menu.clock.external8.bootloader.high_fuses=0xDA
+fabatmega.menu.clock.external8.bootloader.extended_fuses=0xFD
+fabatmega.menu.clock.external8.build.f_cpu=8000000L
+
+fabatmega.menu.clock.external16=16 MHz (external)
+fabatmega.menu.clock.external16.bootloader.low_fuses=0xFF
+fabatmega.menu.clock.external16.bootloader.high_fuses=0xDA
+fabatmega.menu.clock.external16.bootloader.extended_fuses=0xFD
+fabatmega.menu.clock.external16.build.f_cpu=16000000L
+
+fabatmega.menu.clock.external20=20 MHz (external)
+fabatmega.menu.clock.external20.bootloader.low_fuses=0xFF
+fabatmega.menu.clock.external20.bootloader.high_fuses=0xDA
+fabatmega.menu.clock.external20.bootloader.extended_fuses=0xFD
+fabatmega.menu.clock.external20.build.f_cpu=20000000L
+
+#############################################
+############### ATtiny Boards ###############
+#############################################
+
+menu.cpu=Processor
+menu.clock=Clock
+
+attiny.name=ATtiny
+attiny.bootloader.tool=arduino:avrdude
+attiny.bootloader.unlock_bits=0xff
+attiny.bootloader.lock_bits=0xff
+attiny.build.core=arduino:arduino
+attiny.build.board=attiny
+attiny.upload.tool=arduino:avrdude
+
+attiny.menu.cpu.attiny45=ATtiny45
+attiny.menu.cpu.attiny45.upload.maximum_size=4096
+attiny.menu.cpu.attiny45.build.mcu=attiny45
+attiny.menu.cpu.attiny45.build.variant=tiny8
+
+attiny.menu.cpu.attiny85=ATtiny85
+attiny.menu.cpu.attiny85.upload.maximum_size=8192
+attiny.menu.cpu.attiny85.build.mcu=attiny85
+attiny.menu.cpu.attiny85.build.variant=tiny8
+
+attiny.menu.cpu.attiny44=ATtiny44
+attiny.menu.cpu.attiny44.upload.maximum_size=4096
+attiny.menu.cpu.attiny44.build.mcu=attiny44
+attiny.menu.cpu.attiny44.build.variant=tiny14
+
+attiny.menu.cpu.attiny84=ATtiny84
+attiny.menu.cpu.attiny84.upload.maximum_size=8192
+attiny.menu.cpu.attiny84.build.mcu=attiny84
+attiny.menu.cpu.attiny84.build.variant=tiny14
+
+attiny.menu.clock.internal1=1 MHz (internal)
+attiny.menu.clock.internal1.bootloader.low_fuses=0x62
+attiny.menu.clock.internal1.bootloader.high_fuses=0xdf
+attiny.menu.clock.internal1.bootloader.extended_fuses=0xff
+attiny.menu.clock.internal1.build.f_cpu=1000000L
+
+attiny.menu.clock.internal8=8 MHz (internal)
+attiny.menu.clock.internal8.bootloader.low_fuses=0xe2
+attiny.menu.clock.internal8.bootloader.high_fuses=0xdf
+attiny.menu.clock.internal8.bootloader.extended_fuses=0xff
+attiny.menu.clock.internal8.build.f_cpu=8000000L
+
+attiny.menu.clock.external8=8 MHz (external)
+attiny.menu.clock.external8.bootloader.low_fuses=0xfe
+attiny.menu.clock.external8.bootloader.high_fuses=0xdf
+attiny.menu.clock.external8.bootloader.extended_fuses=0xff
+attiny.menu.clock.external8.build.f_cpu=8000000L
+
+attiny.menu.clock.external16=16 MHz (external)
+attiny.menu.clock.external16.bootloader.low_fuses=0xfe
+attiny.menu.clock.external16.bootloader.high_fuses=0xdf
+attiny.menu.clock.external16.bootloader.extended_fuses=0xff
+attiny.menu.clock.external16.build.f_cpu=16000000L
+
+attiny.menu.clock.external20=20 MHz (external)
+attiny.menu.clock.external20.bootloader.low_fuses=0xfe
+attiny.menu.clock.external20.bootloader.high_fuses=0xdf
+attiny.menu.clock.external20.bootloader.extended_fuses=0xff
+attiny.menu.clock.external20.build.f_cpu=20000000L
diff --git a/bootloaders/ATmegaBOOT_168_atmega328.hex b/bootloaders/ATmegaBOOT_168_atmega328.hex
new file mode 100644
index 0000000..43a8b30
--- /dev/null
+++ b/bootloaders/ATmegaBOOT_168_atmega328.hex
@@ -0,0 +1,125 @@
+:107800000C94343C0C94513C0C94513C0C94513CE1
+:107810000C94513C0C94513C0C94513C0C94513CB4
+:107820000C94513C0C94513C0C94513C0C94513CA4
+:107830000C94513C0C94513C0C94513C0C94513C94
+:107840000C94513C0C94513C0C94513C0C94513C84
+:107850000C94513C0C94513C0C94513C0C94513C74
+:107860000C94513C0C94513C11241FBECFEFD8E036
+:10787000DEBFCDBF11E0A0E0B1E0ECE9FFE702C060
+:1078800005900D92A230B107D9F712E0A2E0B1E065
+:1078900001C01D92AD30B107E1F70E942D3D0C945F
+:1078A000CC3F0C94003C982F959595959595959582
+:1078B000905D8F708A307CF0282F295A8091C0000B
+:1078C00085FFFCCF9093C6008091C00085FFFCCF60
+:1078D0002093C6000895282F205DF0CF982F809127
+:1078E000C00085FFFCCF9093C6000895EF92FF92F1
+:1078F0000F931F93EE24FF2487018091C00087FD22
+:1079000017C00894E11CF11C011D111D81E4E8164B
+:1079100082E4F8068FE0080780E0180770F3E09132
+:107920000401F091050109958091C00087FFE9CF1E
+:107930008091C6001F910F91FF90EF9008950E94D3
+:10794000763C982F8091C00085FFFCCF9093C600B5
+:1079500091362CF490330CF09053892F089597555D
+:10796000892F08951F930E949F3C182F0E949F3CCF
+:107970001295107F810F1F9108951F93182F882350
+:1079800021F00E94763C1150E1F71F9108951F935A
+:10799000182F0E94763C803249F0809103018F5F5E
+:1079A000809303018530C1F01F9108958091C0003C
+:1079B00085FFFCCF84E18093C6008091C00085FFE5
+:1079C000FCCF1093C6008091C00085FFFCCF80E102
+:1079D0008093C6001F910895E0910401F091050184
+:1079E00009951F9108950E94763C803241F0809164
+:1079F00003018F5F80930301853081F008958091AA
+:107A0000C00085FFFCCF84E18093C6008091C00058
+:107A100085FFFCCF80E18093C6000895E0910401CA
+:107A2000F09105010995089540E951E08823A1F0FE
+:107A30002D9A28EE33E0FA013197F1F721503040CA
+:107A4000D1F72D9828EE33E0FA013197F1F7215064
+:107A50003040D1F7815061F708953F924F925F9285
+:107A60006F927F928F929F92AF92BF92CF92DF924E
+:107A7000EF92FF920F931F93CF93DF93000080E16B
+:107A80008093C4001092C50088E18093C10086E015
+:107A90008093C2005098589A259A81E00E94143D24
+:107AA00024E1F22E9EE1E92E85E9D82E0FE0C02ECA
+:107AB00010E1B12EAA24A394B1E49B2EA6E58A2E50
+:107AC000F2E57F2EE0E26E2E79E4572E63E5462E36
+:107AD00050E5352E0E94763C8033B1F18133B9F107
+:107AE000803409F46FC0813409F476C0823409F41B
+:107AF00085C0853409F488C0803531F1823521F1A3
+:107B0000813511F1853509F485C0863509F48DC0BC
+:107B1000843609F496C0843709F403C1853709F423
+:107B200072C1863709F466C0809103018F5F80932C
+:107B30000301853079F6E0910401F0910501099582
+:107B40000E94763C803351F60E94F33CC3CF0E94E2
+:107B5000763C803249F78091C00085FFFCCFF092DF
+:107B6000C6008091C00085FFFCCF9092C600809136
+:107B7000C00085FFFCCF8092C6008091C00085FFC9
+:107B8000FCCF7092C6008091C00085FFFCCF609250
+:107B9000C6008091C00085FFFCCF5092C600809146
+:107BA000C00085FFFCCF4092C6008091C00085FFD9
+:107BB000FCCF3092C6008091C00085FFFCCFB09210
+:107BC000C60088CF0E94763C863808F4BDCF0E945C
+:107BD000763C0E94F33C7ECF0E94763C803809F4CC
+:107BE0009CC0813809F40BC1823809F43CC1883942
+:107BF00009F48FC080E00E94C73C6CCF84E10E94F2
+:107C0000BD3C0E94F33C66CF85E00E94BD3C0E94D3
+:107C1000F33C60CF0E94763C809306010E94763C44
+:107C2000809307010E94F33C55CF0E94763C80333D
+:107C300009F41DC183E00E94BD3C80E00E94C73C66
+:107C400049CF0E94763C809309020E94763C809343
+:107C5000080280910C028E7F80930C020E94763C79
+:107C6000853409F415C18091080290910902892B8D
+:107C700089F000E010E00E94763CF801E85FFE4FDA
+:107C800080830F5F1F4F80910802909109020817AF
+:107C9000190788F30E94763C803209F045CF809125
+:107CA0000C0280FF01C16091060170910701660F0F
+:107CB000771F7093070160930601A0910802B091AD
+:107CC00009021097C9F0E8E0F1E09B01AD014E0F09
+:107CD0005F1FF999FECF32BD21BD819180BDFA9A17
+:107CE000F99A2F5F3F4FE417F50799F76A0F7B1F4B
+:107CF00070930701609306018091C00085FFFCCF5F
+:107D0000F092C6008091C00085FFFCCFB092C60003
+:107D1000E1CE83E00E94C73CDDCE82E00E94C73CFA
+:107D2000D9CE0E94763C809309020E94763C8093D3
+:107D300008028091060190910701880F991F909386
+:107D40000701809306010E94763C853409F4A6C0A1
+:107D500080910C028E7F80930C020E94763C8032D0
+:107D600009F0B8CE8091C00085FFFCCFF092C6002C
+:107D7000609108027091090261157105B9F140E046
+:107D800050E080910C02A82FA170B82FB27011C0E2
+:107D9000BB2309F45CC0E0910601F0910701319624
+:107DA000F0930701E09306014F5F5F4F46175707B7
+:107DB000E8F4AA2369F3F999FECF209106013091E6
+:107DC000070132BD21BDF89A90B58091C00085FFB2
+:107DD000FCCF9093C6002F5F3F4F30930701209355
+:107DE00006014F5F5F4F4617570718F38091C00099
+:107DF00085FDE5CE8091C00085FFF8CFE0CE81E023
+:107E00000E94C73C67CE0E94763C803209F08CCE3F
+:107E10008091C00085FFFCCFF092C6008091C00029
+:107E200085FFFCCFE092C6008091C00085FFFCCFAB
+:107E3000D092C6008091C00085FFFCCFC092C600E2
+:107E40008091C00085FFFCCFB092C60043CEE09188
+:107E50000601F091070194918091C00085FFFCCF4D
+:107E60009093C6009CCF80E10E94C73C33CE0E9415
+:107E7000763C0E94763C182F0E94763C112309F430
+:107E800083C0113009F484C08FE00E94C73C22CE29
+:107E900080910C02816080930C02E5CE80910C02EF
+:107EA000816080930C0259CF809107018823880F4D
+:107EB000880B8A2180930B02809106019091070123
+:107EC000880F991F90930701809306018091080203
+:107ED00080FF09C080910802909109020196909359
+:107EE000090280930802F894F999FECF1127E091D6
+:107EF0000601F0910701C8E0D1E08091080290915D
+:107F00000902103091F40091570001700130D9F34B
+:107F100003E000935700E89500915700017001308D
+:107F2000D9F301E100935700E89509901990009169
+:107F3000570001700130D9F301E000935700E89534
+:107F40001395103498F011270091570001700130FB
+:107F5000D9F305E000935700E895009157000170B0
+:107F60000130D9F301E100935700E895329602976A
+:107F700009F0C7CF103011F00296E5CF112480919F
+:107F8000C00085FFB9CEBCCE8EE10E94C73CA2CD19
+:0C7F900085E90E94C73C9ECDF894FFCF0D
+:027F9C00800063
+:040000030000780081
+:00000001FF
diff --git a/bootloaders/ATmegaBOOT_168_atmega328_pro_8MHz.hex b/bootloaders/ATmegaBOOT_168_atmega328_pro_8MHz.hex
new file mode 100644
index 0000000..9753e2e
--- /dev/null
+++ b/bootloaders/ATmegaBOOT_168_atmega328_pro_8MHz.hex
@@ -0,0 +1,124 @@
+:107800000C94343C0C94513C0C94513C0C94513CE1
+:107810000C94513C0C94513C0C94513C0C94513CB4
+:107820000C94513C0C94513C0C94513C0C94513CA4
+:107830000C94513C0C94513C0C94513C0C94513C94
+:107840000C94513C0C94513C0C94513C0C94513C84
+:107850000C94513C0C94513C0C94513C0C94513C74
+:107860000C94513C0C94513C11241FBECFEFD8E036
+:10787000DEBFCDBF11E0A0E0B1E0EAE8FFE702C063
+:1078800005900D92A230B107D9F712E0A2E0B1E065
+:1078900001C01D92AD30B107E1F70E942D3D0C945F
+:1078A000C33F0C94003C982F95959595959595958B
+:1078B000905D8F708A307CF0282F295A8091C0000B
+:1078C00085FFFCCF9093C6008091C00085FFFCCF60
+:1078D0002093C6000895282F205DF0CF982F809127
+:1078E000C00085FFFCCF9093C6000895EF92FF92F1
+:1078F0000F931F93EE24FF2487018091C00087FD22
+:1079000017C00894E11CF11C011D111D81E2E8164D
+:1079100081EAF80687E0080780E0180770F3E09135
+:107920000401F091050109958091C00087FFE9CF1E
+:107930008091C6001F910F91FF90EF9008950E94D3
+:10794000763C982F8091C00085FFFCCF9093C600B5
+:1079500091362CF490330CF09053892F089597555D
+:10796000892F08951F930E949F3C182F0E949F3CCF
+:107970001295107F810F1F9108951F93182F882350
+:1079800021F00E94763C1150E1F71F9108951F935A
+:10799000182F0E94763C803249F0809103018F5F5E
+:1079A000809303018530C1F01F9108958091C0003C
+:1079B00085FFFCCF84E18093C6008091C00085FFE5
+:1079C000FCCF1093C6008091C00085FFFCCF80E102
+:1079D0008093C6001F910895E0910401F091050184
+:1079E00009951F9108950E94763C803241F0809164
+:1079F00003018F5F80930301853081F008958091AA
+:107A0000C00085FFFCCF84E18093C6008091C00058
+:107A100085FFFCCF80E18093C6000895E0910401CA
+:107A2000F09105010995089548EC50E08823A1F0F4
+:107A30002D9A28EE33E0FA013197F1F721503040CA
+:107A4000D1F72D9828EE33E0FA013197F1F7215064
+:107A50003040D1F7815061F708953F924F925F9285
+:107A60006F927F928F929F92AF92BF92CF92DF924E
+:107A7000EF92FF920F931F93CF93DF93000082E06A
+:107A80008093C00080E18093C4001092C50088E11B
+:107A90008093C10086E08093C2005098589A259A3E
+:107AA00081E00E94143D24E1F22E9EE1E92E85E959
+:107AB000D82E0FE0C02E10E1B12EAA24A394B1E479
+:107AC0009B2EA6E58A2EF2E57F2EE0E26E2E79E46B
+:107AD000572E63E5462E50E5352E0E94763C8033C6
+:107AE000B1F18133B9F1803409F46FC0813409F404
+:107AF00076C0823409F485C0853409F488C08035A5
+:107B000031F1823521F1813511F1853509F485C0D6
+:107B1000863509F48DC0843609F496C0843709F49B
+:107B200003C1853709F472C1863709F466C08091B4
+:107B300003018F5F80930301853079F6E0910401A2
+:107B4000F091050109950E94763C803351F60E9420
+:107B5000F33CC3CF0E94763C803249F78091C0004D
+:107B600085FFFCCFF092C6008091C00085FFFCCF5E
+:107B70009092C6008091C00085FFFCCF8092C60025
+:107B80008091C00085FFFCCF7092C6008091C0003C
+:107B900085FFFCCF6092C6008091C00085FFFCCFBE
+:107BA0005092C6008091C00085FFFCCF4092C60075
+:107BB0008091C00085FFFCCF3092C6008091C0004C
+:107BC00085FFFCCFB092C60088CF0E94763C8638F5
+:107BD00008F4BDCF0E94763C0E94F33C7ECF0E9409
+:107BE000763C803809F49CC0813809F40BC1823896
+:107BF00009F430C1883909F48FC080E00E94C73C85
+:107C00006CCF84E10E94BD3C0E94F33C66CF85E0CE
+:107C10000E94BD3C0E94F33C60CF0E94763C809362
+:107C200006010E94763C809307010E94F33C55CFE9
+:107C30000E94763C803309F411C183E00E94BD3C70
+:107C400080E00E94C73C49CF0E94763C80930902A5
+:107C50000E94763C8093080280910C028E7F809374
+:107C60000C020E94763C853409F409C18091080217
+:107C700090910902892B89F000E010E00E94763C87
+:107C8000F801E85FFE4F80830F5F1F4F809108026D
+:107C9000909109020817190788F30E94763C8032F8
+:107CA00009F045CF80910C0280FFF5C0609106017C
+:107CB00070910701660F771F7093070160930601AB
+:107CC000A0910802B09109021097C9F0E8E0F1E034
+:107CD0009B01AD014E0F5F1FF999FECF32BD21BD53
+:107CE000819180BDFA9AF99A2F5F3F4FE417F5070B
+:107CF00099F76A0F7B1F70930701609306018091CB
+:107D0000C00085FFFCCFF092C6008091C00085FFC7
+:107D1000FCCFB092C600E1CE83E00E94C73CDDCE2E
+:107D200082E00E94C73CD9CE0E94763C8093090233
+:107D30000E94763C80930802809106019091070191
+:107D4000880F991F90930701809306010E94763C4B
+:107D5000853409F49AC080910C028E7F80930C02C6
+:107D60000E94763C803209F0B8CE8091C00085FF39
+:107D7000FCCFF092C600A0910802B09109021097C2
+:107D8000C1F180910C02082F0170182F1695117007
+:107D9000E0910601F0910701AF014F5F5F4FBA011B
+:107DA00020E030E00023B1F4112339F49491809164
+:107DB000C00085FFFCCF9093C6002F5F3F4FCB01E3
+:107DC0000196FA012A173B0780F4BC014F5F5F4F11
+:107DD000002351F3F999FECFF2BDE1BDF89A90B5B9
+:107DE0008091C00085FFFCCFE6CF709307016093C0
+:107DF00006018091C00085FDE5CE8091C00085FF21
+:107E0000F8CFE0CE81E00E94C73C67CE0E94763C6E
+:107E1000803209F08CCE8091C00085FFFCCFF092BB
+:107E2000C6008091C00085FFFCCFE092C600809123
+:107E3000C00085FFFCCFD092C6008091C00085FFB6
+:107E4000FCCFC092C6008091C00085FFFCCFB092ED
+:107E5000C60043CE80E10E94C73C3FCE0E94763CE4
+:107E60000E94763C182F0E94763C112309F483C0AF
+:107E7000113009F484C08FE00E94C73C2ECE80915F
+:107E80000C02816080930C02F1CE80910C02816023
+:107E900080930C0265CF809107018823880F880B9F
+:107EA0008A2180930B028091060190910701880F2F
+:107EB000991F90930701809306018091080280FF2B
+:107EC00009C08091080290910902019690930902DD
+:107ED00080930802F894F999FECF1127E0910601EA
+:107EE000F0910701C8E0D1E0809108029091090269
+:107EF000103091F40091570001700130D9F303E084
+:107F000000935700E8950091570001700130D9F3B4
+:107F100001E100935700E8950990199000915700EE
+:107F200001700130D9F301E000935700E8951395F3
+:107F3000103498F011270091570001700130D9F3E7
+:107F400005E000935700E89500915700017001305B
+:107F5000D9F301E100935700E8953296029709F0B2
+:107F6000C7CF103011F00296E5CF11248091C000E8
+:107F700085FFC5CEC8CE8EE10E94C73CAECD85E957
+:0A7F80000E94C73CAACDF894FFCF81
+:027F8A00800075
+:040000030000780081
+:00000001FF
diff --git a/platform.txt b/platform.txt
new file mode 100644
index 0000000..68860c8
--- /dev/null
+++ b/platform.txt
@@ -0,0 +1,11 @@
+name=Fab Boards
+version=0.0.1
+
+tools.avrdude.path={runtime.tools.avrdude.path}
+tools.avrdude.erase.params.verbose=-v -v -v -v
+tools.avrdude.erase.params.quiet=-q -q
+tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m
+
+tools.avrdude.bootloader.params.verbose=-v -v -v -v
+tools.avrdude.bootloader.params.quiet=-q -q
+tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.platform.path}/{bootloader.path}/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m
\ No newline at end of file
diff --git a/variants/tiny14/pins_arduino.h b/variants/tiny14/pins_arduino.h
new file mode 100644
index 0000000..1a5711d
--- /dev/null
+++ b/variants/tiny14/pins_arduino.h
@@ -0,0 +1,132 @@
+/*
+  pins_arduino.c - pin definitions for the Arduino board
+  Part of Arduino / Wiring Lite
+
+  Copyright (c) 2005 David A. Mellis
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General
+  Public License along with this library; if not, write to the
+  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+  Boston, MA  02111-1307  USA
+
+  $Id: pins_arduino.c 565 2009-03-25 10:50:00Z dmellis $
+
+  Modified 28-08-2009 for attiny84 R.Wiersma
+  Modified 09-10-2009 for attiny45 A.Saporetti
+*/
+
+#ifndef Pins_Arduino_h
+#define Pins_Arduino_h
+
+#include <avr/pgmspace.h>
+
+// ATMEL ATTINY84 / ARDUINO
+//
+//                           +-\/-+
+//                     VCC  1|    |14  GND
+//             (D 10)  PB0  2|    |13  AREF (D  0)
+//             (D  9)  PB1  3|    |12  PA1  (D  1) 
+//                     PB3  4|    |11  PA2  (D  2) 
+//  PWM  INT0  (D  8)  PB2  5|    |10  PA3  (D  3) 
+//  PWM        (D  7)  PA7  6|    |9   PA4  (D  4) 
+//  PWM        (D  6)  PA6  7|    |8   PA5  (D  5)        PWM
+//                           +----+
+
+const static uint8_t A0 = 0;
+const static uint8_t A1 = 1;
+const static uint8_t A2 = 2;
+const static uint8_t A3 = 3;
+const static uint8_t A4 = 4;
+const static uint8_t A5 = 5;
+const static uint8_t A6 = 6;
+const static uint8_t A7 = 7;
+
+#define digitalPinToPCICR(p)    ( ((p) >= 0 && (p) <= 10) ? (&GIMSK) : ((uint8_t *)0) )
+#define digitalPinToPCICRbit(p) ( ((p) <= 7) ? PCIE0 : PCIE1 )
+#define digitalPinToPCMSK(p)    ( ((p) <= 7) ? (&PCMSK0) : (((p) <= 10) ? (&PCMSK1) : ((uint8_t *)0)) )
+#define digitalPinToPCMSKbit(p) ( ((p) <= 7) ? (p) : (10 - (p)) )
+
+#ifdef ARDUINO_MAIN
+
+// these arrays map port names (e.g. port B) to the
+// appropriate addresses for various functions (e.g. reading
+// and writing)
+const uint16_t PROGMEM port_to_mode_PGM[] = 
+{
+  NOT_A_PORT,
+  (uint16_t)&DDRA,
+  (uint16_t)&DDRB,
+};
+
+const uint16_t PROGMEM port_to_output_PGM[] = 
+{
+  NOT_A_PORT,
+  (uint16_t)&PORTA,
+  (uint16_t)&PORTB,
+};
+
+const uint16_t PROGMEM port_to_input_PGM[] = 
+{
+  NOT_A_PORT,
+  (uint16_t)&PINA,
+  (uint16_t)&PINB,
+};
+
+const uint8_t PROGMEM digital_pin_to_port_PGM[] = 
+{
+  PA, /* 0 */
+  PA,
+  PA,
+  PA,
+  PA,
+  PA,
+  PA,
+  PA,
+  PB, /* 8 */
+  PB,
+  PB,
+};
+
+const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = 
+{
+  _BV(0), /* port A */
+  _BV(1),
+  _BV(2),
+  _BV(3),
+  _BV(4),
+  _BV(5), 
+  _BV(6),
+  _BV(7),
+  _BV(2), /* port B */
+  _BV(1),
+  _BV(0),
+};
+
+const uint8_t PROGMEM digital_pin_to_timer_PGM[] = 
+{
+  NOT_ON_TIMER,
+  NOT_ON_TIMER,
+  NOT_ON_TIMER,
+  NOT_ON_TIMER, 
+  NOT_ON_TIMER,
+  TIMER1B, /* OC1B */
+  TIMER1A, /* OC1A */
+  TIMER0B, /* OC0B */
+  TIMER0A, /* OC0A */
+  NOT_ON_TIMER,
+  NOT_ON_TIMER,
+};
+
+#endif
+
+#endif
diff --git a/variants/tiny8/pins_arduino.h b/variants/tiny8/pins_arduino.h
new file mode 100644
index 0000000..09fd0aa
--- /dev/null
+++ b/variants/tiny8/pins_arduino.h
@@ -0,0 +1,126 @@
+/*
+  pins_arduino.c - pin definitions for the Arduino board
+  Part of Arduino / Wiring Lite
+
+  Copyright (c) 2005 David A. Mellis
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General
+  Public License along with this library; if not, write to the
+  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+  Boston, MA  02111-1307  USA
+
+  $Id: pins_arduino.c 565 2009-03-25 10:50:00Z dmellis $
+
+  Modified 28-08-2009 for attiny84 R.Wiersma
+  Modified 09-10-2009 for attiny45 A.Saporetti
+*/
+
+#ifndef Pins_Arduino_h
+#define Pins_Arduino_h
+
+#include <avr/pgmspace.h>
+
+// ATMEL ATTINY45 / ARDUINO
+//
+//                  +-\/-+
+// Ain0 (D 5) PB5  1|    |8  Vcc
+// Ain3 (D 3) PB3  2|    |7  PB2 (D 2)  Ain1
+// Ain2 (D 4) PB4  3|    |6  PB1 (D 1) pwm1
+//            GND  4|    |5  PB0 (D 0) pwm0
+//                  +----+
+
+static const uint8_t A0 = 6;
+static const uint8_t A1 = 7;
+static const uint8_t A2 = 8;
+static const uint8_t A3 = 9;
+
+#define digitalPinToPCICR(p)    ( ((p) >= 0 && (p) <= 4) ? (&GIMSK) : ((uint8_t *)0) )
+#define digitalPinToPCICRbit(p) ( PCIE )
+#define digitalPinToPCMSK(p)    ( ((p) <= 4) ? (&PCMSK) : ((uint8_t *)0) )
+#define digitalPinToPCMSKbit(p) ( (p) )
+
+#define analogPinToChannel(p)   ( (p) < 6 ? (p) : (p) - 6 )
+
+#define TCCR1A GTCCR
+
+#ifdef ARDUINO_MAIN
+
+void initVariant()
+{
+	GTCCR |= (1 << PWM1B);
+}
+
+// these arrays map port names (e.g. port B) to the
+// appropriate addresses for various functions (e.g. reading
+// and writing) tiny45 only port B 
+const uint16_t PROGMEM port_to_mode_PGM[] = {
+	NOT_A_PORT,
+	NOT_A_PORT,
+	(uint16_t) &DDRB,
+};
+
+const uint16_t PROGMEM port_to_output_PGM[] = {
+	NOT_A_PORT,
+	NOT_A_PORT,
+	(uint16_t) &PORTB,
+};
+
+const uint16_t PROGMEM port_to_input_PGM[] = {
+	NOT_A_PIN,
+	NOT_A_PIN,
+	(uint16_t) &PINB,
+};
+
+const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
+	PB, /* 0 */
+	PB,
+	PB,
+	PB,
+	PB, 
+	PB, // 5
+	PB, // A0
+	PB,
+	PB,
+	PB, // A4
+
+};
+
+const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
+	_BV(0), /* 0, port B */
+	_BV(1),
+	_BV(2),
+	_BV(3), /* 3 port B */
+	_BV(4),
+	_BV(5),
+	_BV(5),
+	_BV(2),
+	_BV(4),
+	_BV(3),
+};
+
+const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
+	TIMER0A, /* OC0A */
+	TIMER0B,
+	NOT_ON_TIMER,
+	NOT_ON_TIMER,
+	TIMER1B,
+	NOT_ON_TIMER,
+	NOT_ON_TIMER,
+	NOT_ON_TIMER,
+	NOT_ON_TIMER,
+	NOT_ON_TIMER,
+};
+
+#endif
+
+#endif
\ No newline at end of file
-- 
GitLab