diff options
Diffstat (limited to 'bootloaders/stk500v2')
| -rw-r--r--[-rwxr-xr-x] | bootloaders/stk500v2/License.txt | 0 | ||||
| -rw-r--r--[-rwxr-xr-x] | bootloaders/stk500v2/Makefile | 2 | ||||
| -rw-r--r-- | bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex | 513 | ||||
| -rw-r--r--[-rwxr-xr-x] | bootloaders/stk500v2/STK500V2.pnproj | 0 | ||||
| -rw-r--r--[-rwxr-xr-x] | bootloaders/stk500v2/STK500V2.pnps | 0 | ||||
| -rw-r--r-- | bootloaders/stk500v2/avr_cpunames.h | 189 | ||||
| -rw-r--r-- | bootloaders/stk500v2/avrinterruptnames.h | 314 | ||||
| -rw-r--r--[-rwxr-xr-x] | bootloaders/stk500v2/command.h | 0 | ||||
| -rw-r--r--[-rwxr-xr-x] | bootloaders/stk500v2/stk500boot.c | 467 | ||||
| -rw-r--r--[-rwxr-xr-x] | bootloaders/stk500v2/stk500boot.ppg | 0 | ||||
| -rw-r--r-- | bootloaders/stk500v2/stk500boot_v2_mega2560.hex | 970 | 
11 files changed, 1769 insertions, 686 deletions
| diff --git a/bootloaders/stk500v2/License.txt b/bootloaders/stk500v2/License.txt index e7dcdd8..e7dcdd8 100755..100644 --- a/bootloaders/stk500v2/License.txt +++ b/bootloaders/stk500v2/License.txt diff --git a/bootloaders/stk500v2/Makefile b/bootloaders/stk500v2/Makefile index 54c5f85..6b66a26 100755..100644 --- a/bootloaders/stk500v2/Makefile +++ b/bootloaders/stk500v2/Makefile @@ -124,7 +124,7 @@ CINCS =  CFLAGS = -g$(DEBUG)
  CFLAGS += $(CDEFS) $(CINCS)
  CFLAGS += -O$(OPT)
 -CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -mno-tablejump 
 +CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -fno-jump-tables
  CFLAGS += -Wall -Wstrict-prototypes
  CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
  CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
 diff --git a/bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex b/bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex new file mode 100644 index 0000000..4f36699 --- /dev/null +++ b/bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex @@ -0,0 +1,513 @@ +:020000023000CC
 +:10E000000D94F6F20D941FF30D941FF30D941FF36E
 +:10E010000D941FF30D941FF30D941FF30D941FF334
 +:10E020000D941FF30D941FF30D941FF30D941FF324
 +:10E030000D941FF30D941FF30D941FF30D941FF314
 +:10E040000D941FF30D941FF30D941FF30D941FF304
 +:10E050000D941FF30D941FF30D941FF30D941FF3F4
 +:10E060000D941FF30D941FF30D941FF30D941FF3E4
 +:10E070000D941FF30D941FF30D941FF30D941FF3D4
 +:10E080000D941FF30D941FF30D941FF30D941FF3C4
 +:10E090000D941FF30D941FF30D941FF30D941FF3B4
 +:10E0A0000D941FF30D941FF30D941FF30D941FF3A4
 +:10E0B0000D941FF30D941FF30D941FF30D941FF394
 +:10E0C0000D941FF30D941FF30D941FF30D941FF384
 +:10E0D0000D941FF30D941FF30D941FF30D941FF374
 +:10E0E0000D941FF341546D65676132353630004140
 +:10E0F000726475696E6F206578706C6F72657220DE
 +:10E1000073746B3530305632206279204D4C530099
 +:10E11000426F6F746C6F616465723E004875683F52
 +:10E1200000436F6D70696C6564206F6E20203D2028
 +:10E1300000435055205479706520202020203D2038
 +:10E14000005F5F4156525F415243485F5F203D2070
 +:10E1500000415652204C69624320566572203D2092
 +:10E16000004743432056657273696F6E20203D203F
 +:10E1700000435055207369676E61747572653D2068
 +:10E18000004C6F77206675736520202020203D208D
 +:10E1900000486967682066757365202020203D204F
 +:10E1A00000457874206675736520202020203D206E
 +:10E1B000004C6F636B2066757365202020203D2026
 +:10E1C00000536570202039203230313000312E3636
 +:10E1D0002E3700342E332E33005623202020414486
 +:10E1E00044522020206F7020636F6465202020201F
 +:10E1F00020696E737472756374696F6E20616464F4
 +:10E2000072202020496E74657272757074006E6F92
 +:10E2100020766563746F7200726A6D702020006AE8
 +:10E220006D7020005768617420706F72743A0050EE
 +:10E230006F7274206E6F7420737570706F72746576
 +:10E2400064004D7573742062652061206C65747480
 +:10E2500065720020005772697474696E67204545C5
 +:10E260000052656164696E6720454500656570729E
 +:10E270006F6D206572726F7220636F756E743D00F2
 +:10E28000504F525400303D5A65726F206164647281
 +:10E290006573732063747273003F3D435055207360
 +:10E2A0007461747300403D454550524F4D20746574
 +:10E2B000737400423D426C696E6B204C45440045CE
 +:10E2C0003D44756D7020454550524F4D00463D44CC
 +:10E2D000756D7020464C41534800483D48656C7050
 +:10E2E000004C3D4C69737420492F4F20506F72745D
 +:10E2F0007300513D517569742026206A756D702038
 +:10E30000746F20757365722070676D00523D44759F
 +:10E310006D702052414D00563D73686F7720696ED5
 +:10E320007465727275707420566563746F727300D1
 +:10E33000593D506F727420626C696E6B002A0052F6
 +:10E340004553455400494E543000494E543100491C
 +:10E350004E543200494E543300494E543400494E15
 +:10E36000543500494E543600494E54370050434905
 +:10E370004E5430005043494E5431005043494E549E
 +:10E3800032005744540054494D45523020434F4DBC
 +:10E3900050410054494D45523020434F4D504200AA
 +:10E3A00054494D455230204F56460054494D455230
 +:10E3B0003120434150540054494D45523120434F80
 +:10E3C0004D50410054494D45523120434F4D50422C
 +:10E3D0000054494D45523120434F4D50430054495C
 +:10E3E0004D455231204F56460054494D455232203A
 +:10E3F000434F4D50410054494D45523220434F4DFB
 +:10E4000050420054494D455232204F56460054491F
 +:10E410004D45523320434150540054494D455233E9
 +:10E4200020434F4D50410054494D45523320434FF6
 +:10E430004D50420054494D45523320434F4D5043B7
 +:10E440000054494D455233204F56460054494D45DE
 +:10E45000523420434150540054494D4552342043D6
 +:10E460004F4D50410054494D45523420434F4D507B
 +:10E47000420054494D45523420434F4D50430054BF
 +:10E48000494D455234204F56460054494D4552356A
 +:10E4900020434150540054494D45523520434F4D7F
 +:10E4A00050410054494D45523520434F4D50420094
 +:10E4B00054494D45523520434F4D50430054494D2A
 +:10E4C000455235204F564600555341525430205244
 +:10E4D000580055534152543020554452450055532D
 +:10E4E0004152543020545800555341525431205217
 +:10E4F000580055534152543120554452450055530C
 +:10E5000041525431205458005553415254322052F4
 +:10E5100058005553415254322055445245005553EA
 +:10E5200041525432205458005553415254332052D2
 +:10E5300058005553415254332055445245005553C9
 +:10E5400041525433205458005350492053544300EF
 +:10E5500041444300414E414C4F4720434F4D5000F2
 +:10E560004545205245414459005457490053504DA8
 +:10E57000205245414459002A003FE345E34AE34F16
 +:10E58000E354E359E35EE363E368E36DE374E37B41
 +:10E59000E382E3E9E3F6E303E4ABE3B7E3C4E3D107
 +:10E5A000E3DEE386E393E3A0E348E5C8E4D2E4DEF8
 +:10E5B000E454E550E560E50EE41AE427E434E44170
 +:10E5C000E4E8E4F2E4FEE469E56DE54CE458E46572
 +:10E5D000E472E47FE48AE496E4A3E4B0E4BDE408F2
 +:10E5E000E512E51EE528E532E53EE50011241FBEF3
 +:10E5F000CFEFD1E2DEBFCDBF01E00CBF12E0A0E063
 +:10E60000B2E0EAEDFFEF03E00BBF02C007900D920E
 +:10E61000A030B107D9F712E0A0E0B2E001C01D922E
 +:10E62000AC30B107E1F70F94FBF40D94EBFF01E27E
 +:10E630000EBF0FEF0DBF11241FBE0D94FBF40D9400
 +:10E6400000F020E030E040ED57E005C0FA013197DE
 +:10E65000F1F72F5F3F4F28173907C0F308959C014A
 +:10E66000442737FD4095542FDA01C901860F911DCB
 +:10E67000A11DB11DABBFFC018791882369F0809378
 +:10E68000C6008091C00086FFFCCF8091C0008064EE
 +:10E690008093C0006F5FE8CF08958DE08093C6003F
 +:10E6A0008091C00086FFFCCF8091C0008064809381
 +:10E6B000C0008AE08093C6008091C00086FFFCCF36
 +:10E6C0008091C00080648093C00008950F942FF360
 +:10E6D0000F944DF30895FC019081992359F0909384
 +:10E6E000C6008091C00086FFFCCF8091C00080648E
 +:10E6F0008093C0003196992379F70895282F982F99
 +:10E7000092959F70892F805D8A3308F0895F80938E
 +:10E71000C6008091C00086FFFCCF8091C00080645D
 +:10E720008093C000822F8F70982F905D9A3308F0ED
 +:10E73000995F9093C6008091C00086FFFCCF8091C6
 +:10E74000C00080648093C00008959C01FB01853661
 +:10E7500091051CF46330710594F0C90164E670E022
 +:10E760000F948CFF605D7F4F6093C6008091C00066
 +:10E7700086FFFCCF8091C00080648093C0002B3066
 +:10E78000310514F43297B4F0C90164E670E00F94D7
 +:10E790008CFF6AE070E00F948CFF605D7F4F6093A8
 +:10E7A000C6008091C00086FFFCCF8091C0008064CD
 +:10E7B0008093C000C9016AE070E00F948CFFC0969E
 +:10E7C0008093C6008091C00086FFFCCF8091C0007E
 +:10E7D00080648093C0000895282F277020642093C0
 +:10E7E0007C0020917B0086958695869590E08170CF
 +:10E7F000907033E0880F991F3A95E1F7277F282B17
 +:10E8000020937B0080917A00806480937A008091CD
 +:10E810007A0086FDFCCF2091780040917900942FFA
 +:10E8200080E030E0282B392BC90108951F93182F61
 +:10E8300080E892EE60E00F942FF31093C600809171
 +:10E84000C00086FFFCCF8091C00080648093C00030
 +:10E850000F944DF31F9108952F923F924F925F9224
 +:10E860006F927F928F929F92AF92BF92CF92DF92E0
 +:10E87000EF92FF920F931F93DF93CF93CDB7DEB745
 +:10E8800062970FB6F894DEBF0FBECDBF382E622E52
 +:10E89000CA01DB015C016D01772460E2262E2E01A6
 +:10E8A0000894411C511C8BC081E0A81680E0B8067A
 +:10E8B00081E0C80680E0D80628F0C601AA27BB2759
 +:10E8C0000F947EF3BB27AD2D9C2D8B2D0F947EF3E3
 +:10E8D0008A2D0F947EF32092C6008091C00086FF9F
 +:10E8E000FCCF8091C00080648093C0009DE2909333
 +:10E8F000C6008091C00086FFFCCF8091C00080647C
 +:10E900008093C0002092C6008091C00086FFFCCF9B
 +:10E910008091C00080648093C000198286017501D7
 +:10E9200088249924A1E03A1651F03A1620F0B2E07A
 +:10E930003B1661F409C00BBFF701779007C0C70110
 +:10E940000F94D5FF782E02C0F7017080872D0F94A9
 +:10E950007EF32092C6008091C00086FFFCCF80919C
 +:10E96000C00080648093C000872D8052F401EF7056
 +:10E97000F0708F3520F4E40DF51D708204C0E40DB5
 +:10E98000F51D8EE280830894E11CF11C011D111D10
 +:10E990000894811C911C90E18916910409F0C2CF62
 +:10E9A00080E190E0A0E0B0E0A80EB91ECA1EDB1E18
 +:10E9B000198AC2010F946BF30F944DF36A94662089
 +:10E9C00009F072CF62960FB6F894DEBF0FBECDBFCE
 +:10E9D000CF91DF911F910F91FF90EF90DF90CF903B
 +:10E9E000BF90AF909F908F907F906F905F904F906F
 +:10E9F0003F902F9008952F923F924F925F926F9287
 +:10EA00007F928F929F92AF92BF92CF92DF92EF92BE
 +:10EA1000FF920F931F93DF93CF93CDB7DEB7CD5304
 +:10EA2000D1400FB6F894DEBF0FBECDBF279A2F9A04
 +:10EA30008091C00082608093C00080E18093C40018
 +:10EA400088E18093C1000000EE24FF248701B4E038
 +:10EA5000AB2EB12CCC24DD2424C0C5010197F1F7E5
 +:10EA60000894E11CF11C011D111D21E2E2162EE4A7
 +:10EA7000F20620E0020720E0120718F0A1E0CA2EFB
 +:10EA8000D12CC801B70128E53BE140E050E00F94EC
 +:10EA90009FFF611571058105910519F485B18058B5
 +:10EAA00085B98091C00087FD03C0C114D104A9F2CB
 +:10EAB000A6014F5F5F4FC25EDE4F59834883CE5140
 +:10EAC000D140C25EDE4F68817981CE51D140613044
 +:10EAD000710511F00D946EFFC05DDE4F1982188232
 +:10EAE000C053D14060E0C15DDE4F1882CF52D140AB
 +:10EAF000AA24BB24C05EDE4F188219821A821B82B0
 +:10EB0000C052D140CE5CDE4F188219821A821B821D
 +:10EB1000C253D14080E090E0A0E0B0E0ABBFFC0188
 +:10EB2000A791B691C45CDE4FB983A883CC53D14082
 +:10EB30000D9469FFC25EDE4FE881F981CE51D1406C
 +:10EB4000319709F52091C600C25EDE4F1982188206
 +:10EB5000CE51D14022C02F5F3F4F4F4F5F4F2130EA
 +:10EB6000F2E13F07FAE74F07F0E05F0780F0C45C8F
 +:10EB7000DE4F08811981CC53D1400F5F1F4F19F030
 +:10EB8000EE27FF27099420E030E040E050E080913C
 +:10EB9000C00087FFE0CF2091C600213209F094C663
 +:10EBA0000894A11CB11C33E0A316B10409F08EC671
 +:10EBB00000E010E018C041E24093C6008091C00020
 +:10EBC00086FFFCCF8091C00080648093C0002F5FDF
 +:10EBD0003F4F2931310579F70F944DF30F5F1F4FE8
 +:10EBE0000530110519F020E030E0E5CF1092080261
 +:10EBF0001092090210920A0210920B021092040263
 +:10EC00001092050210920602109207021092000262
 +:10EC10001092010210920202109203028FEE90EE07
 +:10EC200060E00F9466F380E191EE60E00F942FF3C3
 +:10EC30008091C00087FFFCCF9091C600903608F00D
 +:10EC40009F759032B8F09093C6008091C00086FF07
 +:10EC5000FCCF8091C00080648093C00080E28093EC
 +:10EC6000C6008091C00086FFFCCF8091C000806408
 +:10EC70008093C000983409F4DBC19934B8F492341D
 +:10EC800009F45DC1933458F4903319F1903308F4CA
 +:10EC900018C69F33A1F1903409F013C6BDC0953456
 +:10ECA00009F474C1963409F00CC69CC1923509F47C
 +:10ECB0002FC2933538F49C3409F4F9C1913509F029
 +:10ECC00000C61CC2963509F449C2993509F0F9C548
 +:10ECD0009CC485E892EE62E00F9466F31092040201
 +:10ECE000109205021092060210920702109208027A
 +:10ECF0001092090210920A0210920B0217C189E9C0
 +:10ED000092EE62E00F9466F38FEE90EE60E00F9467
 +:10ED100066F381E291EE60E00F942FF381EC91EEC7
 +:10ED200060E00F9466F381E391EE60E00F942FF3BF
 +:10ED300084EE90EE60E00F9466F381E491EE60E083
 +:10ED40000F942FF386E090E061E070E00F94A5F35C
 +:10ED50000F944DF381E691EE60E00F942FF383ED75
 +:10ED600091EE60E00F9466F381E591EE60E00F9420
 +:10ED70002FF38DEC91EE60E00F9466F381E791EE56
 +:10ED800060E00F942FF38EE10F947EF388E90F94E7
 +:10ED90007EF381E00F947EF30F944DF381E891EEC2
 +:10EDA00060E00F942FF319E0E0E0F0E010935700DB
 +:10EDB000E4918E2F0F947EF30F944DF381E991EE41
 +:10EDC00060E00F942FF3E3E0F0E010935700E4913C
 +:10EDD0008E2F0F947EF30F944DF381EA91EE60E055
 +:10EDE0000F942FF3E2E0F0E010935700E4918E2FA0
 +:10EDF0000F947EF30F944DF381EB91EE60E00F944E
 +:10EE00002FF3E1E0F0E0109357001491812F0F945D
 +:10EE10007EF30F944DF307CF85EA92EE62E00F94F4
 +:10EE200066F385E592EE60E00F9466F30F944DF380
 +:10EE300000E010E019C0C8016F2D0F94DDFFFF2026
 +:10EE400031F483E592EE60E00F942FF30BC0F09263
 +:10EE5000C6008091C00086FFFCCF8091C000806416
 +:10EE60008093C0000F5F1F4FC80181519F41AA27A7
 +:10EE700097FDA095BA2FABBFFC01F7905AE2F516AB
 +:10EE800021F062E000301607B1F60F944DF30F94B5
 +:10EE90004DF381E692EE60E00F9466F30F944DF32C
 +:10EEA000CC24DD2400E010E01EC0C8010F94D5FF83
 +:10EEB000F82E882331F483E592EE60E00F942FF36F
 +:10EEC0000BC08093C6008091C00086FFFCCF80916C
 +:10EED000C00080648093C000FE1419F00894C11C27
 +:10EEE000D11C0F5F1F4FC80181519F41AA2797FD79
 +:10EEF000A095BA2FABBFFC01E7907AE2E71621F0AC
 +:10EF000082E00030180789F60F944DF30F944DF30B
 +:10EF10008CE692EE60E00F942FF3C60161E070E0A2
 +:10EF20000F94A5F30F944DF30F944DF3109200023C
 +:10EF300010920102109202021092030274CE83EB2F
 +:10EF400092EE62E00F9466F3279A2F9A16C02F98DC
 +:10EF500080E090E0E0EDF7E03197F1F7019684363C
 +:10EF60009105C1F72F9A80E090E0E0EDF7E031974E
 +:10EF7000F1F7019684369105C1F78091C00087FFB3
 +:10EF8000E6CF8091C00087FFFCCF95C48FEB92EE57
 +:10EF900062E00F9466F3409100025091010260918B
 +:10EFA00002027091030281E020E10F942CF4809121
 +:10EFB000000290910102A0910202B09103028050E0
 +:10EFC0009F4FAF4FBF4F8093000290930102A093D9
 +:10EFD0000202B093030280509041A040B04008F478
 +:10EFE00022CEA4CF8DEC92EE62E00F9466F34091B6
 +:10EFF000040250910502609106027091070280E0C0
 +:10F0000020E10F942CF48091040290910502A091CC
 +:10F010000602B091070280509F4FAF4FBF4F8093C1
 +:10F02000040290930502A0930602B0930702FBCD61
 +:10F030008AED92EE62E00F9466F385E892EE60E06E
 +:10F040000F9466F389E992EE60E00F9466F385EA27
 +:10F0500092EE60E00F9466F383EB92EE60E00F9423
 +:10F0600066F38FEB92EE60E00F9466F38DEC92EE18
 +:10F0700060E00F9466F38AED92EE60E00F9466F321
 +:10F0800081EE92EE60E00F9466F382EF92EE60E024
 +:10F090000F9466F38CE093EE60E00F9466F387E1E3
 +:10F0A00093EE60E00F9466F380E393EEB9CD81EECA
 +:10F0B00092EE62E00F9466F381E40F9416F482E41A
 +:10F0C0000F9416F483E40F9416F484E40F9416F46A
 +:10F0D00085E40F9416F486E40F9416F487E40F94F5
 +:10F0E00016F488E40F9416F48AE40F9416F48BE473
 +:10F0F0000F9416F48CE40F9416F495CD82EF92EEF3
 +:10F1000062E00F9466F399249394AA24BB2445C427
 +:10F110008CE093EE62E00F9466F340910802509108
 +:10F12000090260910A0270910B0282E020E10F94C3
 +:10F130002CF48091080290910902A0910A02B091EA
 +:10F140000B0280509F4FAF4FBF4F809308029093A8
 +:10F150000902A0930A02B0930B0265CD87E193EEFA
 +:10F1600062E00F9466F384EE90EE60E00F9466F335
 +:10F1700089ED91EE60E00F9466F309E715EECC5D42
 +:10F18000DE4F19830883C452D1406624772443019B
 +:10F19000CA5DDE4F19821882C652D140A401930184
 +:10F1A0005695479537952795C85DDE4F2883398357
 +:10F1B0004A835B83C852D140CA5DDE4F4881598182
 +:10F1C000C652D1404F5F5F4FCA5DDE4F59834883BF
 +:10F1D000C652D140CA0162E070E00F94A5F350E23C
 +:10F1E0005093C6008091C00086FFFCCF8091C00084
 +:10F1F00080648093C0006DE26093C6008091C0007F
 +:10F2000086FFFCCF8091C00080648093C00070E2D4
 +:10F210007093C6008091C00086FFFCCF8091C00033
 +:10F2200080648093C000C85DDE4FE880F9800A8169
 +:10F230001B81C852D140BB27A12F902F8F2D0F9437
 +:10F240007EF3C85DDE4F8881C852D1400F947EF3B3
 +:10F2500070E2F72EF092C6008091C00086FFFCCFCE
 +:10F260008091C00080648093C0000DE30093C600CD
 +:10F270008091C00086FFFCCF8091C00080648093A5
 +:10F28000C00010E21093C6008091C00086FFFCCF42
 +:10F290008091C00080648093C0008BBEF3012791F1
 +:10F2A000C45DDE4F2883CC52D140A22EBB24CC2497
 +:10F2B000DD240894611C711C811C911C8BBEF30120
 +:10F2C0008791282E332444245524142D032DF22C09
 +:10F2D000EE24EA0CFB1C0C1D1D1D0894611C711C06
 +:10F2E000811C911C8BBEF3013791C35DDE4F3883C7
 +:10F2F000CD52D1400894611C711C811C911C8BBEA5
 +:10F30000F3014791C25DDE4F4883CE52D1402DEFCD
 +:10F310003FEF4FEF5FEF620E731E841E951E0F943A
 +:10F320007EF330E23093C6008091C00086FFFCCFB0
 +:10F330008091C00080648093C000C45DDE4F8881EE
 +:10F34000CC52D1400F947EF340E24093C6008091AE
 +:10F35000C00086FFFCCF8091C00080648093C00015
 +:10F36000C25DDE4F8881CE52D1400F947EF350E2D1
 +:10F370005093C6008091C00086FFFCCF8091C000F2
 +:10F3800080648093C000C35DDE4F8881CD52D14040
 +:10F390000F947EF360E26093C6008091C00086FF08
 +:10F3A000FCCF8091C00080648093C0007FEFE7169F
 +:10F3B0007FEFF70670E0070770E0170731F48EE083
 +:10F3C00092EE60E00F942FF3DFC0D801C701807088
 +:10F3D000907CA070B0708050904CA040B040D1F5AF
 +:10F3E0002FEF3FE340E050E0E222F3220423152315
 +:10F3F000C85DDE4FA880B980CA80DB80C852D1408A
 +:10F40000AE0CBF1CC01ED11EAA0CBB1CCC1CDD1C2C
 +:10F4100088E192EE60E00F942FF3BB27A12F902F8D
 +:10F420008F2D0F947EF38E2D0F947EF330E2309368
 +:10F43000C6008091C00086FFFCCF8091C000806430
 +:10F440008093C0004EE34093C6008091C00086FFC9
 +:10F45000FCCF87C06EE07EEF80E090E0E622F722EE
 +:10F46000082319237CE0E71674E9F70670E0070724
 +:10F4700070E0170709F088C0C25DDE4F8881CE5268
 +:10F48000D140E82EFF2400E010E0102F0F2DFE2CBD
 +:10F49000EE24C35DDE4F9881CD52D140E90EF11CC0
 +:10F4A000011D111DD601C50181709070A070B07052
 +:10F4B000DC0199278827E80EF91E0A1F1B1F20EF81
 +:10F4C00030E040E050E0A222B322C422D522F1E194
 +:10F4D000AA0CBB1CCC1CDD1CFA95D1F7EA0CFB1C5A
 +:10F4E0000C1D1D1D41E050E060E070E0242235223B
 +:10F4F00046225722E5E1220C331C441C551CEA9598
 +:10F50000D1F7E20CF31C041D151D57016801AA0C6C
 +:10F51000BB1CCC1CDD1C8FE192EE60E00F942FF33E
 +:10F52000C801AA27BB270F947EF3BB27A12F902FDA
 +:10F530008F2D0F947EF38E2D0F947EF350E2509317
 +:10F54000C6008091C00086FFFCCF8091C00080641F
 +:10F550008093C0006EE36093C6008091C00086FF78
 +:10F56000FCCF8091C00080648093C000C601AA27B0
 +:10F57000BB270F947EF3BB27AD2D9C2D8B2D0F94B5
 +:10F580007EF38A2D0F947EF370E27093C600809113
 +:10F59000C00086FFFCCF8091C00080648093C000D3
 +:10F5A000CC5DDE4FE881F981C452D140CF01AA275A
 +:10F5B00097FDA095BA2FABBFFC018791969160E0B3
 +:10F5C0000F942FF30F944DF3CC5DDE4F088119811A
 +:10F5D000C452D1400E5F1F4FCC5DDE4F19830883AC
 +:10F5E000C452D140CA5DDE4F28813981C652D14014
 +:10F5F0002933310509F417CB44E050E060E070E0B6
 +:10F60000640E751E861E971EC9CD80E393EE62E0E0
 +:10F610000F9466F384E292EE60E00F942FF38091F2
 +:10F62000C00087FFFCCF1091C6001F751093C60065
 +:10F630008091C00086FFFCCF8091C00080648093E1
 +:10F64000C0000F944DF3812F81548A3108F036C1E8
 +:10F65000163409F495C0173490F4133409F44EC0ED
 +:10F66000143430F41134F1F0123409F01DC130C0FB
 +:10F67000143409F459C0153409F016C16BC01A349A
 +:10F6800009F4C4C01B3438F4173409F48FC018349B
 +:10F6900009F00AC1A1C01B3409F4D2C01C3409F01E
 +:10F6A00003C1E8C08FEF81B90DC082B1809582B9E6
 +:10F6B00080E090E0E0EDF7E03197F1F70196883CCB
 +:10F6C0009105C1F78091C00087FFEFCF12B8EFC05E
 +:10F6D0008FEF84B90DC085B1809585B980E090E049
 +:10F6E000E0EDF7E03197F1F70196883C9105C1F71D
 +:10F6F0008091C00087FFEFCF15B8D9C08FEF87B9D1
 +:10F700000DC088B1809588B980E090E0E0EDF7E029
 +:10F710003197F1F70196883C9105C1F78091C000BF
 +:10F7200087FFEFCF18B8C3C08FEF8AB90DC08BB178
 +:10F7300080958BB980E090E0E0EDF7E03197F1F74C
 +:10F740000196883C9105C1F78091C00087FFEFCFFB
 +:10F750001BB8ADC08FEF8DB90DC08EB180958EB93D
 +:10F7600080E090E0E0EDF7E03197F1F70196883C1A
 +:10F770009105C1F78091C00087FFEFCF1EB897C0F9
 +:10F780008FEF80BB0DC081B3809581BB80E090E09E
 +:10F79000E0EDF7E03197F1F70196883C9105C1F76C
 +:10F7A0008091C00087FFEFCF11BA81C08FEF83BB7C
 +:10F7B0000DC084B3809584BB80E090E0E0EDF7E07D
 +:10F7C0003197F1F70196883C9105C1F78091C0000F
 +:10F7D00087FFEFCF14BA6BC08FEF809301010FC08A
 +:10F7E0008091020180958093020180E090E0E0ED3D
 +:10F7F000F7E03197F1F70196883C9105C1F78091C8
 +:10F80000C00087FFEDCF1092020151C08FEF8093AF
 +:10F8100004010FC08091050180958093050180E06F
 +:10F8200090E0E0EDF7E03197F1F70196883C910523
 +:10F83000C1F78091C00087FFEDCF1092050137C05E
 +:10F840008FEF809307010FC080910801809580930E
 +:10F85000080180E090E0E0EDF7E03197F1F70196E4
 +:10F86000883C9105C1F78091C00087FFEDCF1092D1
 +:10F8700008011DC08FEF80930A010FC080910B011A
 +:10F88000809580930B0180E090E0E0EDF7E0319708
 +:10F89000F1F70196883C9105C1F78091C00087FF80
 +:10F8A000EDCF10920B0103C08FE292EEB9C98091A7
 +:10F8B000C00087FFFCCF8091C600B5C982E492EEFC
 +:10F8C000AFC98CE191EEACC9AA24BB24933061F19D
 +:10F8D000943028F4913089F0923008F508C09530C2
 +:10F8E000B1F1953040F1963009F053C04EC02B3144
 +:10F8F00009F020C991E06BE11DC9213041F0C15DE3
 +:10F90000DE4F5881CF52D140251709F002C362273C
 +:10F91000C15DDE4F2883CF52D14092E00BC9B22F98
 +:10F92000A0E0622793E006C9822F90E0A82BB92BB4
 +:10F93000622794E0FFC82E3009F0EBC2622795E001
 +:10F94000C05DDE4F19821882C053D140F3C8E1E098
 +:10F95000F0E0EC0FFD1FC05DDE4FE880F980C05382
 +:10F96000D140EE0DFF1D208387010F5F1F4FC05D4B
 +:10F97000DE4F19830883C053D14062270A171B0743
 +:10F9800009F0D8C8D80196E0D5C8261709F0C1C239
 +:10F9900003C0973009F0CEC899248981833109F4D6
 +:10F9A000FCC08431C8F4863009F4C2C0873050F4FA
 +:10F9B000823009F4F0C0833009F458C0813009F076
 +:10F9C0000AC23EC0813109F462C0823108F0A6C08B
 +:10F9D000803109F000C2DFC0883109F472C089317A
 +:10F9E00050F4853109F4D9C0853108F477C18631E6
 +:10F9F00009F0F1C173C18A3109F457C08A3108F4A2
 +:10FA00007CC08B3109F446C08D3109F0E4C18D8191
 +:10FA1000803311F090E00AC08F81882311F49EE1B9
 +:10FA200005C0813011F091E001C098E91A821B8273
 +:10FA30008D818C831D829E831F8227E030E0CFC1A1
 +:10FA40001A8288E08B8381E48C8386E58D8382E54E
 +:10FA50008E8389E48F8383E5888780E589878FE5B6
 +:10FA60008A8782E38B872BE030E0B9C18A818139B4
 +:10FA700041F0823941F0803911F48FE005C080E017
 +:10FA800003C082E001C08AE01A828B8344C09924BB
 +:10FA9000939481C08D81882311F48EE12CC0813034
 +:10FAA00011F081E028C088E926C01A82E1E0F0E088
 +:10FAB00089E08093570084918B831C8224E030E09E
 +:10FAC0008EC18B81803589F48C81883039F4E2E0F5
 +:10FAD000F0E089E08093570084910DC0E0E0F0E011
 +:10FAE00089E080935700849106C0E3E0F0E089E06C
 +:10FAF0008093570084911A82DFCF8D81836C99E0C7
 +:10FB0000E1E0F0E0082E90935700E89507B600FC7E
 +:10FB1000FDCF1A821B8223E030E061C11A82CE5CE5
 +:10FB2000DE4F188219821A821B82C253D14055C1FE
 +:10FB30008A8190E0A0E0B0E0582F442733272227A5
 +:10FB40008B8190E0A0E0B0E0DC0199278827282B8A
 +:10FB5000392B4A2B5B2B8D8190E0A0E0B0E0282B65
 +:10FB6000392B4A2B5B2B8C8190E0A0E0B0E0BA2FC0
 +:10FB7000A92F982F8827282B392B4A2B5B2B220F54
 +:10FB8000331F441F551FC05EDE4F288339834A83CD
 +:10FB90005B83C052D1401A8220C19A812B8183316C
 +:10FBA00049F0C05EDE4F488159816A817B81C05235
 +:10FBB000D1408AC0CE5CDE4F488159816A817B8109
 +:10FBC000C253D140403080EC580783E0680780E0A2
 +:10FBD0007807F0F483E0FA0160935B0080935700AC
 +:10FBE000E89507B600FCFDCFCE5CDE4F4881598119
 +:10FBF0006A817B81C253D14040505F4F6F4F7F4F2E
 +:10FC0000CE5CDE4F488359836A837B83C253D140E5
 +:10FC1000C95CDE4F9883C753D140CA5CDE4F18825F
 +:10FC2000C653D140022F10E0CA5CDE4F6881798153
 +:10FC3000C653D140062B172BC05EDE4F4881598139
 +:10FC40006A817B81C052D140DE011B9631E08C91EC
 +:10FC500011962C9111971296C75CDE4F2883C953D9
 +:10FC6000D140C85CDE4F1882C853D14090E0C85CD8
 +:10FC7000DE4FE881F981C853D1408E2B9F2B0C01B8
 +:10FC8000FA0160935B0030935700E89511244E5FB2
 +:10FC90005F4F6F4F7F4F02501040C9F685E0C05E46
 +:10FCA000DE4FE880F9800A811B81C052D140F70104
 +:10FCB00000935B0080935700E89507B600FCFDCFEA
 +:10FCC00081E180935700E8951A82C05EDE4F488339
 +:10FCD00059836A837B83C052D1407FC0FA80C55C60
 +:10FCE000DE4FF882CB53D140C65CDE4F1882CA5338
 +:10FCF000D1408B81C82EDD24C65CDE4F088119817E
 +:10FD0000CA53D140C02AD12A1A828981BE016D5FAF
 +:10FD10007F4F843121F59601C05EDE4FE880F98087
 +:10FD20000A811B81C052D1400BBFF7018791969188
 +:10FD3000DB018C9311969C936E5F7F4FD801C701B6
 +:10FD40000296A11DB11DC05EDE4F88839983AA83F0
 +:10FD5000BB83C052D14022503040F1F636C0C05E65
 +:10FD6000DE4F288139814A815B81C052D14008949D
 +:10FD7000C108D108760100E010E00894C11CD11C34
 +:10FD80000894E11CF11C011D111DE20EF31E041F5D
 +:10FD9000151F21BDBB27A52F942F832F82BD2F5F59
 +:10FDA0003F4F4F4F5F4FF89A80B5DB018D93BD01F8
 +:10FDB0002E153F054007510761F7C05EDE4F2883CF
 +:10FDC00039834A835B83C052D14096012D5F3F4FF8
 +:10FDD000FB01108204C080EC8A8322E030E08BE1DA
 +:10FDE0008093C6008091C00086FFFCCF8091C00048
 +:10FDF00080648093C000C15DDE4FF881CF52D14056
 +:10FE0000F093C6008091C00086FFFCCF8091C000B7
 +:10FE100080648093C000432F3093C6008091C0005F
 +:10FE200086FFFCCF8091C00080648093C000922F39
 +:10FE30002093C6008091C00086FFFCCF8091C00057
 +:10FE400080648093C0008EE08093C6008091C000E3
 +:10FE500086FFFCCF8091C00080648093C00065E184
 +:10FE6000C15DDE4FE880CF52D1406E2569276427FF
 +:10FE7000FE01319610C090819093C6008091C00021
 +:10FE800086FFFCCF31968091C00080648093C000D3
 +:10FE90006927215030402115310569F76093C6006C
 +:10FEA0008091C00086FFFCCF8091C0008064809369
 +:10FEB000C00085B1805885B9992081F4C15DDE4FBD
 +:10FEC0000881CF52D1400F5FC15DDE4F0883CF5212
 +:10FED000D14090E0A0E0B0E00D949AF527982F98DB
 +:10FEE00080E090E020ED37E0F9013197F1F70196DD
 +:10FEF00084369105C9F700008091C0008D7F809302
 +:10FF0000C00081E180935700E895EE27FF27099410
 +:10FF1000FFCF90E00D949AF597FB092E07260AD0A3
 +:10FF200077FD04D02ED006D000201AF4709561958C
 +:10FF30007F4F0895F6F7909581959F4F0895A1E220
 +:10FF40001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F53
 +:10FF5000FF1FA217B307E407F50720F0A21BB30B9E
 +:10FF6000E40BF50B661F771F881F991F1A9469F71A
 +:10FF700060957095809590959B01AC01BD01CF0176
 +:10FF80000895AA1BBB1B51E107C0AA1FBB1FA617E0
 +:10FF9000B70710F0A61BB70B881F991F5A95A9F732
 +:10FFA00080959095BC01CD010895F999FECF92BD41
 +:10FFB00081BDF89A992780B50895262FF999FECF2B
 +:10FFC0001FBA92BD81BD20BD0FB6F894FA9AF99A76
 +:0AFFD0000FBE01960895F894FFCFCC
 +:040000033000E000E9
 +:00000001FF
 diff --git a/bootloaders/stk500v2/STK500V2.pnproj b/bootloaders/stk500v2/STK500V2.pnproj index d935019..d935019 100755..100644 --- a/bootloaders/stk500v2/STK500V2.pnproj +++ b/bootloaders/stk500v2/STK500V2.pnproj diff --git a/bootloaders/stk500v2/STK500V2.pnps b/bootloaders/stk500v2/STK500V2.pnps index f85cde5..f85cde5 100755..100644 --- a/bootloaders/stk500v2/STK500V2.pnps +++ b/bootloaders/stk500v2/STK500V2.pnps diff --git a/bootloaders/stk500v2/avr_cpunames.h b/bootloaders/stk500v2/avr_cpunames.h new file mode 100644 index 0000000..ad0ed9c --- /dev/null +++ b/bootloaders/stk500v2/avr_cpunames.h @@ -0,0 +1,189 @@ +//************************************************************************************************** +//* +//*	Atmel AVR CPU name strings +//* +//************************************************************************************************** +//*	Sep 19,	2010	<MLS> Started on avr_cpunames.h +//************************************************************************************************** + +//#include	"avr_cpunames.h" + +//************************************************************************************************** + + +#if defined (__AVR_AT94K__) +									#define	_AVR_CPU_NAME_	"AT94k" +#elif defined (__AVR_AT43USB320__) +#elif defined (__AVR_AT43USB355__) +#elif defined (__AVR_AT76C711__) +#elif defined (__AVR_AT86RF401__) +#elif defined (__AVR_AT90PWM1__) +#elif defined (__AVR_AT90PWM2__) +#elif defined (__AVR_AT90PWM2B__) +#elif defined (__AVR_AT90PWM3__) +#elif defined (__AVR_AT90PWM3B__) +#elif defined (__AVR_AT90PWM216__) +#elif defined (__AVR_AT90PWM316__) +#elif defined (__AVR_ATmega32C1__) +#elif defined (__AVR_ATmega32M1__) +#elif defined (__AVR_ATmega32U4__) +									#define	_AVR_CPU_NAME_	"ATmega32U4" +#elif defined (__AVR_ATmega32U6__) +									#define	_AVR_CPU_NAME_	"ATmega32U6" +#elif defined (__AVR_ATmega128__) +									#define	_AVR_CPU_NAME_	"Atmega128" +#elif defined (__AVR_ATmega1280__) +									#define	_AVR_CPU_NAME_	"ATmega1280" +#elif defined (__AVR_ATmega1281__) +									#define	_AVR_CPU_NAME_	"ATmega1281" +#elif defined (__AVR_ATmega1284P__) +									#define	_AVR_CPU_NAME_	"ATmega1284" +#elif defined (__AVR_ATmega128RFA1__) +									#define	_AVR_CPU_NAME_	"ATmega128RFA1" +#elif defined (__AVR_ATmega2560__) +									#define	_AVR_CPU_NAME_	"ATmega2560" +#elif defined (__AVR_ATmega2561__) +									#define	_AVR_CPU_NAME_	"ATmega2561" +#elif defined (__AVR_AT90CAN32__) +									#define	_AVR_CPU_NAME_	"AT90CAN32" +#elif defined (__AVR_AT90CAN64__) +									#define	_AVR_CPU_NAME_	"AT90CAN64" +#elif defined (__AVR_AT90CAN128__) +									#define	_AVR_CPU_NAME_	"AT90CAN128" +#elif defined (__AVR_AT90USB82__) +									#define	_AVR_CPU_NAME_	"AT90USB82" +#elif defined (__AVR_AT90USB162__) +									#define	_AVR_CPU_NAME_	"AT90USB162" +#elif defined (__AVR_AT90USB646__) +									#define	_AVR_CPU_NAME_	"AT90USB646" +#elif defined (__AVR_AT90USB647__) +									#define	_AVR_CPU_NAME_	"AT90USB647" +#elif defined (__AVR_AT90USB1286__) +									#define	_AVR_CPU_NAME_	"AT90USB1286" +#elif defined (__AVR_AT90USB1287__) +									#define	_AVR_CPU_NAME_	"AT90USB1287" +#elif defined (__AVR_ATmega64__) +									#define	_AVR_CPU_NAME_	"ATmega64" +#elif defined (__AVR_ATmega640__) +									#define	_AVR_CPU_NAME_	"ATmega640" +#elif defined (__AVR_ATmega644__) +									#define	_AVR_CPU_NAME_	"ATmega644" +#elif defined (__AVR_ATmega644P__) +									#define	_AVR_CPU_NAME_	"ATmega644P" +#elif defined (__AVR_ATmega645__) +									#define	_AVR_CPU_NAME_	"ATmega645" +#elif defined (__AVR_ATmega6450__) +									#define	_AVR_CPU_NAME_	"ATmega6450" +#elif defined (__AVR_ATmega649__) +									#define	_AVR_CPU_NAME_	"ATmega649" +#elif defined (__AVR_ATmega6490__) +									#define	_AVR_CPU_NAME_	"ATmega6490" +#elif defined (__AVR_ATmega103__) +									#define	_AVR_CPU_NAME_	"ATmega103" +#elif defined (__AVR_ATmega32__) +									#define	_AVR_CPU_NAME_	"Atmega32" +#elif defined (__AVR_ATmega323__) +									#define	_AVR_CPU_NAME_	"ATmega323" +#elif defined (__AVR_ATmega324P__) +									#define	_AVR_CPU_NAME_	"ATmega324P" +#elif defined (__AVR_ATmega325__) +									#define	_AVR_CPU_NAME_	"ATmega325" +#elif defined (__AVR_ATmega325P__) +									#define	_AVR_CPU_NAME_	"ATmega325P" +#elif defined (__AVR_ATmega3250__) +									#define	_AVR_CPU_NAME_	"ATmega3250" +#elif defined (__AVR_ATmega3250P__) +									#define	_AVR_CPU_NAME_	"ATmega3250P" +#elif defined (__AVR_ATmega328P__) +									#define	_AVR_CPU_NAME_	"ATmega328P" +#elif defined (__AVR_ATmega329__) +									#define	_AVR_CPU_NAME_	"ATmega329" +#elif defined (__AVR_ATmega329P__) +									#define	_AVR_CPU_NAME_	"ATmega329P" +#elif defined (__AVR_ATmega3290__) +									#define	_AVR_CPU_NAME_	"ATmega3290" +#elif defined (__AVR_ATmega3290P__) +									#define	_AVR_CPU_NAME_	"ATmega3290P" +#elif defined (__AVR_ATmega32HVB__) +									#define	_AVR_CPU_NAME_	"ATmega32HVB" +#elif defined (__AVR_ATmega406__) +									#define	_AVR_CPU_NAME_	"ATmega406" +#elif defined (__AVR_ATmega16__) +									#define	_AVR_CPU_NAME_	"Atmega16" +#elif defined (__AVR_ATmega161__) +									#define	_AVR_CPU_NAME_	"ATmega161" +#elif defined (__AVR_ATmega162__) +									#define	_AVR_CPU_NAME_	"ATmega162" +#elif defined (__AVR_ATmega163__) +									#define	_AVR_CPU_NAME_	"ATmega163" +#elif defined (__AVR_ATmega164P__) +									#define	_AVR_CPU_NAME_	"ATmega164P" +#elif defined (__AVR_ATmega165__) +									#define	_AVR_CPU_NAME_	"ATmega165" +#elif defined (__AVR_ATmega165P__) +									#define	_AVR_CPU_NAME_	"ATmega165P" +#elif defined (__AVR_ATmega168__) +									#define	_AVR_CPU_NAME_	"ATmega168" +#elif defined (__AVR_ATmega168P__) +									#define	_AVR_CPU_NAME_	"ATmega168P" +#elif defined (__AVR_ATmega169__) +									#define	_AVR_CPU_NAME_	"Atmega169" +#elif defined (__AVR_ATmega169P__) +									#define	_AVR_CPU_NAME_	"ATmega169P" +#elif defined (__AVR_ATmega8HVA__) +									#define	_AVR_CPU_NAME_	"ATmega8HVA" +#elif defined (__AVR_ATmega16HVA__) +									#define	_AVR_CPU_NAME_	"ATmega16HVA" +#elif defined (__AVR_ATmega8__) +									#define	_AVR_CPU_NAME_	"ATmega8" +#elif defined (__AVR_ATmega48__) +									#define	_AVR_CPU_NAME_	"ATmega48" +#elif defined (__AVR_ATmega48P__) +									#define	_AVR_CPU_NAME_	"ATmega48P" +#elif defined (__AVR_ATmega88__) +									#define	_AVR_CPU_NAME_	"ATmega88" +#elif defined (__AVR_ATmega88P__) +									#define	_AVR_CPU_NAME_	"ATmega88P" +#elif defined (__AVR_ATmega8515__) +									#define	_AVR_CPU_NAME_	"ATmega8515" +#elif defined (__AVR_ATmega8535__) +									#define	_AVR_CPU_NAME_	"ATmega8535" +#elif defined (__AVR_AT90S8535__) +#elif defined (__AVR_AT90C8534__) +#elif defined (__AVR_AT90S8515__) +#elif defined (__AVR_AT90S4434__) +#elif defined (__AVR_AT90S4433__) +#elif defined (__AVR_AT90S4414__) +#elif defined (__AVR_ATtiny22__) +#elif defined (__AVR_ATtiny26__) +#elif defined (__AVR_AT90S2343__) +#elif defined (__AVR_AT90S2333__) +#elif defined (__AVR_AT90S2323__) +#elif defined (__AVR_AT90S2313__) +#elif defined (__AVR_ATtiny2313__) +									#define	_AVR_CPU_NAME_	"ATtiny2313" +#elif defined (__AVR_ATtiny13__) +#elif defined (__AVR_ATtiny13A__) +#elif defined (__AVR_ATtiny25__) +#elif defined (__AVR_ATtiny45__) +#elif defined (__AVR_ATtiny85__) +#elif defined (__AVR_ATtiny24__) +#elif defined (__AVR_ATtiny44__) +#elif defined (__AVR_ATtiny84__) +#elif defined (__AVR_ATtiny261__) +#elif defined (__AVR_ATtiny461__) +#elif defined (__AVR_ATtiny861__) +#elif defined (__AVR_ATtiny43U__) +#elif defined (__AVR_ATtiny48__) +#elif defined (__AVR_ATtiny88__) +#elif defined (__AVR_ATtiny167__) +#elif defined (__AVR_ATmega8U2__) +									#define	_AVR_CPU_NAME_	"ATmega8U2" +#else +	#error cpu not defined +#endif + + +#if !defined (_AVR_CPU_NAME_) +//	#define	_AVR_CPU_NAME_	"UNKNOWN" +#endif diff --git a/bootloaders/stk500v2/avrinterruptnames.h b/bootloaders/stk500v2/avrinterruptnames.h index 0ae80f9..f862f9a 100644 --- a/bootloaders/stk500v2/avrinterruptnames.h +++ b/bootloaders/stk500v2/avrinterruptnames.h @@ -13,6 +13,7 @@  //*	Jul  4,	2010	<MLS> Started using vector defs for #ifdefs as defined in <avr/io.h>  //*	Jul 13,	2010	<MLS> Added support for __AVR_ATmega128__  //*	Aug 26,	2010	<MLS> Added support for __AVR_ATmega2561__ +//*	Sep 13,	2010	<MLS> Added support for __AVR_AT90CAN32__ __AVR_AT90CAN64__ __AVR_AT90CAN128__  //**************************************************************************************************  //#include	"avrinterruptnames.h" @@ -253,13 +254,69 @@  	prog_char	gAvrInt_LCD_StartFrame[]	PROGMEM	=	"LCD Start of Frame";  #endif +//*	these are for the chips with CAN bus support +#ifdef CANIT_vect +	prog_char	gAvrInt_CAN_TrafnsferCE[]	PROGMEM	=	"CAN Transfer Complete or Error"; +#endif +#ifdef OVRIT_vect +	prog_char	gAvrInt_CAN_TimerOverRun[]	PROGMEM	=	"CAN Timer Overrun"; +#endif + +//*	these are for __AVR_ATmega128RFA1__ +#ifdef TRX24_PLL_LOCK_vect +	prog_char	gAvrInt_TRN_PLL_LOCK[]		PROGMEM	=	"TRX24_PLL_LOCK"; +#endif +#ifdef TRX24_PLL_UNLOCK_vect +	prog_char	gAvrInt_TRN_PLL_UNLOCK[]	PROGMEM	=	"TRX24_PLL_UNLOCK"; +#endif +#ifdef TRX24_RX_START_vect +	prog_char	gAvrInt_TRN_RX_START[]		PROGMEM	=	"TRX24_RX_START"; +#endif +#ifdef TRX24_RX_END_vect +	prog_char	gAvrInt_TRN_RX_END[]		PROGMEM	=	"TRX24_RX_END"; +#endif +#ifdef TRX24_CCA_ED_DONE_vect +	prog_char	gAvrInt_TRN_CAAED_DONE[]	PROGMEM	=	"TRX24_CCA_ED_DONE"; +#endif +#ifdef TRX24_XAH_AMI_vect +	prog_char	gAvrInt_TRN_FRAME_MATCH[]	PROGMEM	=	"TRX24_FRAME_ADDRESS_MATCH"; +#endif +#ifdef TRX24_TX_END_vect +	prog_char	gAvrInt_TRN_TX_END[]		PROGMEM	=	"TRX24_TX_END"; +#endif +#ifdef TRX24_AWAKE_vect +	prog_char	gAvrInt_TRN_AWAKE[]			PROGMEM	=	"TRX24_AWAKE"; +#endif +#ifdef SCNT_CMP1_vect +	prog_char	gAvrInt_SCNT_CMP1[]			PROGMEM	=	"SCNT_CMP1"; +#endif +#ifdef SCNT_CMP2_vect +	prog_char	gAvrInt_SCNT_CMP2[]			PROGMEM	=	"SCNT_CMP2"; +#endif +#ifdef SCNT_CMP3_vect +	prog_char	gAvrInt_SCNT_CMP3[]			PROGMEM	=	"SCNT_CMP3"; +#endif +#ifdef SCNT_OVFL_vect +	prog_char	gAvrInt_SCNT_OVFL[]			PROGMEM	=	"SCNT_OVFL"; +#endif +#ifdef SCNT_BACKOFF_vect +	prog_char	gAvrInt_SCNT_BACKOFF[]		PROGMEM	=	"SCNT_BACKOFF"; +#endif +#ifdef AES_READY_vect +	prog_char	gAvrInt_AES_READY[]			PROGMEM	=	"AES_READY"; +#endif +#ifdef BAT_LOW_vect +	prog_char	gAvrInt_BAT_LOW[]			PROGMEM	=	"BAT_LOW"; +#endif + +  //**************************************************************************************************  //*	these do not have vector defs and have to be done by CPU type  #if defined(__AVR_ATmega645__ ) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)  	prog_char	gAvrInt_NOT_USED[]		PROGMEM	=	"NOT_USED";  #endif -#if defined(__AVR_ATmega32U4__) +#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega128RFA1__)  	prog_char	gAvrInt_RESERVED[]		PROGMEM	=	"Reserved";  #endif @@ -309,8 +366,8 @@ PGM_P gInterruptNameTable[]	PROGMEM =  #endif  //************************************************************************************************** -#pragma mark __AVR_ATmega169__  #if defined(__AVR_ATmega169__) +#pragma mark __AVR_ATmega169__  #define	_INTERRUPT_NAMES_DEFINED_ @@ -439,8 +496,8 @@ PGM_P gInterruptNameTable[]	PROGMEM =  //************************************************************************************************** -#if defined(__AVR_ATmega324P__ ) || defined(__AVR_ATmega644__ ) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) -#pragma mark __AVR_ATmega324P__  __AVR_ATmega644__ __AVR_ATmega644P__ __AVR_ATmega1284P__ +#if defined(__AVR_ATmega324P__ ) || defined(__AVR_ATmega644__ ) || defined(__AVR_ATmega644P__) +#pragma mark __AVR_ATmega324P__  __AVR_ATmega644__ __AVR_ATmega644P__   #define	_INTERRUPT_NAMES_DEFINED_ @@ -488,6 +545,61 @@ PGM_P gInterruptNameTable[]	PROGMEM =  #endif  //************************************************************************************************** +#if defined(__AVR_ATmega1284P__ ) +#pragma mark __AVR_ATmega1284P__ + +#define	_INTERRUPT_NAMES_DEFINED_ + +PGM_P gInterruptNameTable[]	PROGMEM = +{ + +	gAvrInt_RESET,			//	1 +	gAvrInt_INT0,			//	2 +	gAvrInt_INT1,			//	3 +	gAvrInt_INT2,			//	4 +	gAvrInt_PCINT0,			//	5 +	gAvrInt_PCINT1,			//	6 +	gAvrInt_PCINT2,			//	7 +	gAvrInt_PCINT3,			//	8 +	gAvrInt_WDT,			//	9 +	gAvrInt_TIMER2_COMPA,	//	10 +	gAvrInt_TIMER2_COMPB,	//	11 +	gAvrInt_TIMER2_OVF,		//	12 +	gAvrInt_TIMER1_CAPT,	//	13 +	gAvrInt_TIMER1_COMPA,	//	14 +	gAvrInt_TIMER1_COMPB,	//	15 +	gAvrInt_TIMER1_OVF,		//	16 +	gAvrInt_TIMER0_COMPA,	//	17 +	gAvrInt_TIMER0_COMPB,	//	18 +	gAvrInt_TIMER0_OVF,		//	19 +	gAvrInt_SPI_STC,		//	20 +	gAvrInt_USART0_RX,		//	21 +	gAvrInt_USART0_UDRE,	//	22 +	gAvrInt_USART0_TX,		//	23 +	gAvrInt_ANALOG_COMP,	//	24 +	gAvrInt_ADC,			//	25 +	gAvrInt_EE_READY,		//	26 +	gAvrInt_TWI,			//	27 +	gAvrInt_SPM_READY,		//	28 + +	gAvrInt_USART1_RX,		//	29 +	gAvrInt_USART1_UDRE,	//	30 +	gAvrInt_USART1_TX,		//	31 +	//*	these are NOT documented in  doc8272.pdf  +	//*	they are in iom1284p.h +	gAvrInt_TIMER3_CAPT,	//	32 +	gAvrInt_TIMER3_COMPA,	//	33 +	gAvrInt_TIMER3_COMPB,	//	34 +	gAvrInt_TIMER3_OVF,		//	35 +	 + +}; + + +#endif + + +//**************************************************************************************************  #if defined(__AVR_ATmega645__ )  #pragma mark __AVR_ATmega645__ @@ -529,6 +641,41 @@ PGM_P gInterruptNameTable[]	PROGMEM =  #endif +//************************************************************************************************** +#if defined(__AVR_ATmega16__ ) +#pragma mark __AVR_ATmega16__ + +#define	_INTERRUPT_NAMES_DEFINED_ + +PGM_P gInterruptNameTable[]	PROGMEM = +{ + +	gAvrInt_RESET,			//	1 +	gAvrInt_INT0,			//	2 +	gAvrInt_INT1,			//	3 +	gAvrInt_TIMER2_COMP,	//	4 +	gAvrInt_TIMER2_OVF,		//	5 +	gAvrInt_TIMER1_CAPT,	//	6 +	gAvrInt_TIMER1_COMPA,	//	7 +	gAvrInt_TIMER1_COMPB,	//	8 +	gAvrInt_TIMER1_OVF,		//	9 +	gAvrInt_TIMER0_OVF,		//	10 +	gAvrInt_SPI_STC,		//	11 +	gAvrInt_USART_RX,		//	12 +	gAvrInt_USART_UDRE,		//	13 +	gAvrInt_USART_TX,		//	14 +	gAvrInt_ADC,			//	15 +	gAvrInt_EE_READY,		//	16 +	gAvrInt_ANALOG_COMP,	//	17 +	gAvrInt_TWI,			//	18 +	gAvrInt_INT2,			//	19 +	gAvrInt_TIMER0_COMP,	//	20 +	gAvrInt_SPM_READY,		//	21 + +}; + + +#endif  //**************************************************************************************************  #if defined(__AVR_ATmega32__ ) @@ -629,7 +776,7 @@ PGM_P gInterruptNameTable[]	PROGMEM =  #endif  //************************************************************************************************** -#if defined(__AVR_AT90USB1286__) +#if defined(__AVR_AT90USB1286__) ||  defined(__AVR_AT90USB1287__)  #pragma mark __AVR_AT90USB1286__  //*	teensy++ 2.0  //*	http://www.pjrc.com/teensy/pinout.html @@ -689,8 +836,8 @@ PGM_P gInterruptNameTable[]	PROGMEM =  //************************************************************************************************** -#if defined(__AVR_ATmega128__) -#pragma mark __AVR_ATmega128__ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega64__) +#pragma mark __AVR_ATmega64__ __AVR_ATmega128__  #define	_INTERRUPT_NAMES_DEFINED_ @@ -737,6 +884,157 @@ PGM_P gInterruptNameTable[]	PROGMEM =  #endif +//************************************************************************************************** +#if defined(__AVR_AT90CAN32__) || defined(__AVR_AT90CAN64__) || defined(__AVR_AT90CAN128__) +#pragma mark __AVR_AT90CAN32__ __AVR_AT90CAN64__ __AVR_AT90CAN128__ + +#define	_INTERRUPT_NAMES_DEFINED_ + +PGM_P gInterruptNameTable[]	PROGMEM = +{ + +	gAvrInt_RESET,				//	1 +	gAvrInt_INT0,				//	2 +	gAvrInt_INT1,				//	3 +	gAvrInt_INT2,				//	4 +	gAvrInt_INT3,				//	5 +	gAvrInt_INT4,				//	6 +	gAvrInt_INT5,				//	7 +	gAvrInt_INT6,				//	8 +	gAvrInt_INT7,				//	9 +	gAvrInt_TIMER2_COMP,		//	10 +	gAvrInt_TIMER2_OVF,			//	11 +	gAvrInt_TIMER1_CAPT,		//	12 +	gAvrInt_TIMER1_COMPA,		//	13 +	gAvrInt_TIMER1_COMPB,		//	14 +	gAvrInt_TIMER1_COMPC,		//	15 +	gAvrInt_TIMER1_OVF,			//	16 +	gAvrInt_TIMER0_COMP,		//	17 +	gAvrInt_TIMER0_OVF,			//	18 +	gAvrInt_CAN_TrafnsferCE,	//	19 +	gAvrInt_CAN_TimerOverRun,	//	20 +	gAvrInt_SPI_STC,			//	21 +	gAvrInt_USART0_RX,			//	22 +	gAvrInt_USART0_UDRE,		//	23 +	gAvrInt_USART0_TX,			//	24 +	gAvrInt_ANALOG_COMP,		//	25 +	gAvrInt_ADC,				//	26 +	gAvrInt_EE_READY,			//	27 +	gAvrInt_TIMER3_CAPT,		//	28 +	gAvrInt_TIMER3_COMPA,		//	29 +	gAvrInt_TIMER3_COMPB,		//	30 +	gAvrInt_TIMER3_COMPC,		//	31 +	gAvrInt_TIMER3_OVF,			//	32 +	gAvrInt_USART1_RX,			//	33 +	gAvrInt_USART1_UDRE,		//	34 +	gAvrInt_USART1_TX,			//	35 +	gAvrInt_TWI,				//	36 +	gAvrInt_SPM_READY,			//	37 +}; + +#endif + +//************************************************************************************************** +#if defined (__AVR_ATmega128RFA1__) +#pragma mark __AVR_ATmega128RFA1__ +#define	_INTERRUPT_NAMES_DEFINED_ + +PGM_P gInterruptNameTable[]	PROGMEM = +{ +	//*	Atmel changed the number scheme for interrupt vectors +	gAvrInt_RESET,			//	0 +	gAvrInt_INT0,			//	1 +	gAvrInt_INT1,			//	2 +	gAvrInt_INT2,			//	3 +	gAvrInt_INT3,			//	4 +	gAvrInt_INT4,			//	5 +	gAvrInt_INT5,			//	6 +	gAvrInt_INT6,			//	7 +	gAvrInt_INT7,			//	8 +	gAvrInt_PCINT0,			//	9 +	gAvrInt_PCINT1,			//	10 +	gAvrInt_PCINT2,			//	11 +	gAvrInt_WDT,			//	12 +	gAvrInt_TIMER2_COMPA,	//	13 +	gAvrInt_TIMER2_COMPB,	//	14 +	gAvrInt_TIMER2_OVF,		//	15 +	gAvrInt_TIMER1_CAPT,	//	16 +	gAvrInt_TIMER1_COMPA,	//	17 +	gAvrInt_TIMER1_COMPB,	//	18 +	gAvrInt_TIMER1_COMPC,	//	19 +	gAvrInt_TIMER1_OVF,		//	20 +	gAvrInt_TIMER0_COMPA,	//	21 +	gAvrInt_TIMER0_COMPB,	//	22 +	gAvrInt_TIMER0_OVF,		//	23 +	gAvrInt_SPI_STC,		//	24 +	gAvrInt_USART0_RX,		//	25 +	gAvrInt_USART0_UDRE,	//	26 +	gAvrInt_USART0_TX,		//	27 +	gAvrInt_ANALOG_COMP,	//	28 +	gAvrInt_ADC,			//	29 +	gAvrInt_EE_READY,		//	30 +	gAvrInt_TIMER3_CAPT,	//	31 +	gAvrInt_TIMER3_COMPA,	//	32 +	gAvrInt_TIMER3_COMPB,	//	33 +	gAvrInt_TIMER3_COMPC,	//	34 +	gAvrInt_TIMER3_OVF,		//	35 +	gAvrInt_USART1_RX,		//	36 +	gAvrInt_USART1_UDRE,	//	37 +	gAvrInt_USART1_TX,		//	38 +	gAvrInt_TWI,			//	39 +	gAvrInt_SPM_READY,		//	40 +	gAvrInt_TIMER4_CAPT,	//	41 +	gAvrInt_TIMER4_COMPA,	//	42 +	gAvrInt_TIMER4_COMPB,	//	43 +	gAvrInt_TIMER4_COMPC,	//	44 +	gAvrInt_TIMER4_OVF,		//	45 +	gAvrInt_TIMER5_CAPT,	//	46 +	gAvrInt_TIMER5_COMPA,	//	47 +	gAvrInt_TIMER5_COMPB,	//	48 +	gAvrInt_TIMER5_COMPC,	//	49 +	gAvrInt_TIMER5_OVF,		//	50 +#if 1 +	gAvrInt_RESERVED,		//	51 +	gAvrInt_RESERVED,		//	52 +	gAvrInt_RESERVED,		//	53 + +	gAvrInt_RESERVED,		//	54 +	gAvrInt_RESERVED,		//	55 +	gAvrInt_RESERVED,		//	56 + +#else +	gAvrInt_USART2_RX,		//	51 +	gAvrInt_USART2_UDRE,	//	52 +	gAvrInt_USART2_TX,		//	53 + +	gAvrInt_USART3_RX,		//	54 +	gAvrInt_USART3_UDRE,	//	55 +	gAvrInt_USART3_TX,		//	56 +#endif +	gAvrInt_TRN_PLL_LOCK,	//	57 +	gAvrInt_TRN_PLL_UNLOCK,	//	58	 +	gAvrInt_TRN_RX_START,	//	59 +	gAvrInt_TRN_RX_END,		//	60 +	gAvrInt_TRN_CAAED_DONE,	//	61 +	gAvrInt_TRN_FRAME_MATCH,//	62 +	gAvrInt_TRN_TX_END,		//	63 +	gAvrInt_TRN_AWAKE,		//	64 +	 +	gAvrInt_SCNT_CMP1,		//	65 +	gAvrInt_SCNT_CMP2,		//	66 +	gAvrInt_SCNT_CMP3,		//	67 +	gAvrInt_SCNT_OVFL,		//	68 +	gAvrInt_SCNT_BACKOFF,	//	69 +	gAvrInt_AES_READY,		//	70 +	gAvrInt_BAT_LOW,		//	71 +	 +	 +}; + +#endif + +  #if !defined(_INTERRUPT_NAMES_DEFINED_)  	#warning	No interrupt string defs for this cpu -#endif
\ No newline at end of file +#endif + diff --git a/bootloaders/stk500v2/command.h b/bootloaders/stk500v2/command.h index 03b1b38..03b1b38 100755..100644 --- a/bootloaders/stk500v2/command.h +++ b/bootloaders/stk500v2/command.h diff --git a/bootloaders/stk500v2/stk500boot.c b/bootloaders/stk500v2/stk500boot.c index 13dec89..e7494df 100755..100644 --- a/bootloaders/stk500v2/stk500boot.c +++ b/bootloaders/stk500v2/stk500boot.c @@ -79,9 +79,27 @@ LICENSE:  //*	Jul 29,	2010	<MLS> Added recchar_timeout for timing out on bootloading  //*	Aug 23,	2010	<MLS> Added support for atmega2561  //*	Aug 26,	2010	<MLS> Removed support for BOOT_BY_SWITCH +//*	Sep  8,	2010	<MLS> Added support for atmega16 +//*	Nov  9,	2010	<MLS> Issue 392:Fixed bug that 3 !!! in code would cause it to jump to monitor +//*	Jun 24,	2011	<MLS> Removed analogRead (was not used) +//*	Dec 29,	2011	<MLS> Issue 181: added watch dog timmer support +//*	Dec 29,	2011	<MLS> Issue 505:  bootloader is comparing the seqNum to 1 or the current sequence  +//*	Jan  1,	2012	<MLS> Issue 543: CMD_CHIP_ERASE_ISP now returns STATUS_CMD_FAILED instead of STATUS_CMD_OK +//*	Jan  1,	2012	<MLS> Issue 543: Write EEPROM now does something (NOT TESTED) +//*	Jan  1,	2012	<MLS> Issue 544: stk500v2 bootloader doesn't support reading fuses  //************************************************************************ - +//************************************************************************ +//*	these are used to test issues +//*	http://code.google.com/p/arduino/issues/detail?id=505 +//*	Reported by mark.stubbs, Mar 14, 2011 +//*	The STK500V2 bootloader is comparing the seqNum to 1 or the current sequence  +//*	(IE: Requiring the sequence to be 1 or match seqNum before continuing).   +//*	The correct behavior is for the STK500V2 to accept the PC's sequence number, and echo it back for the reply message. +#define	_FIX_ISSUE_505_ +//************************************************************************ +//*	Issue 181: added watch dog timmer support +#define	_FIX_ISSUE_181_  #include	<inttypes.h>  #include	<avr/io.h> @@ -95,11 +113,20 @@ LICENSE:  #include	"command.h" -#if defined(_MEGA_BOARD_) || defined(_BOARD_AMBER128_) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) +#if defined(_MEGA_BOARD_) || defined(_BOARD_AMBER128_) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) \ +	|| defined(__AVR_ATmega2561__) || defined(__AVR_ATmega1284P__) || defined(ENABLE_MONITOR) +	#undef		ENABLE_MONITOR  	#define		ENABLE_MONITOR  	static void	RunMonitor(void);  #endif +#ifndef EEWE +	#define EEWE    1 +#endif +#ifndef EEMWE +	#define EEMWE   2 +#endif +  //#define	_DEBUG_SERIAL_  //#define	_DEBUG_WITH_LEDS_ @@ -131,8 +158,8 @@ LICENSE:  	#define PROGLED_PORT	PORTD  	#define PROGLED_DDR		DDRD  	#define PROGLED_PIN		PINE7 -#elif defined( _CEREBOTPLUS_BOARD_ ) -	//*	this is for the Cerebot 2560 board +#elif defined( _CEREBOTPLUS_BOARD_ ) || defined(_CEREBOT_II_BOARD_) +	//*	this is for the Cerebot 2560 board and the Cerebot-ii  	//*	onbarod leds are on PORTE4-7  	#define PROGLED_PORT	PORTE  	#define PROGLED_DDR		DDRE @@ -149,6 +176,47 @@ LICENSE:  	#define PROGLED_PORT	PORTA  	#define PROGLED_DDR		DDRA  	#define PROGLED_PIN		PINA3 +#elif defined( _BOARD_MEGA16 ) +	//*	onbarod led is PORTA7 +	#define PROGLED_PORT	PORTA +	#define PROGLED_DDR		DDRA +	#define PROGLED_PIN		PINA7 +	#define UART_BAUDRATE_DOUBLE_SPEED 0 + +#elif defined( _BOARD_BAHBOT_ ) +	//*	dosent have an onboard LED but this is what will probably be added to this port +	#define PROGLED_PORT	PORTB +	#define PROGLED_DDR		DDRB +	#define PROGLED_PIN		PINB0 + +#elif defined( _BOARD_ROBOTX_ ) +	#define PROGLED_PORT	PORTB +	#define PROGLED_DDR		DDRB +	#define PROGLED_PIN		PINB6 +#elif defined( _BOARD_CUSTOM1284_BLINK_B0_ ) +	#define PROGLED_PORT	PORTB +	#define PROGLED_DDR		DDRB +	#define PROGLED_PIN		PINB0 +#elif defined( _BOARD_CUSTOM1284_ ) +	#define PROGLED_PORT	PORTD +	#define PROGLED_DDR		DDRD +	#define PROGLED_PIN		PIND5 +#elif defined( _AVRLIP_ ) +	#define PROGLED_PORT	PORTB +	#define PROGLED_DDR		DDRB +	#define PROGLED_PIN		PINB5 +#elif defined( _BOARD_STK500_ ) +	#define PROGLED_PORT	PORTA +	#define PROGLED_DDR		DDRA +	#define PROGLED_PIN		PINA7 +#elif defined( _BOARD_STK502_ ) +	#define PROGLED_PORT	PORTB +	#define PROGLED_DDR		DDRB +	#define PROGLED_PIN		PINB5 +#elif defined( _BOARD_STK525_ ) +	#define PROGLED_PORT	PORTB +	#define PROGLED_DDR		DDRB +	#define PROGLED_PIN		PINB7  #else  	#define PROGLED_PORT	PORTG  	#define PROGLED_DDR		DDRG @@ -164,6 +232,7 @@ LICENSE:  	#define F_CPU 16000000UL  #endif +#define	_BLINK_LOOP_COUNT_	(F_CPU / 2250)  /*   * UART Baudrate, AVRStudio AVRISP only accepts 115200 bps   */ @@ -228,12 +297,33 @@ LICENSE:  	#define SIGNATURE_BYTES 0x1E9801  #elif defined (__AVR_ATmega2561__)  	#define SIGNATURE_BYTES 0x1e9802 +#elif defined (__AVR_ATmega1284P__) +	#define SIGNATURE_BYTES 0x1e9705 +#elif defined (__AVR_ATmega640__) +	#define SIGNATURE_BYTES  0x1e9608 +#elif defined (__AVR_ATmega64__) +	#define SIGNATURE_BYTES  0x1E9602 +#elif defined (__AVR_ATmega169__) +	#define SIGNATURE_BYTES  0x1e9405 +#elif defined (__AVR_AT90USB1287__) +	#define SIGNATURE_BYTES  0x1e9782  #else  	#error "no signature definition for MCU available"  #endif -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \ +#if defined(_BOARD_ROBOTX_) || defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) +	#define	UART_BAUD_RATE_LOW			UBRR1L +	#define	UART_STATUS_REG				UCSR1A +	#define	UART_CONTROL_REG			UCSR1B +	#define	UART_ENABLE_TRANSMITTER		TXEN1 +	#define	UART_ENABLE_RECEIVER		RXEN1 +	#define	UART_TRANSMIT_COMPLETE		TXC1 +	#define	UART_RECEIVE_COMPLETE		RXC1 +	#define	UART_DATA_REG				UDR1 +	#define	UART_DOUBLE_SPEED			U2X1 + +#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \  	|| defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__)  	/* ATMega8 with one USART */  	#define	UART_BAUD_RATE_LOW			UBRRL @@ -258,6 +348,28 @@ LICENSE:  	#define	UART_RECEIVE_COMPLETE		RXC0  	#define	UART_DATA_REG				UDR0  	#define	UART_DOUBLE_SPEED			U2X0 +#elif defined(UBRR0L) && defined(UCSR0A) && defined(TXEN0) +	/* ATMega with two USART, use UART0 */ +	#define	UART_BAUD_RATE_LOW			UBRR0L +	#define	UART_STATUS_REG				UCSR0A +	#define	UART_CONTROL_REG			UCSR0B +	#define	UART_ENABLE_TRANSMITTER		TXEN0 +	#define	UART_ENABLE_RECEIVER		RXEN0 +	#define	UART_TRANSMIT_COMPLETE		TXC0 +	#define	UART_RECEIVE_COMPLETE		RXC0 +	#define	UART_DATA_REG				UDR0 +	#define	UART_DOUBLE_SPEED			U2X0 +#elif defined(UBRRL) && defined(UCSRA) && defined(UCSRB) && defined(TXEN) && defined(RXEN) +	//* catch all +	#define	UART_BAUD_RATE_LOW			UBRRL +	#define	UART_STATUS_REG				UCSRA +	#define	UART_CONTROL_REG			UCSRB +	#define	UART_ENABLE_TRANSMITTER		TXEN +	#define	UART_ENABLE_RECEIVER		RXEN +	#define	UART_TRANSMIT_COMPLETE		TXC +	#define	UART_RECEIVE_COMPLETE		RXC +	#define	UART_DATA_REG				UDR +	#define	UART_DOUBLE_SPEED			U2X  #else  	#error "no UART definition for MCU available"  #endif @@ -323,26 +435,16 @@ void __jumpMain(void)  	asm volatile ( ".set __stack, %0" :: "i" (RAMEND) ); -//	ldi r16,high(RAMEND) -//	out SPH,r16 ; Set stack pointer to top of RAM +//*	set stack pointer to top of RAM -//	asm volatile ( "ldi	16, 0x10");  	asm volatile ( "ldi	16, %0" :: "i" (RAMEND >> 8) ); -//	asm volatile ( "out 0x3E,16"); -//	asm volatile ( "out %0,16" :: "i" (SPH_REG) );  	asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_HI_ADDR) ); -//	asm volatile ( "ldi	16, 0x00");  	asm volatile ( "ldi	16, %0" :: "i" (RAMEND & 0x0ff) ); -//	asm volatile ( "out 0x3d,16"); -//	asm volatile ( "out %0,16" :: "i" (SPL_REG) );  	asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_LO_ADDR) ); - -  	asm volatile ( "clr __zero_reg__" );									// GCC depends on register r1 set to 0  	asm volatile ( "out %0, __zero_reg__" :: "I" (_SFR_IO_ADDR(SREG)) );	// set SREG to 0 -//	asm volatile ( "rjmp main");											// jump to main()  	asm volatile ( "jmp main");												// jump to main()  } @@ -403,7 +505,7 @@ uint32_t count = 0;  		if (count > MAX_TIME_COUNT)  		{  		unsigned int	data; -		#if (FLASHEND > 0x0FFFF) +		#if (FLASHEND > 0x10000)  			data	=	pgm_read_word_far(0);	//*	get the first word of the user program  		#else  			data	=	pgm_read_word_near(0);	//*	get the first word of the user program @@ -422,6 +524,8 @@ uint32_t count = 0;  	return UART_DATA_REG;  } +//*	for watch dog timer startup +void (*app_start)(void) = 0x0000;  //***************************************************************************** @@ -442,7 +546,36 @@ int main(void)  	unsigned long	boot_timer;  	unsigned int	boot_state;  #ifdef ENABLE_MONITOR -	unsigned int	exPointCntr	=	0; +	unsigned int	exPointCntr		=	0; +	unsigned int	rcvdCharCntr	=	0; +#endif + +	//*	some chips dont set the stack properly +	asm volatile ( ".set __stack, %0" :: "i" (RAMEND) ); +	asm volatile ( "ldi	16, %0" :: "i" (RAMEND >> 8) ); +	asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_HI_ADDR) ); +	asm volatile ( "ldi	16, %0" :: "i" (RAMEND & 0x0ff) ); +	asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_LO_ADDR) ); + +#ifdef _FIX_ISSUE_181_ +	//************************************************************************ +	//*	Dec 29,	2011	<MLS> Issue #181, added watch dog timmer support +	//*	handle the watch dog timer +	uint8_t	mcuStatusReg; +	mcuStatusReg	=	MCUSR; + +	__asm__ __volatile__ ("cli"); +	__asm__ __volatile__ ("wdr"); +	MCUSR	=	0; +	WDTCSR	|=	_BV(WDCE) | _BV(WDE); +	WDTCSR	=	0; +	__asm__ __volatile__ ("sei"); +	// check if WDT generated the reset, if so, go straight to app +	if (mcuStatusReg & _BV(WDRF)) +	{ +		app_start(); +	} +	//************************************************************************  #endif @@ -450,8 +583,9 @@ int main(void)  	boot_state	=	0;  #ifdef BLINK_LED_WHILE_WAITING -	boot_timeout	=	 20000;		//*	should be about 1 second +//	boot_timeout	=	 90000;		//*	should be about 4 seconds  //	boot_timeout	=	170000; +	boot_timeout	=	 20000;		//*	should be about 1 second  #else  	boot_timeout	=	3500000; // 7 seconds , approx 2us per step when optimize "s"  #endif @@ -516,7 +650,7 @@ int main(void)  				boot_state	=	1; // (after ++ -> boot_state=2 bootloader timeout, jump to main 0x00000 )  			}  		#ifdef BLINK_LED_WHILE_WAITING -			if ((boot_timer % 7000) == 0) +			if ((boot_timer % _BLINK_LOOP_COUNT_) == 0)  			{  				//*	toggle the LED  				PROGLED_PORT	^=	(1<<PROGLED_PIN);	// turn LED ON @@ -547,10 +681,13 @@ int main(void)  				{  				//	c	=	recchar();  					c	=	recchar_timeout(); +					  				}  			#ifdef ENABLE_MONITOR -				if (c == '!') +				rcvdCharCntr++; + +				if ((c == '!')  && (rcvdCharCntr < 10))  				{  					exPointCntr++;  					if (exPointCntr == 3) @@ -579,6 +716,11 @@ int main(void)  						break;  					case ST_GET_SEQ_NUM: +					#ifdef _FIX_ISSUE_505_ +						seqNum			=	c; +						msgParseState	=	ST_MSG_SIZE_1; +						checksum		^=	c; +					#else  						if ( (c == 1) || (c == seqNum) )  						{  							seqNum			=	c; @@ -589,6 +731,7 @@ int main(void)  						{  							msgParseState	=	ST_START;  						} +					#endif  						break;  					case ST_MSG_SIZE_1: @@ -655,20 +798,41 @@ int main(void)  							unsigned char signatureIndex	=	msgBuffer[6];  							if ( signatureIndex == 0 ) -								answerByte	=	(SIGNATURE_BYTES >>16) & 0x000000FF; +							{ +								answerByte	=	(SIGNATURE_BYTES >> 16) & 0x000000FF; +							}  							else if ( signatureIndex == 1 ) +							{  								answerByte	=	(SIGNATURE_BYTES >> 8) & 0x000000FF; +							}  							else +							{  								answerByte	=	SIGNATURE_BYTES & 0x000000FF; +							}  						}  						else if ( msgBuffer[4] & 0x50 )  						{ -							answerByte	=	0; //read fuse/lock bits not implemented, return dummy value +						//*	Issue 544: 	stk500v2 bootloader doesn't support reading fuses +						//*	I cant find the docs that say what these are supposed to be but this was figured out by trial and error +						//	answerByte	=	boot_lock_fuse_bits_get(GET_LOW_FUSE_BITS); +						//	answerByte	=	boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS); +						//	answerByte	=	boot_lock_fuse_bits_get(GET_EXTENDED_FUSE_BITS); +							if (msgBuffer[4] == 0x50) +							{ +								answerByte	=	boot_lock_fuse_bits_get(GET_LOW_FUSE_BITS); +							} +							else if (msgBuffer[4] == 0x58) +							{ +								answerByte	=	boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS); +							} +							else +							{ +								answerByte	=	0; +							}  						}  						else  						{  							answerByte	=	0; // for all others command are not implemented, return dummy value for AVRDUDE happy <Worapoht> -	//						flag	=	1; // Remark this line for AVRDUDE <Worapoht>  						}  						if ( !flag )  						{ @@ -804,7 +968,8 @@ int main(void)  				case CMD_CHIP_ERASE_ISP:  					eraseAddress	=	0;  					msgLength		=	2; -					msgBuffer[1]	=	STATUS_CMD_OK; +				//	msgBuffer[1]	=	STATUS_CMD_OK; +					msgBuffer[1]	=	STATUS_CMD_FAILED;	//*	isue 543, return FAILED instead of OK  					break;  				case CMD_LOAD_ADDRESS: @@ -855,23 +1020,17 @@ int main(void)  						}  						else  						{ -						#if (!defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__)  && !defined(__AVR_ATmega2561__)) +							//*	issue 543, this should work, It has not been tested. +							uint16_t ii = address >> 1;  							/* write EEPROM */ -							do { -								EEARL	=	address;			// Setup EEPROM address -								EEARH	=	(address >> 8); -								address++;						// Select next EEPROM byte - -								EEDR	=	*p++;				// get byte from buffer -								EECR	|=	(1<<EEMWE);			// Write data into EEPROM -								EECR	|=	(1<<EEWE); - -								while (EECR & (1<<EEWE));	// Wait for write operation to finish -								size--;						// Decrease number of bytes to write -							} while (size);					// Loop until all bytes written -						#endif +							while (size) { +								eeprom_write_byte((uint8_t*)ii, *p++); +								address+=2;						// Select next EEPROM byte +								ii++; +								size--; +							}  						} -							msgLength	=	2; +						msgLength		=	2;  						msgBuffer[1]	=	STATUS_CMD_OK;  					}  					break; @@ -890,11 +1049,12 @@ int main(void)  							// Read FLASH  							do { -	#if defined(RAMPZ) +						//#if defined(RAMPZ) +						#if (FLASHEND > 0x10000)  								data	=	pgm_read_word_far(address); -	#else +						#else  								data	=	pgm_read_word_near(address); -	#endif +						#endif  								*p++	=	(unsigned char)data;		//LSB  								*p++	=	(unsigned char)(data >> 8);	//MSB  								address	+=	2;							// Select next word in memory @@ -1056,16 +1216,10 @@ unsigned long	gEepromIndex;  #define	true	1  #define	false	0 -#if defined(__AVR_ATmega128__) -	#define	kCPU_NAME	"ATmega128" -#elif defined(__AVR_ATmega1280__) -	#define	kCPU_NAME	"ATmega1280" -#elif defined(__AVR_ATmega1281__) -	#define	kCPU_NAME	"ATmega1281" -#elif defined(__AVR_ATmega2560__) -	#define	kCPU_NAME	"ATmega2560" -#elif defined(__AVR_ATmega2561__) -	#define	kCPU_NAME	"ATmega2561" +#include	"avr_cpunames.h" + +#ifndef _AVR_CPU_NAME_ +	#error cpu name not defined  #endif  #ifdef _VECTORS_SIZE @@ -1077,78 +1231,79 @@ unsigned long	gEepromIndex;  void	PrintDecInt(int theNumber, int digitCnt); -#ifdef kCPU_NAME -	prog_char	gTextMsg_CPU_Name[]			PROGMEM	=	kCPU_NAME; +#ifdef _AVR_CPU_NAME_ +	const char	gTextMsg_CPU_Name[]			PROGMEM	=	_AVR_CPU_NAME_;  #else -	prog_char	gTextMsg_CPU_Name[]			PROGMEM	=	"UNKNOWN"; +	const char	gTextMsg_CPU_Name[]			PROGMEM	=	"UNKNOWN";  #endif -	prog_char	gTextMsg_Explorer[]			PROGMEM	=	"Arduino explorer stk500V2 by MLS"; -	prog_char	gTextMsg_Prompt[]			PROGMEM	=	"Bootloader>"; -	prog_char	gTextMsg_HUH[]				PROGMEM	=	"Huh?"; -	prog_char	gTextMsg_COMPILED_ON[]		PROGMEM	=	"Compiled on  = "; -	prog_char	gTextMsg_CPU_Type[]			PROGMEM	=	"CPU Type     = "; -	prog_char	gTextMsg_AVR_ARCH[]			PROGMEM	=	"__AVR_ARCH__ = "; -	prog_char	gTextMsg_AVR_LIBC[]			PROGMEM	=	"AVR LibC Ver = "; -	prog_char	gTextMsg_GCC_VERSION[]		PROGMEM	=	"GCC Version  = "; -	prog_char	gTextMsg_CPU_SIGNATURE[]	PROGMEM	=	"CPU signature= "; -	prog_char	gTextMsg_FUSE_BYTE_LOW[]	PROGMEM	=	"Low fuse     = "; -	prog_char	gTextMsg_FUSE_BYTE_HIGH[]	PROGMEM	=	"High fuse    = "; -	prog_char	gTextMsg_FUSE_BYTE_EXT[]	PROGMEM	=	"Ext fuse     = "; -	prog_char	gTextMsg_FUSE_BYTE_LOCK[]	PROGMEM	=	"Lock fuse    = "; -	prog_char	gTextMsg_GCC_DATE_STR[]		PROGMEM	=	__DATE__; -	prog_char	gTextMsg_AVR_LIBC_VER_STR[]	PROGMEM	=	__AVR_LIBC_VERSION_STRING__; -	prog_char	gTextMsg_GCC_VERSION_STR[]	PROGMEM	=	__VERSION__; -	prog_char	gTextMsg_VECTOR_HEADER[]	PROGMEM	=	"V#   ADDR   op code     instruction addr   Interrupt"; -	prog_char	gTextMsg_noVector[]			PROGMEM	=	"no vector"; -	prog_char	gTextMsg_rjmp[]				PROGMEM	=	"rjmp  "; -	prog_char	gTextMsg_jmp[]				PROGMEM	=	"jmp "; -	prog_char	gTextMsg_WHAT_PORT[]		PROGMEM	=	"What port:"; -	prog_char	gTextMsg_PortNotSupported[]	PROGMEM	=	"Port not supported"; -	prog_char	gTextMsg_MustBeLetter[]		PROGMEM	=	"Must be a letter"; -	prog_char	gTextMsg_SPACE[]			PROGMEM	=	" "; -	prog_char	gTextMsg_WriteToEEprom[]	PROGMEM	=	"Writting EE"; -	prog_char	gTextMsg_ReadingEEprom[]	PROGMEM	=	"Reading EE"; -	prog_char	gTextMsg_EEPROMerrorCnt[]	PROGMEM	=	"eeprom error count="; -	prog_char	gTextMsg_PORT[]				PROGMEM	=	"PORT"; +	const char	gTextMsg_Explorer[]			PROGMEM	=	"Arduino explorer stk500V2 by MLS"; +	const char	gTextMsg_Prompt[]			PROGMEM	=	"Bootloader>"; +	const char	gTextMsg_HUH[]				PROGMEM	=	"Huh?"; +	const char	gTextMsg_COMPILED_ON[]		PROGMEM	=	"Compiled on = "; +	const char	gTextMsg_CPU_Type[]			PROGMEM	=	"CPU Type    = "; +	const char	gTextMsg_AVR_ARCH[]			PROGMEM	=	"__AVR_ARCH__= "; +	const char	gTextMsg_AVR_LIBC[]			PROGMEM	=	"AVR LibC Ver= "; +	const char	gTextMsg_GCC_VERSION[]		PROGMEM	=	"GCC Version = "; +	const char	gTextMsg_CPU_SIGNATURE[]	PROGMEM	=	"CPU ID      = "; +	const char	gTextMsg_FUSE_BYTE_LOW[]	PROGMEM	=	"Low fuse    = "; +	const char	gTextMsg_FUSE_BYTE_HIGH[]	PROGMEM	=	"High fuse   = "; +	const char	gTextMsg_FUSE_BYTE_EXT[]	PROGMEM	=	"Ext fuse    = "; +	const char	gTextMsg_FUSE_BYTE_LOCK[]	PROGMEM	=	"Lock fuse   = "; +	const char	gTextMsg_GCC_DATE_STR[]		PROGMEM	=	__DATE__; +	const char	gTextMsg_AVR_LIBC_VER_STR[]	PROGMEM	=	__AVR_LIBC_VERSION_STRING__; +	const char	gTextMsg_GCC_VERSION_STR[]	PROGMEM	=	__VERSION__; +	const char	gTextMsg_VECTOR_HEADER[]	PROGMEM	=	"V#   ADDR   op code     instruction addr   Interrupt"; +	const char	gTextMsg_noVector[]			PROGMEM	=	"no vector"; +	const char	gTextMsg_rjmp[]				PROGMEM	=	"rjmp  "; +	const char	gTextMsg_jmp[]				PROGMEM	=	"jmp "; +	const char	gTextMsg_WHAT_PORT[]		PROGMEM	=	"What port:"; +	const char	gTextMsg_PortNotSupported[]	PROGMEM	=	"Port not supported"; +	const char	gTextMsg_MustBeLetter[]		PROGMEM	=	"Must be a letter"; +	const char	gTextMsg_SPACE[]			PROGMEM	=	" "; +	const char	gTextMsg_WriteToEEprom[]	PROGMEM	=	"Writting EE"; +	const char	gTextMsg_ReadingEEprom[]	PROGMEM	=	"Reading EE"; +	const char	gTextMsg_EEPROMerrorCnt[]	PROGMEM	=	"EE err cnt="; +	const char	gTextMsg_PORT[]				PROGMEM	=	"PORT";  //************************************************************************  //*	Help messages -	prog_char	gTextMsg_HELP_MSG_0[]		PROGMEM	=	"0=Zero address ctrs"; -	prog_char	gTextMsg_HELP_MSG_QM[]		PROGMEM	=	"?=CPU stats"; -	prog_char	gTextMsg_HELP_MSG_AT[]		PROGMEM	=	"@=EEPROM test"; -	prog_char	gTextMsg_HELP_MSG_B[]		PROGMEM	=	"B=Blink LED"; -	prog_char	gTextMsg_HELP_MSG_E[]		PROGMEM	=	"E=Dump EEPROM"; -	prog_char	gTextMsg_HELP_MSG_F[]		PROGMEM	=	"F=Dump FLASH"; -	prog_char	gTextMsg_HELP_MSG_H[]		PROGMEM	=	"H=Help"; -	prog_char	gTextMsg_HELP_MSG_L[]		PROGMEM	=	"L=List I/O Ports"; -	prog_char	gTextMsg_HELP_MSG_Q[]		PROGMEM	=	"Q=Quit & jump to user pgm"; -	prog_char	gTextMsg_HELP_MSG_R[]		PROGMEM	=	"R=Dump RAM"; -	prog_char	gTextMsg_HELP_MSG_V[]		PROGMEM	=	"V=show interrupt Vectors"; -	prog_char	gTextMsg_HELP_MSG_Y[]		PROGMEM	=	"Y=Port blink"; - -	prog_char	gTextMsg_END[]				PROGMEM	=	"*"; +	const char	gTextMsg_HELP_MSG_0[]		PROGMEM	=	"0=Zero addr"; +	const char	gTextMsg_HELP_MSG_QM[]		PROGMEM	=	"?=CPU stats"; +	const char	gTextMsg_HELP_MSG_AT[]		PROGMEM	=	"@=EEPROM test"; +	const char	gTextMsg_HELP_MSG_B[]		PROGMEM	=	"B=Blink LED"; +	const char	gTextMsg_HELP_MSG_E[]		PROGMEM	=	"E=Dump EEPROM"; +	const char	gTextMsg_HELP_MSG_F[]		PROGMEM	=	"F=Dump FLASH"; +	const char	gTextMsg_HELP_MSG_H[]		PROGMEM	=	"H=Help"; +	const char	gTextMsg_HELP_MSG_L[]		PROGMEM	=	"L=List I/O Ports"; +//	const char	gTextMsg_HELP_MSG_Q[]		PROGMEM	=	"Q=Quit & jump to user pgm"; +	const char	gTextMsg_HELP_MSG_Q[]		PROGMEM	=	"Q=Quit"; +	const char	gTextMsg_HELP_MSG_R[]		PROGMEM	=	"R=Dump RAM"; +	const char	gTextMsg_HELP_MSG_V[]		PROGMEM	=	"V=show interrupt Vectors"; +	const char	gTextMsg_HELP_MSG_Y[]		PROGMEM	=	"Y=Port blink"; + +	const char	gTextMsg_END[]				PROGMEM	=	"*";  //************************************************************************ -void	PrintFromPROGMEM(void *dataPtr, unsigned char offset) +void	PrintFromPROGMEM(const void *dataPtr, unsigned char offset)  { -uint8_t	ii;  char	theChar; -	ii			=	offset; -	theChar		=	1; +	dataPtr		+=	offset; -	while (theChar != 0) -	{ -		theChar	=	pgm_read_byte_far((uint32_t)dataPtr + ii); +	do { +	#if (FLASHEND > 0x10000) +		theChar	=	pgm_read_byte_far((uint16_t)dataPtr++); +	#else +		theChar	=	pgm_read_byte_near((uint16_t)dataPtr++); +	#endif  		if (theChar != 0)  		{  			sendchar(theChar);  		} -		ii++; -	} +	} while (theChar != 0);  }  //************************************************************************ @@ -1160,7 +1315,7 @@ void	PrintNewLine(void)  //************************************************************************ -void	PrintFromPROGMEMln(void *dataPtr, unsigned char offset) +void	PrintFromPROGMEMln(const void *dataPtr, unsigned char offset)  {  	PrintFromPROGMEM(dataPtr, offset); @@ -1293,46 +1448,6 @@ unsigned char fuseByte;  } -#ifndef sbi -	#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) -#endif - -//************************************************************************ -int analogRead(uint8_t pin) -{ -uint8_t low, high; - -	// set the analog reference (high two bits of ADMUX) and select the -	// channel (low 4 bits).  this also sets ADLAR (left-adjust result) -	// to 0 (the default). -//	ADMUX	=	(analog_reference << 6) | (pin & 0x07); -	ADMUX	=	(1 << 6) | (pin & 0x07); - -#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) -	// the MUX5 bit of ADCSRB selects whether we're reading from channels -	// 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high). -	ADCSRB	=	(ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); -#endif - -	// without a delay, we seem to read from the wrong channel -	//delay(1); - -	// start the conversion -	sbi(ADCSRA, ADSC); - -	// ADSC is cleared when the conversion finishes -	while (bit_is_set(ADCSRA, ADSC)); - -	// we have to read ADCL first; doing so locks both ADCL -	// and ADCH until ADCH is read.  reading ADCL second would -	// cause the results of each conversion to be discarded, -	// as ADCL and ADCH would be locked when it completed. -	low		=	ADCL; -	high	=	ADCH; - -	// combine the two bytes -	return (high << 8) | low; -}  //************************************************************************  static void BlinkLED(void) @@ -1388,11 +1503,15 @@ unsigned char	*ramPtr;  			switch(dumpWhat)  			{  				case kDUMP_FLASH: +				#if (FLASHEND > 0x10000)  					theValue	=	pgm_read_byte_far(myAddressPointer); +				#else +					theValue	=	pgm_read_byte_near(myAddressPointer); +				#endif  					break;  				case kDUMP_EEPROM: -					theValue	=	eeprom_read_byte((void *)myAddressPointer); +					theValue	=	eeprom_read_byte((uint8_t *)(uint16_t)myAddressPointer);  					break;  				case kDUMP_RAM: @@ -1435,7 +1554,11 @@ int		errorCount;  	PrintFromPROGMEMln(gTextMsg_WriteToEEprom, 0);  	PrintNewLine();  	ii			=	0; -	while (((theChar = pgm_read_byte_far(gTextMsg_Explorer + ii)) != '*') && (ii < 512)) +#if (FLASHEND > 0x10000) +	while (((theChar = pgm_read_byte_far(((uint16_t)gTextMsg_Explorer) + ii)) != '*') && (ii < 512)) +#else +	while (((theChar = pgm_read_byte_near(((uint16_t)gTextMsg_Explorer) + ii)) != '*') && (ii < 512)) +#endif  	{  		eeprom_write_byte((uint8_t *)ii, theChar);  		if (theChar == 0) @@ -1456,7 +1579,11 @@ int		errorCount;  	PrintNewLine();  	errorCount	=	0;  	ii			=	0; -	while (((theChar = pgm_read_byte_far(gTextMsg_Explorer + ii)) != '*') && (ii < 512)) +#if (FLASHEND > 0x10000) +	while (((theChar = pgm_read_byte_far((uint16_t)gTextMsg_Explorer + ii)) != '*') && (ii < 512)) +#else +	while (((theChar = pgm_read_byte_near((uint16_t)gTextMsg_Explorer + ii)) != '*') && (ii < 512)) +#endif  	{  		theEEPROMchar	=	eeprom_read_byte((uint8_t *)ii);  		if (theEEPROMchar == 0) @@ -1487,10 +1614,12 @@ int		errorCount;  #if (FLASHEND > 0x08000) -	#include	"avrinterruptnames.h" -	#ifndef _INTERRUPT_NAMES_DEFINED_ -		#warning Interrupt vectors not defined -	#endif +//*	this includes the interrupt names for the monitor portion. There is no longer enough  +//*	memory to include this +//	#include	"avrinterruptnames.h" +//	#ifndef _INTERRUPT_NAMES_DEFINED_ +//		#warning Interrupt vectors not defined +//	#endif  #endif  //************************************************************************ @@ -1534,12 +1663,18 @@ unsigned long	absoluteAddr;  		//*	the AVR is LITTLE ENDIAN, swap the byte order +	#if (FLASHEND > 0x10000)  		byte1	=	pgm_read_byte_far(myMemoryPtr++);  		byte2	=	pgm_read_byte_far(myMemoryPtr++); -		word1	=	(byte2 << 8) + byte1; -  		byte3	=	pgm_read_byte_far(myMemoryPtr++);  		byte4	=	pgm_read_byte_far(myMemoryPtr++); +	#else +		byte1	=	pgm_read_byte_near(myMemoryPtr++); +		byte2	=	pgm_read_byte_near(myMemoryPtr++); +		byte3	=	pgm_read_byte_near(myMemoryPtr++); +		byte4	=	pgm_read_byte_near(myMemoryPtr++); +	#endif +		word1	=	(byte2 << 8) + byte1;  		word2	=	(byte4 << 8) + byte3; @@ -1596,7 +1731,11 @@ unsigned long	absoluteAddr;  	#if defined(_INTERRUPT_NAMES_DEFINED_)  		sendchar(0x20); +	#if (FLASHEND > 0x10000)  		stringPointer	=	pgm_read_word_far(&(gInterruptNameTable[vectorIndex])); +	#else +		stringPointer	=	pgm_read_word_near(&(gInterruptNameTable[vectorIndex])); +	#endif  		PrintFromPROGMEM((char *)stringPointer, 0);  	#endif  		PrintNewLine(); @@ -1895,13 +2034,7 @@ int				ii, jj;  		{  			theChar	=	theChar & 0x5F;  		} -	#if defined( _CEREBOTPLUS_BOARD_ ) -		if (theChar == 0x5F) -		{ -			 -		} -		else -	#endif +  		if (theChar >= 0x20)  		{  			sendchar(theChar); @@ -1979,12 +2112,6 @@ int				ii, jj;  				AVR_PortOutput();  				break; -		#if defined( _CEREBOTPLUS_BOARD_ ) -			case 0x5F: -				//*	do nothing -				break; -	 	#endif -	 	  			default:  				PrintFromPROGMEMln(gTextMsg_HUH, 0);  				break; diff --git a/bootloaders/stk500v2/stk500boot.ppg b/bootloaders/stk500v2/stk500boot.ppg index a8929d7..a8929d7 100755..100644 --- a/bootloaders/stk500v2/stk500boot.ppg +++ b/bootloaders/stk500v2/stk500boot.ppg diff --git a/bootloaders/stk500v2/stk500boot_v2_mega2560.hex b/bootloaders/stk500v2/stk500boot_v2_mega2560.hex index 4f36699..68d2e18 100644 --- a/bootloaders/stk500v2/stk500boot_v2_mega2560.hex +++ b/bootloaders/stk500v2/stk500boot_v2_mega2560.hex @@ -1,513 +1,469 @@  :020000023000CC
 -:10E000000D94F6F20D941FF30D941FF30D941FF36E
 -:10E010000D941FF30D941FF30D941FF30D941FF334
 -:10E020000D941FF30D941FF30D941FF30D941FF324
 -:10E030000D941FF30D941FF30D941FF30D941FF314
 -:10E040000D941FF30D941FF30D941FF30D941FF304
 -:10E050000D941FF30D941FF30D941FF30D941FF3F4
 -:10E060000D941FF30D941FF30D941FF30D941FF3E4
 -:10E070000D941FF30D941FF30D941FF30D941FF3D4
 -:10E080000D941FF30D941FF30D941FF30D941FF3C4
 -:10E090000D941FF30D941FF30D941FF30D941FF3B4
 -:10E0A0000D941FF30D941FF30D941FF30D941FF3A4
 -:10E0B0000D941FF30D941FF30D941FF30D941FF394
 -:10E0C0000D941FF30D941FF30D941FF30D941FF384
 -:10E0D0000D941FF30D941FF30D941FF30D941FF374
 -:10E0E0000D941FF341546D65676132353630004140
 +:10E000000D9489F10D94B2F10D94B2F10D94B2F129
 +:10E010000D94B2F10D94B2F10D94B2F10D94B2F1F0
 +:10E020000D94B2F10D94B2F10D94B2F10D94B2F1E0
 +:10E030000D94B2F10D94B2F10D94B2F10D94B2F1D0
 +:10E040000D94B2F10D94B2F10D94B2F10D94B2F1C0
 +:10E050000D94B2F10D94B2F10D94B2F10D94B2F1B0
 +:10E060000D94B2F10D94B2F10D94B2F10D94B2F1A0
 +:10E070000D94B2F10D94B2F10D94B2F10D94B2F190
 +:10E080000D94B2F10D94B2F10D94B2F10D94B2F180
 +:10E090000D94B2F10D94B2F10D94B2F10D94B2F170
 +:10E0A0000D94B2F10D94B2F10D94B2F10D94B2F160
 +:10E0B0000D94B2F10D94B2F10D94B2F10D94B2F150
 +:10E0C0000D94B2F10D94B2F10D94B2F10D94B2F140
 +:10E0D0000D94B2F10D94B2F10D94B2F10D94B2F130
 +:10E0E0000D94B2F141546D656761323536300041AF
  :10E0F000726475696E6F206578706C6F72657220DE
  :10E1000073746B3530305632206279204D4C530099
  :10E11000426F6F746C6F616465723E004875683F52
 -:10E1200000436F6D70696C6564206F6E20203D2028
 -:10E1300000435055205479706520202020203D2038
 -:10E14000005F5F4156525F415243485F5F203D2070
 -:10E1500000415652204C69624320566572203D2092
 -:10E16000004743432056657273696F6E20203D203F
 -:10E1700000435055207369676E61747572653D2068
 -:10E18000004C6F77206675736520202020203D208D
 -:10E1900000486967682066757365202020203D204F
 -:10E1A00000457874206675736520202020203D206E
 -:10E1B000004C6F636B2066757365202020203D2026
 -:10E1C00000536570202039203230313000312E3636
 -:10E1D0002E3700342E332E33005623202020414486
 -:10E1E00044522020206F7020636F6465202020201F
 -:10E1F00020696E737472756374696F6E20616464F4
 -:10E2000072202020496E74657272757074006E6F92
 -:10E2100020766563746F7200726A6D702020006AE8
 -:10E220006D7020005768617420706F72743A0050EE
 -:10E230006F7274206E6F7420737570706F72746576
 -:10E2400064004D7573742062652061206C65747480
 -:10E2500065720020005772697474696E67204545C5
 -:10E260000052656164696E6720454500656570729E
 -:10E270006F6D206572726F7220636F756E743D00F2
 -:10E28000504F525400303D5A65726F206164647281
 -:10E290006573732063747273003F3D435055207360
 -:10E2A0007461747300403D454550524F4D20746574
 -:10E2B000737400423D426C696E6B204C45440045CE
 -:10E2C0003D44756D7020454550524F4D00463D44CC
 -:10E2D000756D7020464C41534800483D48656C7050
 -:10E2E000004C3D4C69737420492F4F20506F72745D
 -:10E2F0007300513D517569742026206A756D702038
 -:10E30000746F20757365722070676D00523D44759F
 -:10E310006D702052414D00563D73686F7720696ED5
 -:10E320007465727275707420566563746F727300D1
 -:10E33000593D506F727420626C696E6B002A0052F6
 -:10E340004553455400494E543000494E543100491C
 -:10E350004E543200494E543300494E543400494E15
 -:10E36000543500494E543600494E54370050434905
 -:10E370004E5430005043494E5431005043494E549E
 -:10E3800032005744540054494D45523020434F4DBC
 -:10E3900050410054494D45523020434F4D504200AA
 -:10E3A00054494D455230204F56460054494D455230
 -:10E3B0003120434150540054494D45523120434F80
 -:10E3C0004D50410054494D45523120434F4D50422C
 -:10E3D0000054494D45523120434F4D50430054495C
 -:10E3E0004D455231204F56460054494D455232203A
 -:10E3F000434F4D50410054494D45523220434F4DFB
 -:10E4000050420054494D455232204F56460054491F
 -:10E410004D45523320434150540054494D455233E9
 -:10E4200020434F4D50410054494D45523320434FF6
 -:10E430004D50420054494D45523320434F4D5043B7
 -:10E440000054494D455233204F56460054494D45DE
 -:10E45000523420434150540054494D4552342043D6
 -:10E460004F4D50410054494D45523420434F4D507B
 -:10E47000420054494D45523420434F4D50430054BF
 -:10E48000494D455234204F56460054494D4552356A
 -:10E4900020434150540054494D45523520434F4D7F
 -:10E4A00050410054494D45523520434F4D50420094
 -:10E4B00054494D45523520434F4D50430054494D2A
 -:10E4C000455235204F564600555341525430205244
 -:10E4D000580055534152543020554452450055532D
 -:10E4E0004152543020545800555341525431205217
 -:10E4F000580055534152543120554452450055530C
 -:10E5000041525431205458005553415254322052F4
 -:10E5100058005553415254322055445245005553EA
 -:10E5200041525432205458005553415254332052D2
 -:10E5300058005553415254332055445245005553C9
 -:10E5400041525433205458005350492053544300EF
 -:10E5500041444300414E414C4F4720434F4D5000F2
 -:10E560004545205245414459005457490053504DA8
 -:10E57000205245414459002A003FE345E34AE34F16
 -:10E58000E354E359E35EE363E368E36DE374E37B41
 -:10E59000E382E3E9E3F6E303E4ABE3B7E3C4E3D107
 -:10E5A000E3DEE386E393E3A0E348E5C8E4D2E4DEF8
 -:10E5B000E454E550E560E50EE41AE427E434E44170
 -:10E5C000E4E8E4F2E4FEE469E56DE54CE458E46572
 -:10E5D000E472E47FE48AE496E4A3E4B0E4BDE408F2
 -:10E5E000E512E51EE528E532E53EE50011241FBEF3
 -:10E5F000CFEFD1E2DEBFCDBF01E00CBF12E0A0E063
 -:10E60000B2E0EAEDFFEF03E00BBF02C007900D920E
 -:10E61000A030B107D9F712E0A0E0B2E001C01D922E
 -:10E62000AC30B107E1F70F94FBF40D94EBFF01E27E
 -:10E630000EBF0FEF0DBF11241FBE0D94FBF40D9400
 -:10E6400000F020E030E040ED57E005C0FA013197DE
 -:10E65000F1F72F5F3F4F28173907C0F308959C014A
 -:10E66000442737FD4095542FDA01C901860F911DCB
 -:10E67000A11DB11DABBFFC018791882369F0809378
 -:10E68000C6008091C00086FFFCCF8091C0008064EE
 -:10E690008093C0006F5FE8CF08958DE08093C6003F
 -:10E6A0008091C00086FFFCCF8091C0008064809381
 -:10E6B000C0008AE08093C6008091C00086FFFCCF36
 -:10E6C0008091C00080648093C00008950F942FF360
 -:10E6D0000F944DF30895FC019081992359F0909384
 -:10E6E000C6008091C00086FFFCCF8091C00080648E
 -:10E6F0008093C0003196992379F70895282F982F99
 -:10E7000092959F70892F805D8A3308F0895F80938E
 -:10E71000C6008091C00086FFFCCF8091C00080645D
 -:10E720008093C000822F8F70982F905D9A3308F0ED
 -:10E73000995F9093C6008091C00086FFFCCF8091C6
 -:10E74000C00080648093C00008959C01FB01853661
 -:10E7500091051CF46330710594F0C90164E670E022
 -:10E760000F948CFF605D7F4F6093C6008091C00066
 -:10E7700086FFFCCF8091C00080648093C0002B3066
 -:10E78000310514F43297B4F0C90164E670E00F94D7
 -:10E790008CFF6AE070E00F948CFF605D7F4F6093A8
 -:10E7A000C6008091C00086FFFCCF8091C0008064CD
 -:10E7B0008093C000C9016AE070E00F948CFFC0969E
 -:10E7C0008093C6008091C00086FFFCCF8091C0007E
 -:10E7D00080648093C0000895282F277020642093C0
 -:10E7E0007C0020917B0086958695869590E08170CF
 -:10E7F000907033E0880F991F3A95E1F7277F282B17
 -:10E8000020937B0080917A00806480937A008091CD
 -:10E810007A0086FDFCCF2091780040917900942FFA
 -:10E8200080E030E0282B392BC90108951F93182F61
 -:10E8300080E892EE60E00F942FF31093C600809171
 -:10E84000C00086FFFCCF8091C00080648093C00030
 -:10E850000F944DF31F9108952F923F924F925F9224
 -:10E860006F927F928F929F92AF92BF92CF92DF92E0
 -:10E87000EF92FF920F931F93DF93CF93CDB7DEB745
 -:10E8800062970FB6F894DEBF0FBECDBF382E622E52
 -:10E89000CA01DB015C016D01772460E2262E2E01A6
 -:10E8A0000894411C511C8BC081E0A81680E0B8067A
 -:10E8B00081E0C80680E0D80628F0C601AA27BB2759
 -:10E8C0000F947EF3BB27AD2D9C2D8B2D0F947EF3E3
 -:10E8D0008A2D0F947EF32092C6008091C00086FF9F
 -:10E8E000FCCF8091C00080648093C0009DE2909333
 -:10E8F000C6008091C00086FFFCCF8091C00080647C
 -:10E900008093C0002092C6008091C00086FFFCCF9B
 -:10E910008091C00080648093C000198286017501D7
 -:10E9200088249924A1E03A1651F03A1620F0B2E07A
 -:10E930003B1661F409C00BBFF701779007C0C70110
 -:10E940000F94D5FF782E02C0F7017080872D0F94A9
 -:10E950007EF32092C6008091C00086FFFCCF80919C
 -:10E96000C00080648093C000872D8052F401EF7056
 -:10E97000F0708F3520F4E40DF51D708204C0E40DB5
 -:10E98000F51D8EE280830894E11CF11C011D111D10
 -:10E990000894811C911C90E18916910409F0C2CF62
 -:10E9A00080E190E0A0E0B0E0A80EB91ECA1EDB1E18
 -:10E9B000198AC2010F946BF30F944DF36A94662089
 -:10E9C00009F072CF62960FB6F894DEBF0FBECDBFCE
 -:10E9D000CF91DF911F910F91FF90EF90DF90CF903B
 -:10E9E000BF90AF909F908F907F906F905F904F906F
 -:10E9F0003F902F9008952F923F924F925F926F9287
 -:10EA00007F928F929F92AF92BF92CF92DF92EF92BE
 -:10EA1000FF920F931F93DF93CF93CDB7DEB7CD5304
 -:10EA2000D1400FB6F894DEBF0FBECDBF279A2F9A04
 -:10EA30008091C00082608093C00080E18093C40018
 -:10EA400088E18093C1000000EE24FF248701B4E038
 -:10EA5000AB2EB12CCC24DD2424C0C5010197F1F7E5
 -:10EA60000894E11CF11C011D111D21E2E2162EE4A7
 -:10EA7000F20620E0020720E0120718F0A1E0CA2EFB
 -:10EA8000D12CC801B70128E53BE140E050E00F94EC
 -:10EA90009FFF611571058105910519F485B18058B5
 -:10EAA00085B98091C00087FD03C0C114D104A9F2CB
 -:10EAB000A6014F5F5F4FC25EDE4F59834883CE5140
 -:10EAC000D140C25EDE4F68817981CE51D140613044
 -:10EAD000710511F00D946EFFC05DDE4F1982188232
 -:10EAE000C053D14060E0C15DDE4F1882CF52D140AB
 -:10EAF000AA24BB24C05EDE4F188219821A821B82B0
 -:10EB0000C052D140CE5CDE4F188219821A821B821D
 -:10EB1000C253D14080E090E0A0E0B0E0ABBFFC0188
 -:10EB2000A791B691C45CDE4FB983A883CC53D14082
 -:10EB30000D9469FFC25EDE4FE881F981CE51D1406C
 -:10EB4000319709F52091C600C25EDE4F1982188206
 -:10EB5000CE51D14022C02F5F3F4F4F4F5F4F2130EA
 -:10EB6000F2E13F07FAE74F07F0E05F0780F0C45C8F
 -:10EB7000DE4F08811981CC53D1400F5F1F4F19F030
 -:10EB8000EE27FF27099420E030E040E050E080913C
 -:10EB9000C00087FFE0CF2091C600213209F094C663
 -:10EBA0000894A11CB11C33E0A316B10409F08EC671
 -:10EBB00000E010E018C041E24093C6008091C00020
 -:10EBC00086FFFCCF8091C00080648093C0002F5FDF
 -:10EBD0003F4F2931310579F70F944DF30F5F1F4FE8
 -:10EBE0000530110519F020E030E0E5CF1092080261
 -:10EBF0001092090210920A0210920B021092040263
 -:10EC00001092050210920602109207021092000262
 -:10EC10001092010210920202109203028FEE90EE07
 -:10EC200060E00F9466F380E191EE60E00F942FF3C3
 -:10EC30008091C00087FFFCCF9091C600903608F00D
 -:10EC40009F759032B8F09093C6008091C00086FF07
 -:10EC5000FCCF8091C00080648093C00080E28093EC
 -:10EC6000C6008091C00086FFFCCF8091C000806408
 -:10EC70008093C000983409F4DBC19934B8F492341D
 -:10EC800009F45DC1933458F4903319F1903308F4CA
 -:10EC900018C69F33A1F1903409F013C6BDC0953456
 -:10ECA00009F474C1963409F00CC69CC1923509F47C
 -:10ECB0002FC2933538F49C3409F4F9C1913509F029
 -:10ECC00000C61CC2963509F449C2993509F0F9C548
 -:10ECD0009CC485E892EE62E00F9466F31092040201
 -:10ECE000109205021092060210920702109208027A
 -:10ECF0001092090210920A0210920B0217C189E9C0
 -:10ED000092EE62E00F9466F38FEE90EE60E00F9467
 -:10ED100066F381E291EE60E00F942FF381EC91EEC7
 -:10ED200060E00F9466F381E391EE60E00F942FF3BF
 -:10ED300084EE90EE60E00F9466F381E491EE60E083
 -:10ED40000F942FF386E090E061E070E00F94A5F35C
 -:10ED50000F944DF381E691EE60E00F942FF383ED75
 -:10ED600091EE60E00F9466F381E591EE60E00F9420
 -:10ED70002FF38DEC91EE60E00F9466F381E791EE56
 -:10ED800060E00F942FF38EE10F947EF388E90F94E7
 -:10ED90007EF381E00F947EF30F944DF381E891EEC2
 -:10EDA00060E00F942FF319E0E0E0F0E010935700DB
 -:10EDB000E4918E2F0F947EF30F944DF381E991EE41
 -:10EDC00060E00F942FF3E3E0F0E010935700E4913C
 -:10EDD0008E2F0F947EF30F944DF381EA91EE60E055
 -:10EDE0000F942FF3E2E0F0E010935700E4918E2FA0
 -:10EDF0000F947EF30F944DF381EB91EE60E00F944E
 -:10EE00002FF3E1E0F0E0109357001491812F0F945D
 -:10EE10007EF30F944DF307CF85EA92EE62E00F94F4
 -:10EE200066F385E592EE60E00F9466F30F944DF380
 -:10EE300000E010E019C0C8016F2D0F94DDFFFF2026
 -:10EE400031F483E592EE60E00F942FF30BC0F09263
 -:10EE5000C6008091C00086FFFCCF8091C000806416
 -:10EE60008093C0000F5F1F4FC80181519F41AA27A7
 -:10EE700097FDA095BA2FABBFFC01F7905AE2F516AB
 -:10EE800021F062E000301607B1F60F944DF30F94B5
 -:10EE90004DF381E692EE60E00F9466F30F944DF32C
 -:10EEA000CC24DD2400E010E01EC0C8010F94D5FF83
 -:10EEB000F82E882331F483E592EE60E00F942FF36F
 -:10EEC0000BC08093C6008091C00086FFFCCF80916C
 -:10EED000C00080648093C000FE1419F00894C11C27
 -:10EEE000D11C0F5F1F4FC80181519F41AA2797FD79
 -:10EEF000A095BA2FABBFFC01E7907AE2E71621F0AC
 -:10EF000082E00030180789F60F944DF30F944DF30B
 -:10EF10008CE692EE60E00F942FF3C60161E070E0A2
 -:10EF20000F94A5F30F944DF30F944DF3109200023C
 -:10EF300010920102109202021092030274CE83EB2F
 -:10EF400092EE62E00F9466F3279A2F9A16C02F98DC
 -:10EF500080E090E0E0EDF7E03197F1F7019684363C
 -:10EF60009105C1F72F9A80E090E0E0EDF7E031974E
 -:10EF7000F1F7019684369105C1F78091C00087FFB3
 -:10EF8000E6CF8091C00087FFFCCF95C48FEB92EE57
 -:10EF900062E00F9466F3409100025091010260918B
 -:10EFA00002027091030281E020E10F942CF4809121
 -:10EFB000000290910102A0910202B09103028050E0
 -:10EFC0009F4FAF4FBF4F8093000290930102A093D9
 -:10EFD0000202B093030280509041A040B04008F478
 -:10EFE00022CEA4CF8DEC92EE62E00F9466F34091B6
 -:10EFF000040250910502609106027091070280E0C0
 -:10F0000020E10F942CF48091040290910502A091CC
 -:10F010000602B091070280509F4FAF4FBF4F8093C1
 -:10F02000040290930502A0930602B0930702FBCD61
 -:10F030008AED92EE62E00F9466F385E892EE60E06E
 -:10F040000F9466F389E992EE60E00F9466F385EA27
 -:10F0500092EE60E00F9466F383EB92EE60E00F9423
 -:10F0600066F38FEB92EE60E00F9466F38DEC92EE18
 -:10F0700060E00F9466F38AED92EE60E00F9466F321
 -:10F0800081EE92EE60E00F9466F382EF92EE60E024
 -:10F090000F9466F38CE093EE60E00F9466F387E1E3
 -:10F0A00093EE60E00F9466F380E393EEB9CD81EECA
 -:10F0B00092EE62E00F9466F381E40F9416F482E41A
 -:10F0C0000F9416F483E40F9416F484E40F9416F46A
 -:10F0D00085E40F9416F486E40F9416F487E40F94F5
 -:10F0E00016F488E40F9416F48AE40F9416F48BE473
 -:10F0F0000F9416F48CE40F9416F495CD82EF92EEF3
 -:10F1000062E00F9466F399249394AA24BB2445C427
 -:10F110008CE093EE62E00F9466F340910802509108
 -:10F12000090260910A0270910B0282E020E10F94C3
 -:10F130002CF48091080290910902A0910A02B091EA
 -:10F140000B0280509F4FAF4FBF4F809308029093A8
 -:10F150000902A0930A02B0930B0265CD87E193EEFA
 -:10F1600062E00F9466F384EE90EE60E00F9466F335
 -:10F1700089ED91EE60E00F9466F309E715EECC5D42
 -:10F18000DE4F19830883C452D1406624772443019B
 -:10F19000CA5DDE4F19821882C652D140A401930184
 -:10F1A0005695479537952795C85DDE4F2883398357
 -:10F1B0004A835B83C852D140CA5DDE4F4881598182
 -:10F1C000C652D1404F5F5F4FCA5DDE4F59834883BF
 -:10F1D000C652D140CA0162E070E00F94A5F350E23C
 -:10F1E0005093C6008091C00086FFFCCF8091C00084
 -:10F1F00080648093C0006DE26093C6008091C0007F
 -:10F2000086FFFCCF8091C00080648093C00070E2D4
 -:10F210007093C6008091C00086FFFCCF8091C00033
 -:10F2200080648093C000C85DDE4FE880F9800A8169
 -:10F230001B81C852D140BB27A12F902F8F2D0F9437
 -:10F240007EF3C85DDE4F8881C852D1400F947EF3B3
 -:10F2500070E2F72EF092C6008091C00086FFFCCFCE
 -:10F260008091C00080648093C0000DE30093C600CD
 -:10F270008091C00086FFFCCF8091C00080648093A5
 -:10F28000C00010E21093C6008091C00086FFFCCF42
 -:10F290008091C00080648093C0008BBEF3012791F1
 -:10F2A000C45DDE4F2883CC52D140A22EBB24CC2497
 -:10F2B000DD240894611C711C811C911C8BBEF30120
 -:10F2C0008791282E332444245524142D032DF22C09
 -:10F2D000EE24EA0CFB1C0C1D1D1D0894611C711C06
 -:10F2E000811C911C8BBEF3013791C35DDE4F3883C7
 -:10F2F000CD52D1400894611C711C811C911C8BBEA5
 -:10F30000F3014791C25DDE4F4883CE52D1402DEFCD
 -:10F310003FEF4FEF5FEF620E731E841E951E0F943A
 -:10F320007EF330E23093C6008091C00086FFFCCFB0
 -:10F330008091C00080648093C000C45DDE4F8881EE
 -:10F34000CC52D1400F947EF340E24093C6008091AE
 -:10F35000C00086FFFCCF8091C00080648093C00015
 -:10F36000C25DDE4F8881CE52D1400F947EF350E2D1
 -:10F370005093C6008091C00086FFFCCF8091C000F2
 -:10F3800080648093C000C35DDE4F8881CD52D14040
 -:10F390000F947EF360E26093C6008091C00086FF08
 -:10F3A000FCCF8091C00080648093C0007FEFE7169F
 -:10F3B0007FEFF70670E0070770E0170731F48EE083
 -:10F3C00092EE60E00F942FF3DFC0D801C701807088
 -:10F3D000907CA070B0708050904CA040B040D1F5AF
 -:10F3E0002FEF3FE340E050E0E222F3220423152315
 -:10F3F000C85DDE4FA880B980CA80DB80C852D1408A
 -:10F40000AE0CBF1CC01ED11EAA0CBB1CCC1CDD1C2C
 -:10F4100088E192EE60E00F942FF3BB27A12F902F8D
 -:10F420008F2D0F947EF38E2D0F947EF330E2309368
 -:10F43000C6008091C00086FFFCCF8091C000806430
 -:10F440008093C0004EE34093C6008091C00086FFC9
 -:10F45000FCCF87C06EE07EEF80E090E0E622F722EE
 -:10F46000082319237CE0E71674E9F70670E0070724
 -:10F4700070E0170709F088C0C25DDE4F8881CE5268
 -:10F48000D140E82EFF2400E010E0102F0F2DFE2CBD
 -:10F49000EE24C35DDE4F9881CD52D140E90EF11CC0
 -:10F4A000011D111DD601C50181709070A070B07052
 -:10F4B000DC0199278827E80EF91E0A1F1B1F20EF81
 -:10F4C00030E040E050E0A222B322C422D522F1E194
 -:10F4D000AA0CBB1CCC1CDD1CFA95D1F7EA0CFB1C5A
 -:10F4E0000C1D1D1D41E050E060E070E0242235223B
 -:10F4F00046225722E5E1220C331C441C551CEA9598
 -:10F50000D1F7E20CF31C041D151D57016801AA0C6C
 -:10F51000BB1CCC1CDD1C8FE192EE60E00F942FF33E
 -:10F52000C801AA27BB270F947EF3BB27A12F902FDA
 -:10F530008F2D0F947EF38E2D0F947EF350E2509317
 -:10F54000C6008091C00086FFFCCF8091C00080641F
 -:10F550008093C0006EE36093C6008091C00086FF78
 -:10F56000FCCF8091C00080648093C000C601AA27B0
 -:10F57000BB270F947EF3BB27AD2D9C2D8B2D0F94B5
 -:10F580007EF38A2D0F947EF370E27093C600809113
 -:10F59000C00086FFFCCF8091C00080648093C000D3
 -:10F5A000CC5DDE4FE881F981C452D140CF01AA275A
 -:10F5B00097FDA095BA2FABBFFC018791969160E0B3
 -:10F5C0000F942FF30F944DF3CC5DDE4F088119811A
 -:10F5D000C452D1400E5F1F4FCC5DDE4F19830883AC
 -:10F5E000C452D140CA5DDE4F28813981C652D14014
 -:10F5F0002933310509F417CB44E050E060E070E0B6
 -:10F60000640E751E861E971EC9CD80E393EE62E0E0
 -:10F610000F9466F384E292EE60E00F942FF38091F2
 -:10F62000C00087FFFCCF1091C6001F751093C60065
 -:10F630008091C00086FFFCCF8091C00080648093E1
 -:10F64000C0000F944DF3812F81548A3108F036C1E8
 -:10F65000163409F495C0173490F4133409F44EC0ED
 -:10F66000143430F41134F1F0123409F01DC130C0FB
 -:10F67000143409F459C0153409F016C16BC01A349A
 -:10F6800009F4C4C01B3438F4173409F48FC018349B
 -:10F6900009F00AC1A1C01B3409F4D2C01C3409F01E
 -:10F6A00003C1E8C08FEF81B90DC082B1809582B9E6
 -:10F6B00080E090E0E0EDF7E03197F1F70196883CCB
 -:10F6C0009105C1F78091C00087FFEFCF12B8EFC05E
 -:10F6D0008FEF84B90DC085B1809585B980E090E049
 -:10F6E000E0EDF7E03197F1F70196883C9105C1F71D
 -:10F6F0008091C00087FFEFCF15B8D9C08FEF87B9D1
 -:10F700000DC088B1809588B980E090E0E0EDF7E029
 -:10F710003197F1F70196883C9105C1F78091C000BF
 -:10F7200087FFEFCF18B8C3C08FEF8AB90DC08BB178
 -:10F7300080958BB980E090E0E0EDF7E03197F1F74C
 -:10F740000196883C9105C1F78091C00087FFEFCFFB
 -:10F750001BB8ADC08FEF8DB90DC08EB180958EB93D
 -:10F7600080E090E0E0EDF7E03197F1F70196883C1A
 -:10F770009105C1F78091C00087FFEFCF1EB897C0F9
 -:10F780008FEF80BB0DC081B3809581BB80E090E09E
 -:10F79000E0EDF7E03197F1F70196883C9105C1F76C
 -:10F7A0008091C00087FFEFCF11BA81C08FEF83BB7C
 -:10F7B0000DC084B3809584BB80E090E0E0EDF7E07D
 -:10F7C0003197F1F70196883C9105C1F78091C0000F
 -:10F7D00087FFEFCF14BA6BC08FEF809301010FC08A
 -:10F7E0008091020180958093020180E090E0E0ED3D
 -:10F7F000F7E03197F1F70196883C9105C1F78091C8
 -:10F80000C00087FFEDCF1092020151C08FEF8093AF
 -:10F8100004010FC08091050180958093050180E06F
 -:10F8200090E0E0EDF7E03197F1F70196883C910523
 -:10F83000C1F78091C00087FFEDCF1092050137C05E
 -:10F840008FEF809307010FC080910801809580930E
 -:10F85000080180E090E0E0EDF7E03197F1F70196E4
 -:10F86000883C9105C1F78091C00087FFEDCF1092D1
 -:10F8700008011DC08FEF80930A010FC080910B011A
 -:10F88000809580930B0180E090E0E0EDF7E0319708
 -:10F89000F1F70196883C9105C1F78091C00087FF80
 -:10F8A000EDCF10920B0103C08FE292EEB9C98091A7
 -:10F8B000C00087FFFCCF8091C600B5C982E492EEFC
 -:10F8C000AFC98CE191EEACC9AA24BB24933061F19D
 -:10F8D000943028F4913089F0923008F508C09530C2
 -:10F8E000B1F1953040F1963009F053C04EC02B3144
 -:10F8F00009F020C991E06BE11DC9213041F0C15DE3
 -:10F90000DE4F5881CF52D140251709F002C362273C
 -:10F91000C15DDE4F2883CF52D14092E00BC9B22F98
 -:10F92000A0E0622793E006C9822F90E0A82BB92BB4
 -:10F93000622794E0FFC82E3009F0EBC2622795E001
 -:10F94000C05DDE4F19821882C053D140F3C8E1E098
 -:10F95000F0E0EC0FFD1FC05DDE4FE880F980C05382
 -:10F96000D140EE0DFF1D208387010F5F1F4FC05D4B
 -:10F97000DE4F19830883C053D14062270A171B0743
 -:10F9800009F0D8C8D80196E0D5C8261709F0C1C239
 -:10F9900003C0973009F0CEC899248981833109F4D6
 -:10F9A000FCC08431C8F4863009F4C2C0873050F4FA
 -:10F9B000823009F4F0C0833009F458C0813009F076
 -:10F9C0000AC23EC0813109F462C0823108F0A6C08B
 -:10F9D000803109F000C2DFC0883109F472C089317A
 -:10F9E00050F4853109F4D9C0853108F477C18631E6
 -:10F9F00009F0F1C173C18A3109F457C08A3108F4A2
 -:10FA00007CC08B3109F446C08D3109F0E4C18D8191
 -:10FA1000803311F090E00AC08F81882311F49EE1B9
 -:10FA200005C0813011F091E001C098E91A821B8273
 -:10FA30008D818C831D829E831F8227E030E0CFC1A1
 -:10FA40001A8288E08B8381E48C8386E58D8382E54E
 -:10FA50008E8389E48F8383E5888780E589878FE5B6
 -:10FA60008A8782E38B872BE030E0B9C18A818139B4
 -:10FA700041F0823941F0803911F48FE005C080E017
 -:10FA800003C082E001C08AE01A828B8344C09924BB
 -:10FA9000939481C08D81882311F48EE12CC0813034
 -:10FAA00011F081E028C088E926C01A82E1E0F0E088
 -:10FAB00089E08093570084918B831C8224E030E09E
 -:10FAC0008EC18B81803589F48C81883039F4E2E0F5
 -:10FAD000F0E089E08093570084910DC0E0E0F0E011
 -:10FAE00089E080935700849106C0E3E0F0E089E06C
 -:10FAF0008093570084911A82DFCF8D81836C99E0C7
 -:10FB0000E1E0F0E0082E90935700E89507B600FC7E
 -:10FB1000FDCF1A821B8223E030E061C11A82CE5CE5
 -:10FB2000DE4F188219821A821B82C253D14055C1FE
 -:10FB30008A8190E0A0E0B0E0582F442733272227A5
 -:10FB40008B8190E0A0E0B0E0DC0199278827282B8A
 -:10FB5000392B4A2B5B2B8D8190E0A0E0B0E0282B65
 -:10FB6000392B4A2B5B2B8C8190E0A0E0B0E0BA2FC0
 -:10FB7000A92F982F8827282B392B4A2B5B2B220F54
 -:10FB8000331F441F551FC05EDE4F288339834A83CD
 -:10FB90005B83C052D1401A8220C19A812B8183316C
 -:10FBA00049F0C05EDE4F488159816A817B81C05235
 -:10FBB000D1408AC0CE5CDE4F488159816A817B8109
 -:10FBC000C253D140403080EC580783E0680780E0A2
 -:10FBD0007807F0F483E0FA0160935B0080935700AC
 -:10FBE000E89507B600FCFDCFCE5CDE4F4881598119
 -:10FBF0006A817B81C253D14040505F4F6F4F7F4F2E
 -:10FC0000CE5CDE4F488359836A837B83C253D140E5
 -:10FC1000C95CDE4F9883C753D140CA5CDE4F18825F
 -:10FC2000C653D140022F10E0CA5CDE4F6881798153
 -:10FC3000C653D140062B172BC05EDE4F4881598139
 -:10FC40006A817B81C052D140DE011B9631E08C91EC
 -:10FC500011962C9111971296C75CDE4F2883C953D9
 -:10FC6000D140C85CDE4F1882C853D14090E0C85CD8
 -:10FC7000DE4FE881F981C853D1408E2B9F2B0C01B8
 -:10FC8000FA0160935B0030935700E89511244E5FB2
 -:10FC90005F4F6F4F7F4F02501040C9F685E0C05E46
 -:10FCA000DE4FE880F9800A811B81C052D140F70104
 -:10FCB00000935B0080935700E89507B600FCFDCFEA
 -:10FCC00081E180935700E8951A82C05EDE4F488339
 -:10FCD00059836A837B83C052D1407FC0FA80C55C60
 -:10FCE000DE4FF882CB53D140C65CDE4F1882CA5338
 -:10FCF000D1408B81C82EDD24C65CDE4F088119817E
 -:10FD0000CA53D140C02AD12A1A828981BE016D5FAF
 -:10FD10007F4F843121F59601C05EDE4FE880F98087
 -:10FD20000A811B81C052D1400BBFF7018791969188
 -:10FD3000DB018C9311969C936E5F7F4FD801C701B6
 -:10FD40000296A11DB11DC05EDE4F88839983AA83F0
 -:10FD5000BB83C052D14022503040F1F636C0C05E65
 -:10FD6000DE4F288139814A815B81C052D14008949D
 -:10FD7000C108D108760100E010E00894C11CD11C34
 -:10FD80000894E11CF11C011D111DE20EF31E041F5D
 -:10FD9000151F21BDBB27A52F942F832F82BD2F5F59
 -:10FDA0003F4F4F4F5F4FF89A80B5DB018D93BD01F8
 -:10FDB0002E153F054007510761F7C05EDE4F2883CF
 -:10FDC00039834A835B83C052D14096012D5F3F4FF8
 -:10FDD000FB01108204C080EC8A8322E030E08BE1DA
 -:10FDE0008093C6008091C00086FFFCCF8091C00048
 -:10FDF00080648093C000C15DDE4FF881CF52D14056
 -:10FE0000F093C6008091C00086FFFCCF8091C000B7
 -:10FE100080648093C000432F3093C6008091C0005F
 -:10FE200086FFFCCF8091C00080648093C000922F39
 -:10FE30002093C6008091C00086FFFCCF8091C00057
 -:10FE400080648093C0008EE08093C6008091C000E3
 -:10FE500086FFFCCF8091C00080648093C00065E184
 -:10FE6000C15DDE4FE880CF52D1406E2569276427FF
 -:10FE7000FE01319610C090819093C6008091C00021
 -:10FE800086FFFCCF31968091C00080648093C000D3
 -:10FE90006927215030402115310569F76093C6006C
 -:10FEA0008091C00086FFFCCF8091C0008064809369
 -:10FEB000C00085B1805885B9992081F4C15DDE4FBD
 -:10FEC0000881CF52D1400F5FC15DDE4F0883CF5212
 -:10FED000D14090E0A0E0B0E00D949AF527982F98DB
 -:10FEE00080E090E020ED37E0F9013197F1F70196DD
 -:10FEF00084369105C9F700008091C0008D7F809302
 -:10FF0000C00081E180935700E895EE27FF27099410
 -:10FF1000FFCF90E00D949AF597FB092E07260AD0A3
 -:10FF200077FD04D02ED006D000201AF4709561958C
 -:10FF30007F4F0895F6F7909581959F4F0895A1E220
 -:10FF40001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F53
 -:10FF5000FF1FA217B307E407F50720F0A21BB30B9E
 -:10FF6000E40BF50B661F771F881F991F1A9469F71A
 -:10FF700060957095809590959B01AC01BD01CF0176
 -:10FF80000895AA1BBB1B51E107C0AA1FBB1FA617E0
 -:10FF9000B70710F0A61BB70B881F991F5A95A9F732
 -:10FFA00080959095BC01CD010895F999FECF92BD41
 -:10FFB00081BDF89A992780B50895262FF999FECF2B
 -:10FFC0001FBA92BD81BD20BD0FB6F894FA9AF99A76
 -:0AFFD0000FBE01960895F894FFCFCC
 +:10E1200000436F6D70696C6564206F6E203D200048
 +:10E130004350552054797065202020203D20005FF9
 +:10E140005F4156525F415243485F5F3D2000415658
 +:10E1500052204C696243205665723D20004743437C
 +:10E160002056657273696F6E203D20004350552024
 +:10E1700049442020202020203D20004C6F7720663D
 +:10E18000757365202020203D20004869676820665F
 +:10E190007573652020203D200045787420667573D6
 +:10E1A00065202020203D20004C6F636B2066757336
 +:10E1B000652020203D20004D617220203720323024
 +:10E1C000313300312E362E3800342E332E350056A2
 +:10E1D00023202020414444522020206F7020636F70
 +:10E1E00064652020202020696E73747275637469E1
 +:10E1F0006F6E2061646472202020496E74657272B3
 +:10E20000757074006E6F20766563746F7200726A49
 +:10E210006D702020006A6D70200057686174207056
 +:10E220006F72743A00506F7274206E6F7420737541
 +:10E2300070706F72746564004D7573742062652030
 +:10E2400061206C6574746572002000577269747483
 +:10E25000696E672045450052656164696E672045B7
 +:10E26000450045452065727220636E743D00504F35
 +:10E27000525400303D5A65726F2061646472003FF1
 +:10E280003D43505520737461747300403D454550C3
 +:10E29000524F4D207465737400423D426C696E6B41
 +:10E2A000204C454400453D44756D70204545505215
 +:10E2B0004F4D00463D44756D7020464C415348001B
 +:10E2C000483D48656C70004C3D4C69737420492F83
 +:10E2D0004F20506F72747300513D51756974005234
 +:10E2E0003D44756D702052414D00563D73686F7707
 +:10E2F00020696E7465727275707420566563746FF0
 +:10E30000727300593D506F727420626C696E6B00BD
 +:10E310002A0011241FBECFEFD1E2DEBFCDBF01E046
 +:10E320000CBF12E0A0E0B2E0EEE1FDEF03E00BBFB6
 +:10E3300002C007900D92A030B107D9F712E0A0E01B
 +:10E34000B2E001C01D92AE30B107E1F70F9460F367
 +:10E350000D948DFE01E20EBF0FEF0DBF11241FBE05
 +:10E360000D9460F30D9400F020E030E040ED57E0B4
 +:10E3700005C0FA013197F1F72F5F3F4F2817390792
 +:10E38000C0F308959C01260F311DC901A0E0B0E043
 +:10E390002F5F3F4FABBFFC018791882361F08093D3
 +:10E3A000C6008091C00086FFFCCF8091C0008064D1
 +:10E3B0008093C000EACF08958DE08093C6008091DD
 +:10E3C000C00086FFFCCF8091C00080648093C000B5
 +:10E3D0008AE08093C6008091C00086FFFCCF8091C8
 +:10E3E000C00080648093C00008950F94C2F10F9420
 +:10E3F000DCF10895FC019081992359F09093C600B7
 +:10E400008091C00086FFFCCF8091C0008064809323
 +:10E41000C0003196992379F70895282F982F929567
 +:10E420009F70892F805D8A3308F0895F8093C600D2
 +:10E430008091C00086FFFCCF8091C00080648093F3
 +:10E44000C000822F8F70982F905D9A3308F0995FEB
 +:10E450009093C6008091C00086FFFCCF8091C000E1
 +:10E4600080648093C00008959C01FB01853691056E
 +:10E470001CF46330710594F0C90164E670E00F94F8
 +:10E480002EFE605D7F4F6093C6008091C00086FFC6
 +:10E49000FCCF8091C00080648093C0002B30310598
 +:10E4A00014F43297B4F0C90164E670E00F942EFEC4
 +:10E4B0006AE070E00F942EFE605D7F4F6093C600AF
 +:10E4C0008091C00086FFFCCF8091C0008064809363
 +:10E4D000C000C9016AE070E00F942EFEC0968093E0
 +:10E4E000C6008091C00086FFFCCF8091C000806490
 +:10E4F0008093C00008951F93182F8EE692EE60E07F
 +:10E500000F94C2F11093C6008091C00086FFFCCF2B
 +:10E510008091C00080648093C0000F94DCF11F9153
 +:10E5200008952F923F924F925F926F927F928F92B7
 +:10E530009F92AF92BF92CF92DF92EF92FF920F9392
 +:10E540001F93DF93CF93CDB7DEB762970FB6F894E2
 +:10E55000DEBF0FBECDBF382E622ECA01DB015C01CB
 +:10E560006D01772420E2222E2E010894411C511CBB
 +:10E570008BC081E0A81680E0B80681E0C80680E084
 +:10E58000D80628F0C601AA27BB270F940DF2BB2797
 +:10E59000AD2D9C2D8B2D0F940DF28A2D0F940DF225
 +:10E5A0002092C6008091C00086FFFCCF8091C00001
 +:10E5B00080648093C0009DE29093C6008091C0006B
 +:10E5C00086FFFCCF8091C00080648093C0002092C1
 +:10E5D000C6008091C00086FFFCCF8091C00080649F
 +:10E5E0008093C00019828601750188249924A1E0D6
 +:10E5F0003A1651F03A1620F0B2E03B1661F409C029
 +:10E600000BBFF701779007C0C7010F9477FE782EF4
 +:10E6100002C0F7017080872D0F940DF22092C60082
 +:10E620008091C00086FFFCCF8091C0008064809301
 +:10E63000C000872D8052F401EF70F0708F3520F408
 +:10E64000E40DF51D708204C0E40DF51D8EE280839B
 +:10E650000894E11CF11C011D111D0894811C911CE2
 +:10E6600090E18916910409F0C2CF80E190E0A0E02A
 +:10E67000B0E0A80EB91ECA1EDB1E198AC2010F9493
 +:10E68000FAF10F94DCF16A94662009F072CF629679
 +:10E690000FB6F894DEBF0FBECDBFCF91DF911F91B3
 +:10E6A0000F91FF90EF90DF90CF90BF90AF909F9031
 +:10E6B0008F907F906F905F904F903F902F90089534
 +:10E6C0002F923F924F925F926F927F928F929F9282
 +:10E6D000AF92BF92CF92DF92EF92FF920F931F9370
 +:10E6E000DF93CF93CDB7DEB7CD53D1400FB6F894BB
 +:10E6F000DEBF0FBECDBF01E20EBF0FEF0DBF94B75F
 +:10E70000F894A89514BE80916000886180936000A1
 +:10E7100010926000789493FF05C0E0910002F091A0
 +:10E7200001021995279A2F9A8091C00082608093E8
 +:10E73000C00080E18093C40088E18093C1000000A4
 +:10E74000EE24FF24870144E0A42EB12CCC24DD2448
 +:10E7500024C0C5010197F1F70894E11CF11C011DCB
 +:10E76000111D21E2E2162EE4F20620E0020720E06D
 +:10E77000120718F031E0C32ED12CC801B70127ECE5
 +:10E780003BE140E050E00F9441FE611571058105C9
 +:10E79000910519F485B1805885B98091C00087FD35
 +:10E7A00003C0C114D104A9F2A6014F5F5F4FC25E3E
 +:10E7B000DE4F59834883CE51D140C25EDE4F8881FF
 +:10E7C0009981CE51D140019711F00D9410FEC05D9A
 +:10E7D000DE4F19821882C053D14060E0C15DDE4F28
 +:10E7E0001882CF52D14088249924C35DDE4F19820C
 +:10E7F0001882CD52D140C05EDE4F188219821A8233
 +:10E800001B82C052D140CE5CDE4F188219821A8220
 +:10E810001B82C253D140EE24FF2487010BBFF701B6
 +:10E8200007911691C45CDE4F19830883CC53D14005
 +:10E830000D940BFEC25EDE4F28813981CE51D1404E
 +:10E840002130310509F52091C600C25EDE4F1982E4
 +:10E850001882CE51D14022C02F5F3F4F4F4F5F4FA4
 +:10E86000213082E138078AE7480780E0580780F0C6
 +:10E87000C45CDE4FE881F981CC53D140EF5FFF4F9C
 +:10E8800019F0EE27FF27099420E030E040E050E047
 +:10E890008091C00087FFE0CF2091C600C35DDE4FAE
 +:10E8A00048815981CD52D1404F5F5F4FC35DDE4FEC
 +:10E8B00059834883CD52D140213209F063C64A3092
 +:10E8C000510508F05FC60894811C911C53E0851621
 +:10E8D000910409F059C600E010E018C081E280936D
 +:10E8E000C6008091C00086FFFCCF8091C00080648C
 +:10E8F0008093C0002F5F3F4F2931310579F70F9486
 +:10E90000DCF10F5F1F4F0530110519F020E030E0FA
 +:10E91000E5CF10920A0210920B0210920C02109294
 +:10E920000D02109206021092070210920802109235
 +:10E930000902109202021092030210920402109235
 +:10E9400005028FEE90EE60E00F94F5F180E191EE1C
 +:10E9500060E00F94C2F18091C00087FFFCCF9091DE
 +:10E96000C600903608F09F759032B8F09093C600BC
 +:10E970008091C00086FFFCCF8091C00080648093AE
 +:10E98000C000A0E2A093C6008091C00086FFFCCF2B
 +:10E990008091C00080648093C000983409F4D7C18E
 +:10E9A0009934B8F4923409F459C1933458F490333B
 +:10E9B00019F1903308F4E3C59F33A1F1903409F0C5
 +:10E9C000DEC5BDC0953409F470C1963409F0D7C5D1
 +:10E9D00098C1923509F42BC2933538F49C3409F46C
 +:10E9E000F5C1913509F0CBC518C2963509F445C279
 +:10E9F000993509F0C4C567C483E792EE62E00F94CD
 +:10EA0000F5F110920602109207021092080210927D
 +:10EA1000090210920A0210920B0210920C0210923C
 +:10EA20000D0213C18FE792EE62E00F94F5F18FEEC5
 +:10EA300090EE60E00F94F5F181E291EE60E00F94CA
 +:10EA4000C2F187EB91EE60E00F94F5F180E391EE77
 +:10EA500060E00F94C2F184EE90EE60E00F94F5F167
 +:10EA60008FE391EE60E00F94C2F186E090E061E008
 +:10EA700070E00F9434F20F94DCF18DE591EE60E0DC
 +:10EA80000F94C2F189EC91EE60E00F94F5F18EE401
 +:10EA900091EE60E00F94C2F183EC91EE60E00F9490
 +:10EAA000F5F18CE691EE60E00F94C2F18EE10F94E7
 +:10EAB0000DF288E90F940DF281E00F940DF20F949E
 +:10EAC000DCF18BE791EE60E00F94C2F119E0E0E039
 +:10EAD000F0E010935700E4918E2F0F940DF20F94F5
 +:10EAE000DCF18AE891EE60E00F94C2F1E3E0F0E03F
 +:10EAF00010935700E4918E2F0F940DF20F94DCF1D8
 +:10EB000089E991EE60E00F94C2F1E2E0F0E0109349
 +:10EB10005700E4918E2F0F940DF20F94DCF188EAE8
 +:10EB200091EE60E00F94C2F1E1E0F0E01093570045
 +:10EB30001491812F0F940DF20F94DCF107CF8BE825
 +:10EB400092EE62E00F94F5F18BE492EE60E00F94A8
 +:10EB5000F5F10F94DCF100E010E019C0C8016F2D51
 +:10EB60000F947FFEFF2031F489E492EE60E00F9471
 +:10EB7000C2F10BC0F092C6008091C00086FFFCCFAE
 +:10EB80008091C00080648093C0000F5F1F4FC80158
 +:10EB900081519F41A0E0B0E0ABBFFC01F790BAE229
 +:10EBA000FB1621F0E2E000301E07C1F60F94DCF105
 +:10EBB0000F94DCF187E592EE60E00F94F5F10F948D
 +:10EBC000DCF1CC24DD2400E010E01EC0C8010F946D
 +:10EBD00077FEF82E882331F489E492EE60E00F94FA
 +:10EBE000C2F10BC08093C6008091C00086FFFCCFAD
 +:10EBF0008091C00080648093C000FE1419F00894D6
 +:10EC0000C11CD11C0F5F1F4FC80181519F41A0E063
 +:10EC1000B0E0ABBFFC01E790FAE2EF1621F022E092
 +:10EC20000030120799F60F94DCF10F94DCF182E6C4
 +:10EC300092EE60E00F94C2F1C60161E070E00F94C3
 +:10EC400034F20F94DCF10F94DCF110920202109276
 +:10EC50000302109204021092050278CE89E992EE26
 +:10EC600062E00F94F5F1279A2F9A16C02F9880E052
 +:10EC700090E0E0EDF7E03197F1F7019684369105E9
 +:10EC8000C1F72F9A80E090E0E0EDF7E03197F1F7DF
 +:10EC9000019684369105C1F78091C00087FFE6CFC9
 +:10ECA0008091C00087FFFCCF64C485EA92EE62E0E9
 +:10ECB0000F94F5F140910202509103026091040219
 +:10ECC0007091050281E020E10F9491F2809102029F
 +:10ECD00090910302A0910402B091050280509F4FD1
 +:10ECE000AF4FBF4F8093020290930302A0930402A0
 +:10ECF000B093050280509041A040B04008F426CE69
 +:10ED0000A4CF83EB92EE62E00F94F5F140910602FE
 +:10ED100050910702609108027091090280E020E1A1
 +:10ED20000F9491F28091060290910702A09108023F
 +:10ED3000B091090280509F4FAF4FBF4F80930602A2
 +:10ED400090930702A0930802B0930902FFCD80ECD4
 +:10ED500092EE62E00F94F5F183E792EE60E00F949B
 +:10ED6000F5F18FE792EE60E00F94F5F18BE892EE0B
 +:10ED700060E00F94F5F189E992EE60E00F94F5F10F
 +:10ED800085EA92EE60E00F94F5F183EB92EE60E09D
 +:10ED90000F94F5F180EC92EE60E00F94F5F187ECC2
 +:10EDA00092EE60E00F94F5F188ED92EE60E00F9442
 +:10EDB000F5F18FED92EE60E00F94F5F18AEE92EEB0
 +:10EDC00060E00F94F5F183E093EEBDCD87EC92EE19
 +:10EDD00062E00F94F5F181E40F947BF282E40F94EA
 +:10EDE0007BF283E40F947BF284E40F947BF285E45E
 +:10EDF0000F947BF286E40F947BF287E40F947BF20E
 +:10EE000088E40F947BF28AE40F947BF28BE40F94F6
 +:10EE10007BF28CE40F947BF299CD88ED92EE62E068
 +:10EE20000F94F5F1772473948824992409C48FED05
 +:10EE300092EE62E00F94F5F140910A0250910B02BC
 +:10EE400060910C0270910D0282E020E10F9491F22A
 +:10EE500080910A0290910B02A0910C02B0910D02D8
 +:10EE600080509F4FAF4FBF4F80930A0290930B0289
 +:10EE7000A0930C02B0930D0269CD8AEE92EE62E08F
 +:10EE80000F94F5F184EE90EE60E00F94F5F18FECC5
 +:10EE900091EE60E00F94F5F1662477244301CC5D98
 +:10EEA000DE4F19821882C452D140D401C301B695F5
 +:10EEB000A79597958795CA5DDE4F88839983AA8326
 +:10EEC000BB83C652D140CC5DDE4FA881B981C4520C
 +:10EED000D1401196CC5DDE4FB983A883C452D14096
 +:10EEE000CD0162E070E00F9434F2B0E2B093C6005E
 +:10EEF0008091C00086FFFCCF8091C0008064809329
 +:10EF0000C000EDE2E093C6008091C00086FFFCCF18
 +:10EF10008091C00080648093C000F0E2F093C6004E
 +:10EF20008091C00086FFFCCF8091C00080648093F8
 +:10EF3000C000CA5DDE4FE880F9800A811B81C6529D
 +:10EF4000D140BB27A12F902F8F2D0F940DF2CA5DBA
 +:10EF5000DE4F8881C652D1400F940DF2B0E2FB2EF5
 +:10EF6000F092C6008091C00086FFFCCF8091C00067
 +:10EF700080648093C0000DE30093C6008091C000C0
 +:10EF800086FFFCCF8091C00080648093C00010E2B7
 +:10EF90001093C6008091C00086FFFCCF8091C00016
 +:10EFA00080648093C0008BBEF3012791C65DDE4F65
 +:10EFB0002883CA52D140A22EBB24CC24DD2408943D
 +:10EFC000611C711C811C911C8BBEF3018791282E42
 +:10EFD0003324442455240894611C711C811C911C09
 +:10EFE0008BBEF3013791C55DDE4F3883CB52D140E4
 +:10EFF0000894611C711C811C911C8BBEF30147910C
 +:10F00000C45DDE4F4883CC52D140ADEFEA2EAFEF66
 +:10F01000FA2EAFEF0A2FAFEF1A2F6E0C7F1C801E57
 +:10F02000911E142D032DF22CEE24EA0CFB1C0C1D5A
 +:10F030001D1D0F940DF220E22093C6008091C000A8
 +:10F0400086FFFCCF8091C00080648093C000C65DC5
 +:10F05000DE4F8881CA52D1400F940DF230E23093D6
 +:10F06000C6008091C00086FFFCCF8091C000806404
 +:10F070008093C000C45DDE4F8881CC52D1400F9494
 +:10F080000DF240E24093C6008091C00086FFFCCFA5
 +:10F090008091C00080648093C000C55DDE4F888190
 +:10F0A000CB52D1400F940DF250E25093C6008091A4
 +:10F0B000C00086FFFCCF8091C00080648093C000B8
 +:10F0C0008FEFE8168FEFF80680E0080780E018075A
 +:10F0D00031F484E092EE60E00F94C2F1DFC0D80119
 +:10F0E000C7018070907CA070B0708050904CA040A0
 +:10F0F000B040D1F52FEF3FE340E050E0E222F322B1
 +:10F1000004231523CA5DDE4FA880B980CA80DB8046
 +:10F11000C652D140AE0CBF1CC01ED11EAA0CBB1CD7
 +:10F12000CC1CDD1C8EE092EE60E00F94C2F1BB2798
 +:10F13000A12F902F8F2D0F940DF28E2D0F940DF285
 +:10F1400030E23093C6008091C00086FFFCCF8091F2
 +:10F15000C00080648093C0004EE34093C60080915D
 +:10F16000C00086FFFCCF87C08EE09EEFA0E0B0E03D
 +:10F17000E822F9220A231B239CE0E91694E9F90608
 +:10F1800090E0090790E0190709F088C0C45DDE4FE0
 +:10F19000A881CC52D140EA2EFF2400E010E0102FCD
 +:10F1A0000F2DFE2CEE24C55DDE4FB881CB52D14031
 +:10F1B000EB0EF11C011D111DD601C501817090706F
 +:10F1C000A070B070DC0199278827E80EF91E0A1F8D
 +:10F1D0001B1F20EF30E040E050E0A222B322C42207
 +:10F1E000D52241E1AA0CBB1CCC1CDD1C4A95D1F7F1
 +:10F1F000EA0CFB1C0C1D1D1D81E090E0A0E0B0E0BE
 +:10F20000282239224A225B2235E1220C331C441C7D
 +:10F21000551C3A95D1F7E20CF31C041D151D57013E
 +:10F220006801AA0CBB1CCC1CDD1C85E192EE60E0E1
 +:10F230000F94C2F1C801AA27BB270F940DF2BB2778
 +:10F24000A12F902F8F2D0F940DF28E2D0F940DF274
 +:10F2500090E29093C6008091C00086FFFCCF809121
 +:10F26000C00080648093C000AEE3A093C60080918C
 +:10F27000C00086FFFCCF8091C00080648093C000F6
 +:10F28000C601AA27BB270F940DF2BB27AD2D9C2DDD
 +:10F290008B2D0F940DF28A2D0F940DF20F94DCF14B
 +:10F2A000CC5DDE4FE881F981C452D140F99709F471
 +:10F2B0004DCBF4E0EF2EF12C012D112D6E0C7F1CA7
 +:10F2C000801E911EF2CD83E093EE62E00F94F5F183
 +:10F2D0008AE192EE60E00F94C2F18091C00087FF56
 +:10F2E000FCCF1091C6001F751093C6008091C0001E
 +:10F2F00086FFFCCF8091C00080648093C0000F9493
 +:10F30000DCF1812F81548A3108F036C1163409F4BA
 +:10F3100095C0173490F4133409F44EC0143430F40B
 +:10F320001134F1F0123409F01DC130C0143409F465
 +:10F3300059C0153409F016C16BC01A3409F4C4C0A1
 +:10F340001B3438F4173409F48FC0183409F00AC19B
 +:10F35000A1C01B3409F4D2C01C3409F003C1E8C0B9
 +:10F360008FEF81B90DC082B1809582B980E090E0C5
 +:10F37000E0EDF7E03197F1F70196883C9105C1F790
 +:10F380008091C00087FFEFCF12B8EFC08FEF84B934
 +:10F390000DC085B1809585B980E090E0E0EDF7E0A3
 +:10F3A0003197F1F70196883C9105C1F78091C00033
 +:10F3B00087FFEFCF15B8D9C08FEF87B90DC088B1DF
 +:10F3C000809588B980E090E0E0EDF7E03197F1F7C3
 +:10F3D0000196883C9105C1F78091C00087FFEFCF6F
 +:10F3E00018B8C3C08FEF8AB90DC08BB180958BB9A7
 +:10F3F00080E090E0E0EDF7E03197F1F70196883C8E
 +:10F400009105C1F78091C00087FFEFCF1BB8ADC059
 +:10F410008FEF8DB90DC08EB180958EB980E090E0F0
 +:10F42000E0EDF7E03197F1F70196883C9105C1F7DF
 +:10F430008091C00087FFEFCF1EB897C08FEF80BBD1
 +:10F440000DC081B3809581BB80E090E0E0EDF7E0F6
 +:10F450003197F1F70196883C9105C1F78091C00082
 +:10F4600087FFEFCF11BA81C08FEF83BB0DC084B38C
 +:10F47000809584BB80E090E0E0EDF7E03197F1F714
 +:10F480000196883C9105C1F78091C00087FFEFCFBE
 +:10F4900014BA6BC08FEF809301010FC080910201FD
 +:10F4A00080958093020180E090E0E0EDF7E03197F5
 +:10F4B000F1F70196883C9105C1F78091C00087FF64
 +:10F4C000EDCF1092020151C08FEF809304010FC065
 +:10F4D0008091050180958093050180E090E0E0ED4A
 +:10F4E000F7E03197F1F70196883C9105C1F78091DB
 +:10F4F000C00087FFEDCF1092050137C08FEF8093DA
 +:10F5000007010FC08091080180958093080180E079
 +:10F5100090E0E0EDF7E03197F1F70196883C910536
 +:10F52000C1F78091C00087FFEDCF109208011DC088
 +:10F530008FEF80930A010FC080910B01809580931B
 +:10F540000B0180E090E0E0EDF7E03197F1F70196F4
 +:10F55000883C9105C1F78091C00087FFEDCF1092E4
 +:10F560000B0103C085E292EEEEC98091C00087FFD7
 +:10F57000FCCF8091C600EAC988E392EEE4C98CE131
 +:10F5800091EEE1C988249924933011F1943028F444
 +:10F59000913089F09230B8F408C0953061F195301F
 +:10F5A000F0F0963009F048C043C02B3109F042C951
 +:10F5B00091E06BE13FC96227C15DDE4F2883CF52E6
 +:10F5C000D14092E037C9B22FA0E0622793E032C960
 +:10F5D000822F90E0A82BB92B622794E02BC92E3004
 +:10F5E00009F039C3622795E0C05DDE4F19821882A9
 +:10F5F000C053D1401FC9E1E0F0E0EC0FFD1FC05D3A
 +:10F60000DE4F08811981C053D140E00FF11F2083E4
 +:10F610000F5F1F4FC05DDE4F19830883C053D14079
 +:10F6200062270A171B0709F005C9D80196E002C92D
 +:10F63000261709F010C303C0973009F0FBC87724E0
 +:10F640009981933109F412C19431C8F4963009F4C8
 +:10F65000D8C0973050F4923009F406C1933009F4C1
 +:10F660006DC0913009F059C253C0913109F477C08F
 +:10F67000923108F0BBC0903109F04FC2F5C098310B
 +:10F6800009F487C0993150F4953109F4EFC09531F0
 +:10F6900008F4C6C1963109F040C2C2C19A3109F4DA
 +:10F6A0006CC09A3108F491C09B3109F45BC09D3164
 +:10F6B00009F033C29D81903359F48F81882311F46E
 +:10F6C0009EE11CC0813011F091E018C098E916C08D
 +:10F6D000892F807591F0903539F4E0E0F0E089E011
 +:10F6E0008093570094910AC0983539F4E3E0F0E034
 +:10F6F00089E080935700949101C090E01A821B82A8
 +:10F700008D818C831D829E831F8227E030E009C299
 +:10F710001A8288E08B8381E48C8386E58D8382E581
 +:10F720008E8389E48F8383E5888780E589878FE5E9
 +:10F730008A8782E38B872BE030E0F3C18A818139AD
 +:10F7400041F0823941F0803911F48FE005C080E04A
 +:10F7500003C082E001C08AE01A828B8344C0772410
 +:10F76000739482C08D81882311F48EE12CC0813086
 +:10F7700011F081E028C088E926C01A82E1E0F0E0BB
 +:10F7800089E08093570084918B831C8224E030E0D1
 +:10F79000C8C18B81803589F48C81883039F4E2E0EE
 +:10F7A000F0E089E08093570084910DC0E0E0F0E044
 +:10F7B00089E080935700849106C0E3E0F0E089E09F
 +:10F7C0008093570084911A82DFCF8D81836C99E0FA
 +:10F7D000E1E0F0E0082E90935700E89507B600FCB2
 +:10F7E000FDCF1A821B8223E030E09BC180EC8A832C
 +:10F7F000CE5CDE4F188219821A821B82C253D1401E
 +:10F800008EC18A8190E0A0E0B0E0582F44273327D2
 +:10F8100022278B8190E0A0E0B0E0DC0199278827C7
 +:10F82000282B392B4A2B5B2B8D8190E0A0E0B0E098
 +:10F83000282B392B4A2B5B2B8C8190E0A0E0B0E089
 +:10F84000BA2FA92F982F8827282B392B4A2B5B2BCF
 +:10F85000220F331F441F551FC05EDE4F288339839C
 +:10F860004A835B83C052D1401A8259C13A81C95C34
 +:10F87000DE4F3883C753D140CA5CDE4F1882C6536F
 +:10F88000D1408B81C82EDD24CA5CDE4F488159816E
 +:10F89000C653D140C42AD52A933109F082C0CE5C28
 +:10F8A000DE4F88819981AA81BB81C253D1408050AB
 +:10F8B000904CA340B04030F583E0CE5CDE4FE88052
 +:10F8C000F9800A811B81C253D140F70100935B008C
 +:10F8D00080935700E89507B600FCFDCFCE5CDE4F65
 +:10F8E000088119812A813B81C253D14000501F4FAA
 +:10F8F0002F4F3F4FCE5CDE4F088319832A833B8313
 +:10F90000C253D140C05EDE4F488159816A817B81FC
 +:10F91000C052D140DE011B9631E08C9111962C91A2
 +:10F9200011971296C75CDE4F2883C953D140C85C3B
 +:10F93000DE4F1882C853D14090E0C85CDE4FE881AA
 +:10F94000F981C853D1408E2B9F2B0C01FA01609393
 +:10F950005B0030935700E89511244E5F5F4F6F4F67
 +:10F960007F4F0EEFE02E0FEFF02ECE0CDF1CC114F8
 +:10F97000D10499F685E0C05EDE4F088119812A81A5
 +:10F980003B81C052D140F80120935B008093570027
 +:10F99000E89507B600FCFDCF81E180935700E8951C
 +:10F9A00035C0C05EDE4F88819981AA81BB81C0527B
 +:10F9B000D140B695A795979587957C018601ABE0D8
 +:10F9C000AA2EB12CAC0EBD1E0BC0D5016D915D01F0
 +:10F9D000C7010F947FFE0894E11CF11C01501040F8
 +:10F9E0000115110591F7A60160E070E0440F551F65
 +:10F9F000661F771FC05EDE4FE880F9800A811B8199
 +:10FA0000C052D1404E0D5F1D601F711F1A82C05E33
 +:10FA1000DE4F488359836A837B83C052D1407FC0C5
 +:10FA2000FA80C55CDE4FF882CB53D140C65CDE4F16
 +:10FA30001882CA53D1408B81C82EDD24C65CDE4FAC
 +:10FA400008811981CA53D140C02AD12A1A828981DA
 +:10FA5000BE016D5F7F4F843121F59601C05EDE4FA0
 +:10FA6000E880F9800A811B81C052D1400BBFF701A9
 +:10FA700087919691DB018C9311969C936E5F7F4FDB
 +:10FA8000D801C7010296A11DB11DC05EDE4F88835B
 +:10FA90009983AA83BB83C052D14022503040F1F6F3
 +:10FAA00036C0C05EDE4F288139814A815B81C052F9
 +:10FAB000D1400894C108D108760100E010E0089414
 +:10FAC000C11CD11C0894E11CF11C011D111DE20E8A
 +:10FAD000F31E041F151F21BDBB27A52F942F832FB5
 +:10FAE00082BD2F5F3F4F4F4F5F4FF89A80B5DB01CC
 +:10FAF0008D93BD012E153F054007510761F7C05E8C
 +:10FB0000DE4F288339834A835B83C052D1409601FC
 +:10FB10002D5F3F4FFB01108204C080EC8A8322E0FE
 +:10FB200030E08BE18093C6008091C00086FFFCCF5F
 +:10FB30008091C00080648093C000C15DDE4FF88179
 +:10FB4000CF52D140F093C6008091C00086FFFCCF19
 +:10FB50008091C00080648093C000432F3093C60022
 +:10FB60008091C00086FFFCCF8091C00080648093AC
 +:10FB7000C000922F2093C6008091C00086FFFCCF6A
 +:10FB80008091C00080648093C0008EE08093C600A6
 +:10FB90008091C00086FFFCCF8091C000806480937C
 +:10FBA000C00065E1C15DDE4FE880CF52D1406E25D7
 +:10FBB00069276427FE01319610C090819093C6009A
 +:10FBC0008091C00086FFFCCF31968091C000806498
 +:10FBD0008093C0006927215030402115310569F715
 +:10FBE0006093C6008091C00086FFFCCF8091C0006A
 +:10FBF00080648093C00085B1805885B9772081F4F6
 +:10FC0000C15DDE4F0881CF52D1400F5FC15DDE4F35
 +:10FC10000883CF52D14090E0A0E0B0E00D941AF4F8
 +:10FC200027982F9880E090E020ED37E0F901319798
 +:10FC3000F1F7019684369105C9F700008091C00064
 +:10FC40008D7F8093C00081E180935700E895EE2777
 +:10FC5000FF270994FFCF90E00D941AF497FB092E2B
 +:10FC600007260AD077FD04D02ED006D000201AF443
 +:10FC7000709561957F4F0895F6F7909581959F4F08
 +:10FC80000895A1E21A2EAA1BBB1BFD010DC0AA1FDD
 +:10FC9000BB1FEE1FFF1FA217B307E407F50720F0F5
 +:10FCA000A21BB30BE40BF50B661F771F881F991F70
 +:10FCB0001A9469F760957095809590959B01AC01B9
 +:10FCC000BD01CF010895AA1BBB1B51E107C0AA1FAC
 +:10FCD000BB1FA617B70710F0A61BB70B881F991FED
 +:10FCE0005A95A9F780959095BC01CD010895F99991
 +:10FCF000FECF92BD81BDF89A992780B50895262F31
 +:10FD0000F999FECF1FBA92BD81BD20BD0FB6F89400
 +:0EFD1000FA9AF99A0FBE01960895F894FFCF63
  :040000033000E000E9
  :00000001FF
 | 
