From 253ab0cacea161c6f558d6a26fb3ed258057656a Mon Sep 17 00:00:00 2001 From: "David A. Mellis" Date: Wed, 16 Feb 2011 20:21:43 -0500 Subject: [PATCH] Support for building on 64-bit Linux. Includes changes to the build.xml, 64-bit versions of avrdude and RXTX native libraries, and alternative versions of the RXTX jar and avrdude.conf for those 64-bit versions (because they also have other differences). --- app/lib/RXTXcomm-2.2.jar | Bin 0 -> 60818 bytes build/build.xml | 27 +- build/linux/dist/lib/librxtxSerial64.so | Bin 0 -> 61280 bytes build/linux/dist/tools/avrdude64 | Bin 0 -> 704076 bytes build/linux/dist/tools/avrdude64.conf | 11914 ++++++++++++++++++++++ 5 files changed, 11938 insertions(+), 3 deletions(-) create mode 100644 app/lib/RXTXcomm-2.2.jar create mode 100755 build/linux/dist/lib/librxtxSerial64.so create mode 100755 build/linux/dist/tools/avrdude64 create mode 100644 build/linux/dist/tools/avrdude64.conf diff --git a/app/lib/RXTXcomm-2.2.jar b/app/lib/RXTXcomm-2.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..37b611dc9100ce01239cfe7e9d693fc68ef39d09 GIT binary patch literal 60818 zcmaI719WB0)-@d4wmY`dLC3aj+v+48+qP{x9ox3;6Fd3)x%a;RbHDfd?%jLTIAfnt zdz@Nz=32GptX1+-pkQb~P=9Xj77;$6f4iW8z<^{#lm+M{WJMW1$AEx9f#jtiq5kRt z@~>|4|M6wCKRy2cmt_QGB}7G(l<8$e?_?&%rKRZTXW^yjsHY~T8x$EASauE_=_O@o zC1hq@%E6#hPq7DZv1!b~QjVyeP02A2G1V|q3Xd>o+>gGUTiiO{I0FA;AajiOPhx+5 z=CAhGKw$ncsPF&F3dld-n%TNASlBWAJ=*`>3FGfhib|}UZ1Q%F&h$ps22M^k%34bE z{AhfzL5`4Z;o&6iRHe$X8UE%OjaXDN6!4*)jIcUs<{8fMGD$gy2`qfipzjLNW-U@s z*sr$_Z&O^`tGpen-CsUmz`nG~ueqp?bMlh?e13eqX2-X|I=mXB{BR%v>BkV6?eDQm zLQ7%abZ#nL@|=g0;PVRi$BN}Wq3+cjlMR0HQDq$Z#{wlJ8lSbxkEkf_*2-fj4ktC{ zG&}|_Na*uREK15I=u+L6ubGOlYYzp|khnUcYY{Ul(x&CGHdt$!O3(-Q2y540ln1AY zru7`aw|nSQfQXsCjL>433@*q3Ys__Bwjyj3&!lN^lEuz-;*c_GJ8G*U;Fe6ZoLb-~ z&H6f2w70jZ-gxQe@!5cZ&0&N7%CD{g>_@V-1q{bSSg-t=a?cKCi*O|GifS%alD$Jf zT&o=GGR=4(5mF1$Yt%wN-*V$Iy88Lx-IlK``iRZjO}umn)^0P(KHN%5o5GsJh4IaQ zKh`+CSiUBl(^1FYL|n!60b-)+&|9>7H*H3~Ds-f}zV@8a7G#J+6Z8cnSs+E`t8U zzOvClkw?L=NOb(Vlst1rDLsn_gdSR+0R{4s;1p?z^kwtLq)0`C4I*oH1w%Gu){Kdg zJzJ5K$evEXRPaWbna%Wi$<^RtVgMx#8!SH2?|v;tc&d{=xehI_&REec)cvlJH^WZC z7yd{@62kBsg9B0~`gbuSFSr-?NI9aM$Q!DI7SxA%=r3;Q?vAkMF5wSpk}se9?EtH{ zG=Tvp0TYC;Ng|Y+Q2I}hTczKAcYEMTd-T5zV|JK6f01Of4wRG{>kIt0i-5_Y@~Q@a z(|)6_r@lo={#M;X6IKDUocO!iUTC+tZy9Dgx1on_CECS3Vhq7nTzHFW_zA`d<_?A} zsJ+j>FTYPGh!8Blg*fE#=Eq+l;n!XvJTWK`P!_~LJ@KFM}cU? z;`mQ5lZg_5>0?9_KDM%H(kV@ebu~hmDI$Ra5AuIg7ZkTZg|fgTm<)mh$Q$~HP962X z^=BNPe**Qyep4qChfYJYHGBQEt|Ya-Ek7hR!(WbHoT8>1H&T$`Wi(l7QA1HIN>b`n z;t)tZ8XPQGgKI{HT=Zy!+w4*)s9o15tNbF%fi!r)<<`-fZB6A*B{D|wU?S<+#x|6L zlGsV@2L8*!>5bC$tUu!)`qTb%7(x2mLJ4M}f0`Dh2JNoAh|b56#+Wb~8yHB7gwjXe zUmK#rP7KQ!3q%eqVgJ)ux3A}5lJgEFv?|b1gF&{I1$xZy)R+LA z{+hIR_$S@tEnK*6ljp3AwNn|2k1ZLGdkoml%R;w}L_&(s9)MV|8}^pbGirYh_LkW* zY{d)B)8|kZA{L+XoR}?+*e|!aVfxpQjPjG5i7(9lZl}{9_j)NrEl4D=cyW_E_F;Io zV*E+=?PaR1SdQ2ma2{|3!EtaeaNux3a0R(4Xj~$785naJ^h`Kalm?V0luqG}9CWBg z>TfGN3dBQPB1IXhhIjceFeh|N%-MPA1|a>y!4hx@*u{*QgN#YNM9}QGS!7u>ilVPPb6*RLlml038Du&NJ%7FOP~Cfv0<*S5FnLT@*q1@ z+B~bHbp~Ang;H}U7MC8KUCR}$S!_obHD>C|^3)dZhxDb@*p8GnBiGQP&m{U8XfD8(|I;6g=9QTVo&ziJNE zT=l+{=G{TJ3){R{b3*;tf6X|s1B#|vbl|)%od7;0z3>;FZkxV>T6&$A^bXo-C<}O$ zD%+z$!&+Wn`ywN>uKzhmuljc%4aVdN%h-9)Is3w&&=@iprI-6QNj9+^a*@pl6lNw~ z0}EDgsh$*r!?=~EILuXHjRd=F8`dlv+Tq*fWsF8~;?EMOiB8Ww*n85o>*63a3%0q)$t5mGLg_%T{p^GhEG0stY z7=~di1!Q^SHoYELs_;z2a5v|1_mwc%rP6$uD9%|G7n^1RcVj@gQc{Ls_++6(K`feg zl~>?r<{ZIvS+cGbun8B?+S23wxPe$kBj5{ka6M(z8XBxQt)$9tu$Vh{$+M4C$|K!s z{~nO8;Cq)CjlhPH!Q(cS$pt7~^p-Mtchq`i^$sbAE>BKjFqF#dDp9u%{V&v-T7# znMH862ky!UhV9CHVF<+(h)rKG&g+c)#3!Wo^Mt$|`Hh{SEb8dt1Q~Xfxu)*Glx_(% zY{#qAuif75X($v&MSUW1xT}k}QY}N#`iTG$e}{KV!i{T?#9EN{=qYw7LK{XIHwK}E zbDcD~_5$BIBZN=vO+g{VWFq}IFQAf2k|{==I@x2uF&G{0n6c7WeNcW}epr5brl&R? zlfG#i&~KOaPGFOQu~nrqep@#{x)j<3=M$q&vE-B{U4^ugZGJBwNbe9%93aV{WoCQ5&?&6I=yn19u6xjx_~2 zqjqXV@cO-{R2g`J|92Jd4-e~(=p46LZ-3>9Q9 z8!ryWO4zazxvWmKa0uuBctA$-$g4#$hqH~Lp5;pqm|k%8lEzfTSmwOf&IFi8wEB-> z1fkeqEK9ClF|Os#Ua_v}h~hG@*%mBDvRgM&0@sUJ#8=V3MD-TEBzA$aj;WpC9%~XYdIhg0dFt(R)zYgQEkj*BN8tq4b%3@TChc&#<;uXWRwfj%p5%v6vV}(j>p7K;P=qf z*_WH==``ZHqwCnTTJj$5g20B zG4D8;?7=+|6>3C|9uwtWQ)3cG520$Y7$Q=6Y)FxO-It90*oT8xIRM)N-U7D24otbq zk8|eWaY5v9VJPIwSPDhyK!yb7kRT1#8Ijt6ljX5RH9#wAeFIZzLXRTMKTBYTf1=>} z!U&}OeSt+4qStNH7to`1$}VJGX`rLpyxBUok_i$|ewVY8SE zwGKX+V0WCL5E?pT!||sO;DE^qKeOUNmr~vg2LM zP>hvNs&S9Rg+$9%}PgE8{#1 zbDp2Hg`{;t>c!eRpjzpPhfc1W%YjX?joZR-4OTS}t(tW&Lzs*19h?Q;8~ZRr@!+TL_9SIDu}C)PFY1E#A+(pxQqpNG zmHoyv_6O0m#JkJ7(G*_cV-muQ8>`)rE3EYZIql%ew# z%ak1i>dX)+5Gb{as+EI2W2nn}2KRVdeXEYDD*3I53e_JHdo7(lzZohrB7A&*GV!(G zkRlwt6vtHHku0Z8d?MQ}Sg*4&2~V-4y@GtKaIWu14X4bj%|@?TbQ`@NCFab?%~vKT zd?$8k!enAQ|I$keYw}5U6&!2IN(G>N@N|(jObz@_nYWe699>YG$V{U$0nAXYc||tk z72MSm7FC6*AB?BCp^hy?Znr{E40;lbO2uoNL){h9=cK3vPZlqbq*@4??G_ zUC>qs2LyD9|KI4&UmDN9q?JE(=ifDxbwyMGq)TEyekja8qDj6xbg8gBJxust?XtKul1P=GFU7X8_VQD0Mig*M1FLL2M|R3_*#&B)U8}6fAl( zn&5|*M&smLK@e%h__A|B;;zDXh2La_zq6fVt1e)vM2U(DEx9TrYB)Vr=o)Bos|^KX zLbL7-t-yw0MeY(zlPkkD5+jHi@sp`lRr;k1g!PYbHhCIJ{EQl$tubKg4IkTmX|Y%8 z@H4JaLW@$Op$6Dmrl2CxZ9->bsBPFEmfm5n_E3G|9;47=G5I^zG36Cg2e3H^aAb&ZLMtHx_uMacFc}& z;JIh9YPR>DuHJolt}4>Z)%&5}R(NwCMv06kMmEnH#DyC1Y!{g>3d1<;pTRqT{5{;sdl6tQ`Z_^-t*|_icHXd{uN@cvh zVCziI?NOEiYzNM>Z5_r0r&sPct3#f$XVpw25GI ztZAG}pg z|Nd+M;7BFllrb3{uR4~u4_SpFSxN728sVY5QGWG6QcIc10^EX&J??^7>g2#>(4B#< z=gWt*y$zolz^d%fBN0I|`V{yPj z%op))TIfT+_lsuFjT@yKwJay*U_0u*!_DN!U8p;CDNoO@yHH`C?D1~j_e8txe0Q#* z){vTIA@{&9!iW;M8)#|^_4wN4*Nym_f8QLOb#-V>%{$^K^j3^LFs}z2D%0UyV-q+AhYYSLT}H6e@P0~sjE{Y ze?*g{|0j{XouK76dj{ivcX`E_TL74bI0?^bE{wsX{Z`!`4yoQ zYnN-W`$n!VzH>(mG*hn$t*;6Fv_OwpD>g6BClgkfC0JW~`+Z%`TUAxn)wyM7`j~DV z&NKb_^<&%X%dPY4se3zcShw|B07%E3DR^i8Q!*drMH~C9k?qO>Qq9JW6?$1pgEk z)=!Q~_ziNs>$uzGHwMVQ++%lkx(~?4=OQAOZ*t=Om~aPPs|abpKK(+eU~`G50|;+2E=0UVCbU%A8=vhBt{>u}hWx+S;)+QFTT!_VGB2+2Jy_j`v3; z|Eg#QFE-8bNwQOQ_82a4n3ljKf~UMEdLXlhSa1Aq1Db6U)Am;gb_8Q(0Hd^L0QAG{zENtdh$BD+>*Dx+=`WBXi{HGy5zoriO@lzJ3=w4}bT52qMEVOg< z@2t2|W|bhq_`TxPM1}Qh<7P^7X_!or@?NKHFlSSYRNP7eR-M;g-Yr{6b5*;rvRa*=-?TViE+-6d5)_@(;g#iYIdj5ZR;lz zCXUYP8TUsR{V0?iI1&L2%d4L0`W`n(&r8HCYL^dqENWDm=bCxPs)7nHmXo0@gVXwX zuOJBFxACBQ%Fc`x2f3xZ9dqtwxyN7=DO;>5X;c!&NgEh}BEvFV-2_VqZWlx=w!j?l zYRK%zFea+R_&!{7F3kcK7lP}~a02xHIrX#~!+)f1GhpGp@16k5G8h)2LyoiOalY7+bP4Xg6B|;n+K!5!6 zEVQ7YO>>m9X$$fSZ~qwQQFNToIK!d6R|X{q+5iEWv{{J7OJv^JXkpwqo$l6a>rxs>?2#R(1bt)h@}3LM)SxN&@Nc*!^u-*D zlfhN8kpk43V5gZ9gRbWlBB5?LyMYYWcf9VITGV3yRy(tXq;a!`Mq{`KW+&pp&@s8dxFZI1t7k&_?xl4!+x0pC*q+4?_syk zbs817L$IVhw6iHvwrQuSzI|CK<9w2uzpDYMYbz9~0M7B4uy(!xc-KNEr?M6Aos?FO z1ZHx?D)0<34zPXp>2Q} zP4l+H@3*ronaQ3iaT z0309SnnNY{r5iE6qjm|(r7VfutB!~2PEqrPthbLevV*C@Z!fs~3Wo%3dW*(1W7|DV zQH*LmV*|tsWC)~;*8rMGBO01OeQTcy;z@Y)I`0EiQuL zQUO8(=3{A2^I<5AJ%q9AL1yb=D)BvMls9(EptfTklQ<+kH4*4vc0*d6lGd=CG?`YY zkP1K5W@WNyI(_%G^3)WfAXM(~TIQdW7gyBzA4sBw7`^OYxyHANoltC0%~zOVTt1*t zQ#DwU%}I&!nB1iB8*J~RoQe8w49DmT?omox(co94Sn0)RwlpS`?%e>iouSDyQR?BF zQ5rHbsOIzn5!wX8bc4 z5jpm;HU#N#xd<;r0yRn05DOfv=HG?PxluSXXJOtm4YlvIc|Q@r*e{M#&Aw-^d426z z3HB;=N9|u3`bpQgaSy{{*Os*S?@IQ_*u1$@s3V`1x~VKE;=$W~;OXD;P;LmFW*e^H z^JTjD@n$m!PMj-+dWR9t!wJ@036b%H0}=u5K(srSF4Yh!6r8`SQb$L9$R}-fwYrqg zzM;3B_bOiv!}0K6dBo1Os7Vw##vETj4ZA5vRq$ag3*j-)n|f#3H47+XYd$m*n$GI> zX&1UP6yc^ly-ugROs8}>rK&Nix#Dk$jCR~)`yRk>R5^|&*#ZvZpJd}YW7Mj(L9`DO zE+NBTXrGjF2EEn@iRUuOYxQY)F!)~_wlXNx59Mw@y^#oSn`vaE)j!3|1h2N6s*|F{ zMn)TNDJ}brY+Cw1TINi=uVrcPmM`;IHqBDAK4w7b83QCg}6>ojk~ zaC;!j-a6?B@d0I%u<%83xd(sjYGe+|tq}N_A^>QdNV7?urxWsY2XqPc(2a{Kl8{7` zG%wT)IY*+KkqCzt`2yfxyJ)Y16nV@YGFLDyP)ZBfPih+^z09w%3P=Byte1X=5{~6I-7wqmGdy%nYRGInj|x`4!kJ&` z`)nocfcBw!`WqA<&H>8qof?uG(;|DAnk}?8|2MzVdbox})YdPf#itz2wO?zAA37V` zlON-03&Rno10Q1x2SlR`#`p7}bRt~n4`UXEw{kn0gn-+MO0b&4@7l+zMv3ow_6-Z( z{mqMwjwlu64x+KTQ{<}0_ELnr+Skcf@a|1N`H8o(7u}PreAsp&zg1`mx-&h;b|H0bG{xCN=7iW7HXC-Gx69b!n?Rv*g+RpPM4S$_;I_%Ll#wz9# z%4?>yhY4@!3gCtE*DKEoA*Ez%H?T%1meenMb%KKU@dI$giAWHsYY)>l zSHGrN8alea-oJy-h|UKEoUZ&R1~&x2!4a0azl_} zZi`ulZ5yedV+bb|tW~shiu6eP1?+O;5UhuFqlMPc_U^Bz@qzdWUH!}xq}RI#^<*xJ zpEvf5bg1zNi+A&YXSGWmMW@|gB`B1VYWsl$!2AmxoYV+%Gr&MVxPLguf8N6U1D*fj z^nY#A{u|*?(vm|J_)`dBgK3$EMhT9FUPDLu-~-yrPgKUfpgu6rV#7@<l;J|kMTHIoL4jGV0}B;-WZZOqx;gi;R` zBTaT>{*i@wr!5!V%8e|s_74_oYhFEbL~yroUO$yAMx4`H)eydQq3bB$%7D)Em{sSH zg&*dma~5w{!R7mHF3tUm8~P{KZ$gTUW{>B?srxT8&C!`y*Cr+b*vy#$Dff>fQiFWDiCk`(w=*uV}%j)fr zemTLK>=B!;l?Br9UDV%~+LqwHA+(3E>VwP~W|U$D|Aq65X@xcxn+(-D+SHpH653=M z;}YQo;YYzgTASUyJdF+Y)9P&OSsutqU%7u4^JM&_Bp z8niEz(>?CW!LI_JKF{&)lJ&2DR0t)JlHt|xQb~mp1>|fzJM+zOCbd~?9ZCyszk*_Z1FQoj zLw6yc4;U1u(dJ;x6Q;QCE;H}Ek8k&vdx?P%V0e_tK-zTjTg~ z_StO>1qrL8;Oa5R>7+FPSnbUpnw|l9-K~dqZ`oh69yED+$9HgHbC6~1Z7Ar$t!ros zp6SFIm1DsaAPj^f@Cr78uO?ms;(5tfLz@jbauidQ%&9N>SuFSHK?l>g56p;qFNf)( z@8KwZUZed{M3r|g!Ava)zIIM!o!aN4ESD|ut3|oUs?Xsw(4Ol9O5Z1XiHh;zh)#1c zy)jJjCJd+g@FCqCru)1h5dkxOq>y*&wY4Yu&@uQt0#kkU0X&Y%_ow-DPH_76Fp9T~ zdUpk(VhjDrGwBQ!TM@SyHI%^%KbkN_3OPlXv8t=}55CY9m#Edm`1wkgy(M_D9a#nu z)FgrgRgdKWga)krr3%r}9|kRe=~_Po)!1;grs}H}AFLbyBSP0{2oo61<+5VN0csPJ zr*@Xwck-G}D#+_~+FtVw|nXneukRZUG_eM@Xp;i4~>H8op$<0 z3=6~yO4pAk$fWAXIA4FE!-VTJUh>Ze z&nlM6F58S@M{2TMm5J&^9FwN?IA&U;GuFazd6jZSkupuTGDBsXqCI7oA{1qlCK4(n zyS5TbCw5jMg0&pX)Y@sAX^w8M!sy?QJi|YbM$prZ>`XaP3#{bu$8F?_KYffCDIdZ6 zl18bVmeZrn2&ecWFUl;Uw7-|tT`ngNHVVdx>E*R;L~iZ$X+0)f$ePZhc3h3%;EsPN zmvyn6Z%7*8GANGh+rnruZzK#)d@ko{6350_MW$W120LmNu)GPs1{J3}(AimQr@jsH zS&2RW@MCohB}UKGb7xa%~#DXh_#dbiUutIk}4SU8h*wKqET!bFC!h=ODfA7FT2KeacSM` z{%dh(sv9AE`m?w@{#O7I{tckNpd(?c;$$M?Ze(KbY++~n&wytlCnMF*kK{ei8YN>? zQAI-VvjV#H2mg&CT4286*)Us_lzLf5J^9)8tvn3DU*K_I59LiX3E{BY>P&n2e0c{U zszvP+tBE3S##=*}L1ZKn_AsehI6TZqPM*o(F|A2UHETz*ut=hhhN?0uQt=R6!LLd| zw1u9m^N0=H61MPA;GHbYGHu{u*&0deUr=UGF&q0sK8KQzUynqxe;?nrDT@+*pNGOV z7c(cerzE++Y)2Ujb>TIr)!fe+jE%W_QQsS8kHmRjO}dL!=xa0j?obalI0_OKqq()a z5;T014zGwImv;E=6DOqU+s?3*dqr}sYsY@s(}eZXUHd;~bKdDUJMf>`bokT$bE@=j zMWaG?|5`Wxr{?RYJK7@pmrVSmbTD+_A{31>B#kqwxW53E4*xfc*hHC7YhU`tGvg<6 z?)EedH#4DpRpdHL8tO-jK}iLvOEtn=>q@PvYc;~=#ihBBCb`RbzV1)6w~mGk$kx}k z?UpBpskUyX>HX}V$3ZOwK4|>7p9Q4R$nfhfk%rR!-*D)Y`o~$l1p5zhs!I!c5YW}m zQvI^(+a&wx;nl`>DcH1?#7?c)v`hAto*To@U04lUw4DQ@!CMvBIZjssGQRDz)W1}Q zPg^{9CcgMbn>^=-Ymu#`6kgcEw@B{k;>)a*?XpunnxMB>tx!mGd|Oguy;!yn$=oj6 zqsNyzTuKM1phF()Wl{ew-iOoeA@Rg+7x@LoQ!oAWo1w0SgE>AF{1u|kQQ z*%kw%ua~;&s7!Q2-^j>B0`@z>GYi-mhSCMaZl736ard^+P zkwnrd34~Y3ZJBHX8nuNKHe5nBObk}sLJMdU8l)u2$k0D$FeKVoOLD(&G-?RQlw=&# zYbdNEcfITa$6dBS%oQ$ZjTYJohj3Fzoz9bG@*y+Z2ojJj(OYc;&UPr0y35no+b89UV15*DWQlr*Tm&Q_sQ|>MLnS zYbjmT%HL%A9p8X_V@Xc2oD7RhYU1ILnieHH=01Q!Iir-t4YSbX6JaH?2d?5=3XFc= z$t7C$v)So*CiqBc#=hfXEm(BbYADz;w~{utp}Blp?s>Y&_n&cgB~&S#Hx%4~d?sFW zQ3{mO5W-D{#}{JG9AXGa9R2J4wB z8tWO`$94yEj$>E`$l2}$MrdXV@XzPj62JykR@JeQrvR3hJKuYYE#O zzFReMaQ<@Ccr$Xuvw0+qipK1FwHX4`ZmPs?SRh4wRr^*BiiW{jyajpcMsv>AQEhEz z<|#t5$f+I+X_jGo^l1?#y&qi;0q(emVe2Am2QQ)62w8o-QSotlb3!9(GR4Ft6?Yu9 zkh(IbVbSFQnfg@7&K88utz^ezkW6pEK25%PpQE`bIVm3XxfCo7#YCVpxPUPBx|GHi zH%)D3VH&Chj`5KD4ji0eC~~&*#aboXgfcsY(rV>}3}|<+U7CItuII^Tb0L-m3xNAQ zd)O4EqJNTHgxxZ#&11TU5b)|O;uDlM0wlpnVMReX{)2(=^Kxt(Y zCo7rSt+FQHanNb8bNvjNw*(u16`o=^ zdxjQGQP124omSrX=nVQb&<*#lmA+(8n^9u<|Y>KDye{{R9mXpTdAC-ri|nj zBW3mBB}1)#o1K^xj)Q=Dvm=h#paS?A;959 zzH?{(urjp@lb;F?Hfl<0#W%|CG_~xLS^tiea;c$JjS$%4GV+r+R=k62%BsO|B`Gcw zHQRN$y&rqoK=^~kShw{}hqmUZsaSuJyZs%jQ&L!$8(LN!;&s!l71JYS`OrKe!!4dw z65j3Zc-xNaG=yop?XEaYKL0@-f#IgoPLxPnlc@#72V44^`owSH-@u$_l54uBXVuVl zNf$?B^ySub&`As8i9zVLXD74YCbzGxzq`r^s?JeHblM-Bem7Y|7=S`=!lz?uvxlW= z>-gBjAfQw5l%F}7be$@mWPE|M+M6#;{3v-XTw`3cO*-!DXd9alL3=S^IuHu^w3_eJ1@?QKSR zAo7_r@*DU*jca$B07>lRccOTKQHq{$B>Sl1C zlQ>_MVHu}sb)}B5B8;g-!HPluiq4!KRAx>P%!&$F)KbW@wAmLGHnl}c3E}*Px$Ks#EZ$TvoYafIGo~QI{MjS5-<201cToD?ekmfso*u)1lqzE;W-@U- z9B=b#_Aq5GO>KUXW45Vfwg_=PP0ryHq)7Kj#Ssh>b+fl(1h6!QlCdl`y1F7pck7)| zuFJdKa%*fc`~GM)(<9)a=-XBi?%JtJ8dSXzqr%rkt})>6zKVRW`SA`SoA+1?X!kV48!}US0Q)8w!Ub;}_E{g9W^dp_ zzOY$ih*fc5j5DZDQ|RXe+8tYi;}YRJMF$P_K9NMo$(fX2b|-X|8O$N_x(Kn z0QP7^u`@vz5$C}St)aSRUnfD$(rU7LA_8qOGg0SwX9>$vZ?Mfc?8R|-7Y}cvF2ab1 zJnSe@3(_h1*vh2%$UQ0Vvy@@K8j| zi-i8ySYo9%4rRTw##rLzx|$SkDZmC&R(l-ikAotE?g>YP@D(!erZ!(XI-Xd%^dm7teeCdOZI>Hc6Pdv975w;S#wB3(ro9%&bQk5EZ5GvW#i zLVJC{p7Z+>ozl^%F>nq4KBWK9e9ECVeH?{0J@gFCSfYEC98U%$j!)42JNxtpXvvHi zjr^-i(wlkPw({90;$QjkVOE()G&B%U(4P|h|D4g0{GA{FYqOn9#?IEl+0Ief{Es+l z{LkzzC}I6CaWweL0YO%qgNhYT>%<%wwq$-@!L<3~)7iMa&Q!R9)-7UMml&6|Xz7lQH`nDA^;qsTFnq3mZA!An|A*9s@*5#}0g`==<-spGD2-jL(HtxA~ zZ$cG)z`ehUn(Da=7^79BS6W+(eX4(TtY%F9B)c;mHR?P1b+WbXE(T>cUD#ZsD@w99 zT^d5MOLngid~75jjm}2MhoQsj#rh3ep0rZ8IWk6ds8KAB&-RO6WeU}6$ui%0j_oK> zo-<;>+}GuIABvt6LbUkK2r~LbO*jMqZA9syCH&h|js1OK2i{}T4vV9JRk+um6IKJ9 zgsrmDZ#}+2YiU1L*FUTe&=!q(9l9B_7tHJ$fzH%Z5$MV zY>oDS1WdjC5LXCiokB~oKhFW0gtRsK2D;>f548h9({*Yxa)xJIO&c;8+7*F&!TWi1 zTjPxX{15#+0>OoB@lVQc|6fVe|5Gkv{U`LYBf9!%)RywxrxU;}a@li#3u9)Fn++Gh~c@CKhVuO|TqEIzhe@7tf2v9=p=B ztm==o4D_CoH-{db9xkAdp?|mKPufr(@!_-qGoU^2HJG>2c|+a4D;e8IrB8CRfGYXU zUU1>c8SVKlee(F;GLdcT6gyZR07naJg|MVReAf-Hf{4|#!&-EpKnmDT9fnK#Wg_?b z8MTKjG`F}WA_U{b1z2lPzxkuAZ^MY}uv_6<&k`2rm83L6_i>#hv6GgU7MU9n4k~|5I&D{44_Ltx0 z!gyTC{P{}`|0@$C``d5-moOr2;pA*$`#;BwxF776`5+)5ydi8|ArM?4WL+WXMIo;C z7V;+s@RsWrI#EO+EZ}qQI~6}Bygu}6?fHEapw-7TSt8^7XgIqYDY+KuSSXU>1R!LB z+p2&hQm&sA*0>;j3H~GD`*6|U4A;}}q`0Q`I5YO4@y0o)b~#h_YdEL&-Sh2t$f6GsGNn1;XM(Qsu?I8Y5!M=#=8aV|Ml?zcu7@rrQ_Lqtd6r8sH#)`c0d3@72KIcQJb zEaS=Tx>FCc;ql@vJKj55@0#0d57#9b;ffIsKj3lL-#b|!W9?uatn@mN4kHaS4nqx7 z4$I(iI9(jH2JKtmwK(!*?PKFjAGl)-H*oza$Kk-6K5UKJ_rRMzb_X8bcI=GZ7r|pV za)%z4;?fNOVtb=EF z)S9tR5Zz+mnY3?%*TK0pb%TiaHFARx?dI4SvA>CTz1y0y--UOLD$%;_hse2$95(}* zRjapi1tzH;gZlG^I2zGugChJ4IXWg>_{we1=(!b0juRk}w+kID=kT5Yn&Y|y49ORu zZ^g7Es)cO-tuHiOp9t>;jAWemvoufsB>-*3_!&7Kr1wyi@&XpZvLG(nJdl%h{|*P% zi?|;bI=GqWMCF_}g9qG4F1M)%ANmEP$_eSB*FLIblgO}|VJBijNWQ+9K}?>;pKd^= z{1!Yi-TY0HbYVy1oFbZlS<`zr6j>7o$`)Y(TqurF!c0Y$0#(V&ptlqj``jzbxVQ$K znC`q}9Y%wIsV~m6Ux=h21Uc^YUX`?7zZADjV?M-*jB6+CnH@VKDij?mzVL7^+@}DJ znVrUJk&zs}UudS&CfF^2`{XImYd43*`NcPPpoR4GV)qd{_!}Fi$h~*tD{HtzcuCRV zrh&WnxtFN)`pF805QXACs;(Rnl37Gz?3Qr2fJkkZjy-ZQ!a2W+6_Mr+EXKfru*L!| zzT;r+DQTBi^|Bp$Hx)Ez z5itFX2fcfT^9lY{-rE7l21T@d2KimOEA?C-T(eVw^BaQD++Eyv`34>yaeteY6V8r^ zll={Zu6NP^etUovtvnBRGNxL~ERfY5-+Wc;xjFc{2eOeiTRnptr_{v?fcTuc(rfSI zI~5o#7Q}Qt9}K|mEa+Va@j}oeio5^_uif^GhEN>jl^23)k{8Ahw;pWGhECgEZX#{y zgHcux@9uQq{0_OcdiJy56ME;)vLw#2a~8eT@*=J`KKKr^&p&BYC^!}!YG>j*#eT}h zb9q2sM7NDOf#@Ro{f=9(7l9P*2HODnvZjpo6~62|r#}Wjh~pFawE#eUPXYb02w-{N z@Y6GYE@Hf(d2b2UgB25ffOIe@Sw0CJA!Re&$+jgGMz>nbu$_c6Y=;P6j+64~M$V9G zI)bQUdsZ&&Y3q|VHysp|lohdYQAi7mpyTQ9`-YKiv8xC>T@SGCgE5GEvs3|9~lTb?^qDxKef}ql|&XS;NI3FZ?LIoIBWR#5e@2|+fmEVE|rqNjz^5>|+$j7DY&wTE#i z-;`ml6Vz$@za|PcN8Z+wfjSadgejj>bRrb_8)KKtQkF^>6L`wS24C}(^6My z=!{oEGW85WGA8i1{I&hbN*A+u;d+kr?uA?!T88XRWoJPJKJPQ}OZhGRy4C(r30+0) z$Ycpw$8P1w!FOeh@NUxl-XFWDn#SJe17>6Il=IhGxG9({ z7NFW!U(ATF1k2Sra+l~q9{d!Hk*PmnAF%gq?*au0+GoEvhtii=mS%G$_17A67>;YI z5Z7+v!nyPQn2&{9-)alKr%a*~B_dfPs%MN_`_{{XyL#IHz^U@XLE4qcwHw(ys&TY9 z#dbW<-q}XI8YxQdur`=X)ISRUo~sHF2+vgxV;dbM8mdZ*Rf>U)l6ACFIc8uTS5>vS zg7xs+FN8x&qb}GZpvPa(;JP{8sBc`gDdY-vay0oNBEXuF%awnJ&`w7o;%4pwnK-uE zfASJ^n)W!JtT^(gYGU_He?Ey?uq9qj=+X0;hVXQeIVTc-JOx9iBbuNTv#9dM4M;EYg72H>>g8!aODh8q={*949 z_=9J_s27maWUMT?cY|V^Q zQf~#TkIhIby|{#u6a9@rSb{{bE<9Mw3}pZ#O0&rm&=!r}Z#(2hsiV;mVJlf_aso7z zd00V1%PnY%P^)AzmuGG-;Il zMiLIA41dFutztv9?K-%41|=u-lyc*H5ahwerJ}2-^(4eFuo_@UYYIz>NZ$;7xC?&? zdzJ%~|BtbE4703D(!VQh>!fYlwr!i0th6d^tJ1b@+pMg#Z5wYsJ=4=Y|DNva{cz5; zKJOiCMeKEfI+U!fik3WsM3*e1RAAzTp)ly2Vt1Qk=JhRX-#sQ_LpUoPTs>|(Q^3s8J#CPNg|g>!+1-?Ji%lw_L;7IW<)V(TkkSlm?@Nl7PV7b z%T67&5swjfpbiwBQOp`)GGG}&0D1IibUn7ur8m$!hyAgK!l>9qIBh0t5iWlmxxHt5 z$23ex2cKA-T+)MPHu2L&-AD|frH$Zs0fmhmkw{I`atXnhsV3^Z_$lfbn*tb>im%I2 zK%4|Ss_HJu0wIjJAW%`Cj7-2Y2bPsRO~rr%Vjpa%5m`n^f&qqHkao>Cyj~)XpMzIK z$vvkHAGC9~cv%wdZ`3|4D-;`%_L5C}RTy*lB=g6yk-msZzgv%+cvVJ@d1Grq;=!_N zKw5fGnh7=E^tuNVexkI3BhP?PE=esm36i~xtlY_O-_ zysE3Ytw*h>XcOqhuB)S4Ku>CywoM>gmW)-M9|YwdCA93qf7T;)aPE$iOnNkb{n&uS z>`=+&pv;xZH6EQi0|BG2!cR0v9jL#&H=3J5>Q8@|8wgD=b}qWB5Xc7TsRM>hU;4Jr z8rlNQp$odt_LyzE^{P$yHdr15c;wR9KDEYX??0yWhL|jT# zQwZH=Jae6S+sd`n+i;_VSmo3$t{e`1a+hl=gJo7cW=lKh$fJqb}Y+f+1Zq zx(VXZ-dsnJ8=zv)R0V}%Xc*ttJ3I{>_0r0k25wqHl@i59wPf6x>{i(eOS}>9@HlkaX8+^0z`HCohZKls{a8Ml~cLcdld>g`ci>$(~Cq zS3|6u$}8Vaw0BpRUoxj;J^-juL$w1{7WU$R74LqxPXF|%zLP@@NxyT9er*$bZIgJdBNuy04M}z+3!3S{+$-WuDk!TjY9H8@ zwk7fY2Q=YM8ItU@7+Gfa58{F|La*YBmVaqmib2|jkbQ$KB2IoaF^8HR>CxOOWc0i@ z==}XX=$}ov9^Fwhwc5Y1y%`rwoC%2Ot(ND>1`h3OpzTx352{uRr#Rfrcki z0wI5{Uv{p4GMUIlhUz3SJS|@QS2$N-9<9)Qeu0^53k2aMCDJm{uDlJ-J=OWl7 z_23g4%(8l8>pWkV@_iUNA%Xk8kd_5rOBJE>*q!ZWAQ)S@d>p(j_Nr$?bDN2DNX5!9+g#TF^C zZ7a+mYZKI}B*hjvF~j!AK6p)rKjZ$bg6LnyP6L-Q|5i!#2|7&%_HqAZS{Sn!nqS%` zy=zo32W*-Qx^)J&DPXq{nhd@qzj8MP?freod&6FI8BmUgnH? z8Yjq)jlS-g_|&aubn1g103rQ?5H)BMHSiEI@Gu^y!*j&{-grkB4po6~FJzp~hnil2 zr;t!P8e*IfB&;$Fnmhm+kGjk*r8PP=nV;^X|0XPf;YQt?BG|8PNY@2_dj&@^++PE` z8A!$htmlP2Mc_q;7bJb9+cp=|xBkR;Hi)q0^M;sZ9(F}EzlFvI3|~vaF%-XToD8gA z%XkHne-Y5i5N8jK9a2hzJ6r?Bkt#cIOoQUIOhRL#TpKDotdtz(Y=c*2MqVp&U`V{I zmE6~H#$i^Yvp59(D+aCp-Ujcso?>-^>)4liwU3U#EmU^^zCL0Z$pz{)RClP$D5c(R z3GK|&r7*s)N-^4)J8^gUevHK>fGOZyg=)#x6lpbIrA`|Sp_TnIwv6 zkuFtzqs`LcC4>|5Gx2-o#bTdQl2U#uI&FWZjUr0SCK6MBTHVnGSyi&tBI@B)$0W+8 z)-jet(H5$| zwz+57j^2(88$>mgQ~6`x`19W*uiKXI0`xrdFw=DBLHz2@K*hFa&t+#g?q$WX7fb3d z^m|%O7F{1Jm&I$zc$0Te<2kMaJs4uNok>_nnN7iFoh+MT$g~W8Q$r-7u@ht^{_~cD z%}isP?|*ZUk&(hVoFIMs21)RrT1FKAyJhs3@Pp*Px@7;V`)yQvwL?`!{V3vn%^J(! zuN5jx%v-g!j8Gj&GWQ!>{9ugH+mt zN_kASD4qu;Wi%rqdq=MS8F0NOt=)t$sJ}M3cA4cg&HFgvI@Q{)|KaQeD?pmoNzr44 zaC2RP5kt7OovQ+CY6JWGC=XJg45q?ZY`gxN^_4vAK=Du}o(^0k!kp^5 ziTTY(W0%HLfx(;@o3+i=P(7YmFE@`%t#lk&UNE1x*kU8Gtr`3Z?vxZ1G)Oi*)&pyp z3_pQB_>En(@$2GZCV^H<+@Cf2U9#V-KtN;3-4!SFh_}fwl~NC;LxDJvZm34b{C6-bl2}e9g{7|) zc`e(Q4?5SO(WeSk`in}*n@I;aWwd(t#$}q**!#PIv(dwjN>xTz%F4=GZ_(9iT2`5~ zcZeK`(b&H8rpi1nd8qi!4JC%8pHz-Wdo&P!KZW4vczG3Jb^dXTq)2)pNxaby|NhF_ zU)2~->(HrKAEl>@DpnsSac3&ppeC{xm!vpPUe=EU**qF4y}oFoWbD*T15>JxI>MEv zzsz79dZ&fN4SYC=fpWDNE zJ`1uAPIN6CY%Ogfq=bKn6cHbSUwYg8*)R)@IHdb$vkj<}ragc&z;T)hFEcU+!(As@ zsL9B)5UJJvb|u7Ac%;>D%_&Ea5f^wisI)b|aT|rv8rMHzC1jfhzZ=%o`1vUYVQ{Q&Eg(QKgzBPp1g;=n{A+JMbSC|%sM$VtimCT- zX8Hy*nZAxk#BQ3P)xv)-U#2cb-Dix*-QCdB{tS07im2LoTbTG)3T4MWyrO+;wj+$4 z!3RGQf9I2M^s(j@H;E|l`_!2XWOY4rTqm!GZ@aXO>!?Xfu?#P>4DZ~+_|c=;n{8?& zx(L!PMie2TgPF6o&U)VIusyab;Bu>KK+r4jwYgWXOH?3*12ZK~UR^;#T~P*~Ktgy) zqJK$}Smz!;Kgd=nUr~c4SZ{2LBg$#ecMRk#YF^k8BjWgQ z&AYpkq|MB=)w}mc{*aG?D~FInFKhA@^$=!?NFEYCi{8rz9%EJ#BTCSgsF#tz+B~Y#0W@L3+Q;KK1?J!}{PI8}vxqHn4pSa?^p> zYdY!*guQS2C`UgwM?dv(^Qq|>m;4w3w#F-K->@kiY(Es+TJ3Fb9tp_& z<%<2UQAQ*-or%Vm5c&7l81mmY_{sn6X)S5{|Clry)pTueeq-|f$?`OJaltX>#&$L4 zc0lG{p4?d?GsR_#PPaks_xA;6+Y2eWAK;D})}3x^udme&Qfnv?(2KROB>b6!W+i13 z8;i^h9G4WDCxuq+{l)7lRZ>k%dB|1uB`WiAU2NZ2xB1;wlYHoPJK4I~$+g+)dcgkq zamDphPv+D@JO<(WQvUq+>~J64@QJ$}pw#8^?Q$+W5fwA=J=1I%eiC}d%%Sr?3?^w;rd;kBS)wwW9Xnmx9>Y)) z$fFCHFMPl^2jX|9G^%)I2LxAZ*9n88ay@@-7XuRej|&E8IE=U#HEb^;lTulx3n=nU zXqZP8@S({8cliytpZnNepqZanljdn%VAC4az}SFCttisZGJ(-RBiD zT&HOiVSnr}g5WOY84dJM3<0$EKwA3-+${M(b~((p9C&(bsFmKF#|DG?GMy~V9mR%R z*tT2L$iCDkl?CBYAPH`BJ<1%mTcC1S9Hi!+SnJ?zh(=2)G%9SW6cx-iw0wZ^LZ#uk zrV6dmrJYJ9Q!aB)YX?A^RAXjABS)6ga5tL#VTMUl-Bk2F*JqN&)+vD59&4Sd%Wy0G z7n1>z$rfxM>}na-3ag>14RezHfzw5xblpT8ztvu3;I2k$KP7W|W8HpTNiZTAI+dQJAu{=ASfT5Ox(3Ktm*}e4#Rl zEdfhi6?Wxsm#GT`<=NnYCkc<2RW(PJL#+tdNz;aF=K95kHGo!}2u!XjIEKtBuADiU zc?IKqpEtqpTrd8>b}FtMKv>|b@TlUEl`#@?p?Fxi!--kgf~1>WIJ=@+ zGAcLz{-GbgqyQ?nf?36b4@Qt77Na5d1Hve`Bgkg8TiXoLyFA+wZg6&pU4Ge~Zg`uw zH(-pxGm!RRlNtG$9*f=_H4=H`(cCwW^609gx zq_6kZ8p#gX+8$>U)E5VoH^8g)s|fp4k|0I5iSFZ0sh8|?yh}*Jlt{yNB>SKwW1{ze zQ850dDmr0g?aN652a4EgQ(;$G;mb(i;kS`epJC$aZ_;{P1fJbhYf3?g-P4jD}k5 zb76?jJ~u%^0Gl`QsVwEs3;s!-dyCm%kNuq|sB%p()Hej{R7rW7us7w3WN zK0<%+uwZiYi3;V7%6gl+BB5Fhlcd88k)H$0qSUjSB_PxjE)QH~nm`Ck1XSf1f)I{q z43@|WTcnanLNtOJj>vxunoZpOr}*zVx5~21H1-W~30Z`aamG%Odv(Qkyx#<{SkF0n z<3z4k^j?BbVCA=0WVXy62sPhM%?SGtPp=h>+a}aC_L@!Nrbmdni6hpCBG$+v-u!58 z#Op?~M~GZUhe}z<+U?GDAA}}@-(p~m=BSLLdj78^QzMxN>x`J0nEm^diX^|di4?UMPx$5EM*{}VjDn_y@id9-h8imExZ_p z0LGC+u?HRJnM)4=ZX$WNd2zLiBU^!ckvvC`N1SEJjaq@lhWT!DmI2JWaYJ~2!iI<^ zb#yVJ#MfV2+Kawx;`66>3J2lNw){@Q!mP>Ab0QFnK<8tzAYG%VM}}M&>3p7;cHlmf z7;pqV`2F^$d#w;&eAkS|BarVVIG@paA*?Mv*_hO3xO1=-m*>zfbg}{%(wJ zwQ>y*v7EmcTd-JW%sbLO0V9OJI`I_CTjyXuBSrRZ>n1n+r7Uo7 zfSkxQN(n341iR zHJF!VcFw&K@LN1tq91UVHLizGE?iN#;B&e@@~)?RDuAX7ytN@#$zn|1AIkv6ZL z-dJvBq{ef2^mt#M@{!hB^l^_{+0Q!&>prfrjx(}gFeBGo`&QmRf}5~^Swx?LN9$DJ zUe_`|2`nW<a*<_wuQV z)=liD<9t4vmbfsX#H(^GSh<^?7~;5K%(>YM{=9OXNq8K(2c(1mt2|?-kstch+iktsA!boHTvmemn-LD{L#iE}OxS*yd1TCj>L|3Wx@{ zTjJbZ@d-=s#)h~8o-H#@w_SwgjR*U!qc|-qJX#hht{i;gd~-T3u%J6N4U6%WpiK5j zp9V5}BvA`*v5O1@BA+7#K4#De{GROfafWZ*VC>}QX?RL8r7;M=$EpZIC>>PjV)x-tAF+o( z4}4-vh5d@pxqk(?a^k0NSF@g1hf5?gtGJ?(DvK`g?2_WO@SSg=BO`6}n!ZU9xhqjK zp4Z?%lOcGIz(0kmb!8nJBWdkht;0>6cKaje{{X(_K0O^)WQ)G>P%{HMY>pDV?C|G~ z40oXEI2$Y__`Nz0bWxzag;MlD`5ECA4EB_9s_!t2q4OHgerSDRBkaj_|E9kjOZ#tT;Hs5y~QU1A1=MsmAFS61oQ#08tw0_=LjubZfoy|Z_~uT1>n1zq9)_04iZgO`(p{K=U4+t}{{UY0N?wz=YDF@f z=0J1%D|rf)gGKgF;~7;bw4=ul6 zQD!`p(`A~>)TYXtw6J%&RTr~vJ9DRp*}47BK(pAXS|LIM9h&EK^w$!Qby^hd~XEod6@W99P=bYr5Odij7r8K6%*RAfK zj$26p>MgHG^nl&}(ov<{@^$W}}WE1a^YE2d@F%s}R2o z+_nfegdgAd!yI(i-$i9;Cn<8#_c0|;79;oY-}Yy{`RMDSk!UmSXiB;&NrD@2$hn9r*pMOC76+zbfi>l9Gl101! zze>`-#C&R|j!ysM!~0T_%JnHA@}{WgR{EoP`48b*6hLW*F*44=0TBn*(Av-IC}}xS zf_{t*3+?tHT;)g37Xf+M95^^0Or$=)d3=5|*wF~`_X4Lxom*0@jp$@~K*OQnFi~jJ zkqbOz0z}2J*2@e#ey=~5-d@3gEp4+8@*PE_S8sz2v$h+-tb^OWIry=5SZ92XE2NVC zDqZN+dXud-)#$~z+iX4Y!+T2vW}%5a3B-pOxOL6DdOkwqw}4a#w5&K5rqNg{znv2$ zjkutqIFvZ72ZMuN`63=k^(vk9;oKlpr*iINe0mS6YFN!8#mPbv1@qYGyn0P>Y>OZxn!h?rO_+@cZ7=|ehxp+s zV%ZpTFBD3vt`U_#f{cauBRDY5OVFm#2*n{>mSmQQ-!%|xVYucU?ynb9qDtJW{Pkjx zzRb4&zTPDJN4@!X2!g!pmx|QM!qWbKD@vVXd*%B6(t_tEQHAH=Ekt~EvL6YpqGVw! zX}97kOhBZ^sw|tIZ1KFl;g4}t_S!QhNFID1rpuUhb@B57L1usfz&W7orH%?E*|JFK z^N+Fw7<2KplsPTeRL~o5+g+m0V)!O#egKN=X*{w-o}Zd8k-#6;OX{>v zn(Zkkg^=FTpIpYMowQS&?sH%ss)XA0ikp6nCi~1KDeG)j?uj8+VHBaSg!^*#)ewsI zN{igIDLILA*j26^3yENxuAyJt#2wjt;G|sD4m&q<9heBHRmG;^7#V4ACPj` zcJ}^FNq^C+h;#Avd{q9UA{X-?Pf*Fw_5buKqXuspKGQX*fmWhhH&WR&o(`MJqVS<0 zYeCYG6k_R&fj9RKZp{sS?nQ+S48ZvQ%okrKJo2_EVEBLsTuLQT7)K@aTZKwWRh3Fi zRfT&8cy`FG1m0YjcPGxfw&$0(ZF|=9K8o{G)GpVCp8%OUek*f-DuDJhk2BTdwNa0L z6Adz%Oqi_dH|`(4G;f?G<$0{gW64OH>bi=8{hJKWps9VyyL&qCakHKCQ5z2{bzDtj zZ--xH^{!@_+E6yTs=%6S@&?jr5RN?ypPi*Y{2JB_CV0$kDCCXp&9bF@tEz~M$8j-J zrry0$f`s3q1dy>q37|IuJG=%)srlq$6ZrH!<7}1jCd>xC(M-m>A8R#c~$L+e5ijA{%eT{lwWMhai1>rhi zS!1wAX)a;ZjP=%h=T8SPD1M!Pq`^_6P1qpZ4ZJa)?;05cMifG}_{@ps#c<<~?k%Uw ziUXy$HP`CBhZ zutZiBi|r17-QfcP`Th4I)74iP{rHbz^iS7~{KFLR-!=_ZYo}Ea)K06676;@TIZB0` zhC(SAR@yrtO4=q9WyN8p_?@ByB({ek$g?Cdt=2vB>o82dE08BeSXXsy?c_|%!>5eb zmCi@4m&fkzud98SGLj5{d?vvSkk`J?Z76j^9G?;o+L12CxrIkjf3$Aev(kAmD~X$&;7oxr^&8M5;Z+m7^G)TAfjOta4Xv9hXR7jKT~ z$k<-8#aq2^i)>+~=T*X3-%n@hRuzQMROW3B2;&J2>Fy$^Vho7EBJpSWK3P5Kmco~Y=TPr;`sbJC8 z7rmCarJg|`dcjVIvC$+%%Y$du5;F0av5PP!9}JO=d3wmraxNr z2O!dd&MO6Mji0+Y)k4Hn1OlMfo*oX8|cchLVeV0giWWLq}8PFXs z5uKkV=QN};Q*NY^4p1}ZeVs6JJ6>qOoVKDa!BxeX=0>Ph_w?9hXCm4MGJLNaC+67{ z6fZ!bW_4JdeKdcc(=lQ$CsDKhO$nT7V^fwgfc#9%kN$`5p4kMBHfl>21S8$qLCpHy zvdhmU02Z8M1Ve)ZYF>0;_xqhW4Jo@s9$n?D5yT=nwzE8r7aCvSX`bY>x3GF4X0QD( zsy3x)jf_A-sRr^$7YSk_pXA+5@~WCMslIo?Wf*_qzA5?#<|()D()1G+%f^lNxO9GQ zb>I6`DSC+bXi^4t5yMC5&7YWVl!B`X^e3-a_v}ocxNf3gF`k>5ys)3;f-i|S$FHbI zHm3&lCkML|B7E7^KRb2a8g<@YTRre))(`1?h8?y)V-#A0OTzxlWp)d^DtD>chPuY1 z%6ieS1!_ON8(+r@bVP;2zurVSh;Qo#WmCMNUhET%joo0br96G(OL+?F3z70IxT@_V zhwfH+LNh~m`zFtf)+M%&sVAY4RUWxXQ9)5b#e$j!Z4G@2-L3j0lnb`Ge{qA1#kp@k zRLr?+EKFVOg&-&A(5pO#41dCgle;)Hwcn`j^cH>i)Hzfot9~>=@r9G-+%LAoe|w|B zINbC7>(F2$9}&CyIxud(E-?G|mES)RGX7rqNt%2CRxHgd|861*Qg=5{zQ_H1n~%zYy7D;hra5l;s97te_@feik_>JWg9e3$UMn7!YQecQQ#EL zov+KwaXT#%UfVuc3u^1vg*VOKluip~>%qT#e8=5g$X54ogv6BvZ7Na+XX})u=W|2-gYw6(Nq}rZQ-}L=%EfdE{us(=?KRPwnOfXfjIoCs#q0xC7=n?omdz zP3eb6*+)l1Ars6?%rGAjgU7suQhJGkN>XqNSYVbGTldKLu<{%h+SD||? z7=j>usCRtGKnbzefS;yz>kVt=$lDTy(2LK|PiE`f=_yC~%tIY4uTZR}!CyNbcXVOJ^nUyxDAFY?Ju@6}Gvm7!ns_xV z%P}snF+_c-%^V0){xU;tB~T}Eyh3wVebmZQ+FjDD>KyD;Y>Z(z*)2A0P_wF-Ix_BZZl&jw#z_x%uW24iB?*2mm5xQqQTdC~*q@rJFi5 zMJZjPBU%#%ZSE2EQxEsMZfVHLF1+(gS{nEpKWS9teC-6CofX!VytjfDnZ4~SrWeKN z5DDla?ET0dVS{k240>w$orEY0D$%A0MI=>PJe?yd(GVQ==yK^8WMUDc%NQoHK<4Ib zNwX;Ifq%~e;YwBzmvt!o-pHKZ|m_8%Zb!{qua4bf#K6(v|JTcI1s1=ox z6vOal>^Y^n0oNU;)*Z6R zCCu9cu5P5rzd1A$6p83n(*s{?xvSXmU3c1rEgD|RuYl{);tD&Igz^cn=L`8I*=4B zlX2o2)*vn?wBF4bb0Q;E=A9W$w<3iYg40c=Nr@=Y4dgoMQbS(y{$5dBQI%C6Dj^%c z955rV&602wEm89+RyR)}q~A1}#LsZ#_{w?f_zuwe4|lw)@` z*~zso=71$Pu5ig9Miq4M%W=P%zz>o5Gp2;;;&61U0&*?mP+EG_<2@?mJ8<>WTxk7Y z=HZ0;POOu~4w&gB%8RtswM=_3&PGJ|lPR}g?8tOFK~i0NRmt?4G-fj`=@^>c<7!NaE zFWF6Ws*-Ke_?$@%bi~!0t~DcN9d5vEH(mG*>UKb2+D_wXtnWVd9H4s|xVF3HoiXTF zu{+QZxNf0qSpH$C*w5})kDc`30B^pT-eHsJJ70UuXC*8IxQv9@nIU{}X&D#mG5Xtb z;Tcp)!R_fW*M~V@P5rOXFSMcPH=xV|n(fFN`W4pObDRxnFjTYFYw-P*{mZHnvfb8H znw|_WaDER$NPD=(u0$j22*6`(5upt2qbczkpvdC~1y8DcIDB}0A8d8=H(xEilAGwE zGiu&G2&DVXB50*~v=Ox(!q~SSfCT3m*9y_UFXsSzX!Dbq5tq|IJNkHwkHRf^%GVFx z11aH}Nq$)#xnmdw`Z+-Ors7;uslC-b(U^qRYRF&#!9pGNd_g(SR^H97^-eG8F01(o z(J@@|D4H;R#nI}~C6h+mSbWNCU!lkb@eIH;+(VapiGx9PsuV}Xk+5WLS z8K|JkmeOiYU+;`Gs$~|xGG3ue&hDIB;z3UKkn=NKjw)=sqhgd1)okA(bo&hu?uONm z%I;l~OnDJNSJ(_;ON3!pT#096=(0B-V|Ntx-QKcye zsx?LhW`N{kyb0~N77y?(l<5Vx$5yVqlm~=iwfs<6NZe#du6tK<;Y>kuVhy;7qjg<- z?!*fD{uJ)#H?$E6)HRxvq-fVMZ0@7F`{>P|*lmo?Yv*05YR$aCO7Wa8J16Kj2G25{ z(f1o6v4>N&2TS(=x+AV;mnK5^fclTmXLHw21-sSrT&lUx-E3<+JjLt zs!|agBD_2)jxBOD!H=jTXUnfSsIIYQWUpO3l=V_+Re#X0ei;4nd#wuQ?bEjq_n0f* zWIm|NVJ9z7;SwVCJ*0y$DC8ZE%~|sJlm~{X!ym*pMkpwsNZ{wjBk1XjVn1>fZ2Yu& zqAiWE&BDnw^Rk4ZmcmT)u>XXux9APbP(0k=+wuoALkM285ba?82nT6VzT39Frn$hF zW_F7)NO6OD9i%=&tKQ+fX469!zixAbunRNhAluk4f0xZbw1Y|Kkc!$wO5OPd7<~UQ zNSm_Ltpn2i1=$x@H;m(-Y{8mBgL}kEY?6*PoEwVZ5d9R&-MkwO`YcP5Ec@ie&Ru%^ zw1=jF31MosS@DHLICfrj`^`O(ciP7hAK4FzQj|O?Z-_?DAmb%==^brDm28dl%c3@C zhG_5#f`+h#P_avT#{)wWvEN1$M><+F3>XZ=Ne;Ix?gZ84 z5E_iTQXDIN@N;t1$cWZV6t!z?tCa^4f9|hz>*r*p*0F7Ca~wM>V0`*#FO~_@*R

|?;pLbFYxmJMHlf-T$M*rL=5pQ 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 literal 0 HcmV?d00001 diff --git a/build/build.xml b/build/build.xml index 1e5f0259b..36b3abc74 100644 --- a/build/build.xml +++ b/build/build.xml @@ -1,17 +1,23 @@ + + + + + value="linux"> + @@ -317,13 +323,25 @@ + + + + + + + + description="Run Linux (32-bit) version"> - + + + + diff --git a/build/linux/dist/lib/librxtxSerial64.so b/build/linux/dist/lib/librxtxSerial64.so new file mode 100755 index 0000000000000000000000000000000000000000..d7adf2d9ca5f1f9d246ba2ec170cbaa5f2cd0a2b GIT binary patch literal 61280 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 gQ~o89a+Pcd0!M`^EdT%j literal 0 HcmV?d00001 diff --git a/build/linux/dist/tools/avrdude64 b/build/linux/dist/tools/avrdude64 new file mode 100755 index 0000000000000000000000000000000000000000..8892ba528a1f8b151c6b13953df9e1802123144c GIT binary patch literal 704076 zcmbS!3w%_?_5W^?)u_Z96*MYJghjyz66KL7sk>o=cQt4fsHjlDKm?5tVHcvJ1b0_+ zdtHoHTWYP+_SdTQQR*XxRml<{0j(PFg;Evpb+6%#LIffI?|0_j-J58B?f-ZAEO%z^ znKS2{Idf*_%p;3R%f@85-7fpdaQ(t1VrTe7lKkK0T3U9j4dU{-3SGzG|8rbk*HK9I z;Ag}6tdRZguu$9YYzs>!-dXq+X2^uX44(+t@4hnGWxs6-`DS_P$7coQJ6cN2E|>jw zx$;Gv`ABQ_Rq}iGRTU!Le*c>v@vIvy-*!Hd$4^78d_%2#_ItTSnEkf-BX9hTxA+^M z;X{mZA72(#={I5dlz$bP&am%jNvH2Yab;!;{NVwZ7-^^J15 z#tP@*eWexVD~Mk|D^8k7_f_}}$L|;Torj-_AD;kz=i}F(5yx}26&{E8AS-+t-qhV8 zR-CU3@f(GoAHO2}_!Q$eQiT5d|LnT!DTiH0#{=MK{HP;c+f3J-#~_-6-?diqnRuUN zh552n*pcFLo$ZL7f^cvAE^wqVcn*GE{7z)VdQQgMwj=`)F2wIr>sueZ^YOa~zvJ+; zpE3kSSdmh^hv7Haiu%h z!wXAFKiEF_j0gHwPMDUv>Gp|z3-{`MSH$-m|LuFbj(_RT2b?S*NBSuM;-CAtrHAxW zdr1EfD1Q#mTM+)wrH6XJ^J)+2SN4#;tA}#m=mDOx&Bw3%laB=cx<9Ls@N@Lf=plV# z59wMD^c?CT{l*^Tc4-gr`+G>gqX&BK?E!vX5AZMcK#$S`p6njrGkSo3ya)KRdq~%M zpmS;u_}}jV&u@B2&+Y-wnjYXIJ*5Ak2RsXUfM47LU*GhA=b0YxRQ3RG^nm~OJ*4;T z0e@8w_%G=J{+S-|>pj5t=^>qc>d&>u?|Y!uJhxBzll>2ZG>AQNsb7v3f6+O@y>H+^JJ*3~# zL;7~$&votTY%;O+-xNFLkn{S&l zd&<1fw7H=vQ(RN7m_Oy(88^?G7n(75bk($ZfOAc$oHcuvYYP4gF?$6wj&RMJQ*rBz zkZWFOZbkJSKvO+;*6dK_l!}?Rx@Ob>a!T;(Db?Xng{yK-^^Dnsn_Y2RHQ#e9X3j+h zgr=_jT-)thBH|yrv)2am6w2E7ac1q>6SyiriGpYzScgD1; zsyP)vH+|M@*YsKQi8wT8x_sR#UsbMI^QMJDcepAl=gkPsnpZtz#&lQZ%`-yt_`Ql$ zAvrYbwi$C>x6QZ>5tIjVX3v=d+|xp{=FE15Dv%5$b6vEIcJ z%n65Fm6B!rKaVKMNo7UVoOv@OMd2#fZ8qU^E2hnxL6HFQjM?*nuOf6u^^7Suv2YiP znl|@l0)Fz_RCqyehtEU*9| zr};O9E5Yw<&4cEejxfz%pa{w9qu*xM|)z35=xK(_NRB1xrRxxoF6+ROsS#$dP&x+5(=8 zF8?w`%ubiFt`Hd*dGnXmC11u*;>`8a{2nWpo%^Q{%;&~G`L@Fx=V!TmAdK@kKD}qn z!qmp&+9T`==8Phq-iFn&~k?EY@rk-+HF6VDBS*a)6kq#D8Pp%`~B3*pTbEMn8 z0)EJMq_b@M8RSSO&-OFakxrWIr_hmZ+jf5QInp7})T27m?Rg+SmOIip7qy>>j&#mv z?PsbZ-Jb9B+e}BgtpiN2cBFF-V?Q;Hbmw@Z){#y>gZ8r4x<&JdpnyIJJkxrk3{UjafoDGUPpPq`!A=|`F9 zNFQPY<2}`pPQQ}<%ygs=wG;8KcBB_L(rX;)7dg^v9qAW4((4@Q9Anu}y(3+87}kfS zj&$3H!%xc`=}!OG(~fldhU{m#BfZE@#Jkav&at5VBpvCte~I7LInwEiv!6CcI(>5X zv&oT8f1v$rair6SX+MS|-DfA_z1xxQccgbX(n}oau4~i!KiZL=?MM$e(sLc@rH=GG zNBS5?dcGt5a!2|gN4n}rAL>XCI?@Xr>6}~Ij~dyYZM=mZ$G8FAi}6ZEhD(jC$zI(# z{LYaBT%7|K;(w)|4B}G_=$|O3o~;?{8+}>b(t;^&tRNgmbv=~5(XX|fjGM=bBl=YWt?4< z*(T!OGS05aOp5q6#@QvA%SHSX#@Q8_%S3!5&MwES7V!k* z>}t%ZBK{)d>|)Gv5&t{m>{?8pi2s>!b}8mi5r2$vb|q%Mh(F9YyAU&1#DC2=yAIPO z;`cJnF2me?nEc<#cs}D>M0_se>>|uI5x<3Tb`54y#BXApU4pq>#BX4nU4gkw#II$X zU4U6H;#V+E({I*_cnRY)`DV3;H+>@BpK+RWbEt@) z#yCy6nJ?leGENh2=8E{SjMH?RE)maQoF?1c{iCS=;fT{zn_EPDFXJ@PW}AqA%Q#K5 znH2GDjMF5W%SHSX#%YSpWg@!eK5l=8qQ)^BY@fR7V zi8aeb{O^p@w3spe1-e~fXOQZrw~A7-2;)XWv}Uo%eAX}U!GUdCxM&E1DY z{WI=ke2a+BWt=9`Y!mTY7^i78lOlc-<1~rpauL6QahgJNnTTJ@I8C5gFXC4)PSa=B zig*d*GX&F`-fUIt z?G0*s5>YryRBhEtTHk`C(RQ%26Gi5sz*KqvYyQW(=CA*m{QmKN?Z*k);mB78OUr(#sE{R=Q(`g)9U$~74k=ZoF3|}UGQ7xiLA-J zak78XYNa2vLHFE;v{*8{4Ja=|aIcb!QWCG(SR2WtvEv6K9%rFz^^8S`AKL$E)yt(9 z&_3MrTRmq4-dcNXedx6Iy0kp>K4&65wo!?(H&ONB??JtqNN1!y!}ttz7oE|8q=g@v zR|BBlf1UrA{s~eFs`mX#8iH}^;_ZcJxm+z#Z$A{?iT9b-`wZ*dmv2?S+cjO)vj);y zsan)K=qyoB9h7q{3H7-uh+Z}NKj^*GNRs+gjD!}?{A)l^i|4^;Wx5O(R%=T%wp`pzRqjvQz^t9kLZT09{`Yg=XH z9%!zub-9#4n;Q3Ls7hd+Yoi+ZI8$2}7;Gr9?GQ(T^YxYQqCU&CT}A*E+4OHjfIS~y zT}HE%iW04(wBnD8WRXb)wc6)~p8(p&|2HxQZwj3iG2H6X+SjvK-i4tPB|&e424a5+ zVv#9Zt&~3@1u{+?4UeQUWl|N077z8YzE7j0OyCq5=a zT?#FCx70EnwR8uDE(OWb*#6dlm%YAAc{GV2J8&1?R1}vM@J><@$)9?Ah0EXMn^nP2 zV!DC1m==^45Wz4)6O#6yFk*;F8R_WM znw994nJ!nnWL2c&lKEj(&sjMJ?NTppg2nV}ZK5?Nj_q4Q<1%kQrIGVEAQByC0GD38 z6kv9XACJ#Xq8@*ZP)gF!n+uhw8v}{7v|0V7Ai?|={i~Mj^sY6A2z)*o>iElEu0<7W zG)@rme?&x4a({j;dQ*wUfVB1!mlC@J0f^4m>iHH8f`yxX&}Jcy^F<_EMkXfI@T0MK-vAK0!LaXE}P# zulb1@VXH#$J9N{X#=Up}>Q)CesMJwHjZy*}%df1|t1!YAm0E%Tq!}=;K=}{^M@p{B zdh=3}qZju@2IIQ0WeHa+(N8h7M*8DKq_r3ijE12?F4RLb8(AWEWxJKw5ex{}$d`l! z@Ei%;>f@@d%b18f=4OBhzWS`Vkf_Fc^UYSIfrLC!VF^Y&H5Xf&_AF8Ao(BXl8l?Fc z5_Hc@eAh$XNwK6B@{U)c@htXjS0I&|k%Jhk?QD$a7@r8@YhRZJP>HTbW7ID=6R@`V zi|tTiR6I34-aA#*K9eo14w8)}YkE~i7J6%3O5Fs^o&x$AU!j4N#x^Ul>A*8Kwm)=& zzxEfGg^%;s-s6TLx(?=dY|O6TP;Y~Xga0Le#;c^HDB_X%oim1qM{mBoD%n<`)%RzM*D(X#JvN^A{ERu?anhODu6afM4& zN@3Sj)M!3Pl2ice^EVLdej|>7vgp%LlX<|Zf~7)NsDDt8C0RbJaT)~xnHEBFooz^| z`;L&P&dZ=2s@57ry$@p$6`v24R-zwc{uR)3-a}I<#R#CJj9*af*B1+X{ZEeXHTWI?hCnGsYNzVO3xO7bjQt7ywm#k)@N19042sx}#HdAO zYq~QdG*BOY4MF!Sv9AFtzwK47_Z)!U?e!}s#2S%JFY}gz##8k^UIJre@-Xqjp!l^| zlAMC~eDLn?eAEY-PylaJQ=pjCp^LH+&M~0UvGq#qY2=L*Z$-?lEcp?VlNqy-v0%Rp zZvsv`yu}eV9O2yvqkd$D4n$b$1e7FXmc|n)o-d19j~TYiU<`)2B4KVcu9crcj%C^b zBZL`{sA#CqTfi47E|wWj##CG{4ZOxShFnXIrwZv4YW%M=#V<6zU~~KFr3GI`f%I=c z8Xt|3$ZB^{X+T->G2)TpJ!pmC_aQ`-hOE;@b%xtY3p(3Bgn4Se49!U|-hN(JD+P4M zvR$nAN5rsfx_WVMF-{9;Ta?&qkfOSH4F`D~qWUNMf90RDTGdOTZl2!*qj{aMW5tgG ztyGxg*=dEk9EbyYpYfoo6crksBW%U+nE-AQ-N^ji=>D!pYMJi2a}Wv484aujNl;n> zDF2E9kXvFM46YD3yZmhGt=gL9y%3*_FL$ztfqRCqh%c4s-!L~qW)Cut)eK3}PzOmb z1KwN=peD!&{vAXi?S5!0pCYcddRl)mz*T*T&t+akpj%LeqhUwS0j*89GZB(Og|f9r zPh{eqT@zy`Bhl;t4rxcg*(_iNX}6rqK}9lAb8bpdvW|^B5F=HJV^0~%?WV9YRYhu~ zI1@~}l?VNzyURINqCXDk6AwGOq2?VRu^t}oc1AoF1MlVUJ?rq5-Zfucd% zhvK{VTCm^9rmQX(qs`Bay9%h6u#e}-;{JfFL2Xka_Z%^1c?3CaJ5r7krG>r^A!wMn z06mb>(Cai5aVr25iP9ABMt{Ii(M3n+Z;d^NR>4OK#cW4$0qu*xF^3|>C&Ds8z28L} zqkZoS?^xvSK&BGi1Iu5kG+Z^?kN@W2zcJNH1C{77lq!*XUJ1L>Y^7lps$ttG%!jhP z0AF8_9INdXR2z?PXRr0Q^KCU&kq3$q{UfY8Z1E(w5;agP%-ke&iQ@zMLT~TVSZDY+ zeC&&l{{jUF`Z_U<0ahFM+gJ~$(!4gRrOYDcYRpNA6;tW}0lBE_T z6Fv<5yO!8Xl!(DP`dYihK~{;m-Afz@jbnKfI?JOpQQi%x{~rgE!<-#O4i0NjT6Yc~ zH=+Lvy%V9*7JrEwB!7QK%jm*ihE*DCgr%_#WobG0p%@f;KMJ+wDcAyw%Q?5P0+z;D?q%%__ajXX6Rw7UR?4rtj2A~?mU5OTVM2{C`hmh@(ea~| zr>(zv7%W2rzK4?wwC?XOG{vyHT;ut#Da%*U3MtE10c`#Q9ZlLlhD_I>d?Pdzw8WBV z=;5=?CqcID_q6TjycB@6pZCyy-or$FC7&0Rx#Y#{9kUXs`(x-i>1YE1p3ldR z=2yZMkCLMo$u`#)g(Q5i!zd&Vg;7%yaMP%p{+h3yox29#Hqbq!mo*GJA7v54iv03ye z*IxjpWuKt*SP63+VJ@&4Do94wx{W4+y-Gs_s@NHUswQZ+ztKU}m89ygqR$N92C5RA zf9u7s_3J`ah^XpOVMKMNL>20e>KdZDL81x*)f|bcx+|)|L}jV^SP5|zA-WNtL9jDX zA`qP|!Or;^u+7^5Mzw^pAC2$Qa`ch4xc^Mx<=UaB<)$kkLgQStK{zfp;}h6C|34DUz$M6Xx-^HTQ ze^^Bqvgm(6>rwPnS@bhkIEo&M(fH36ectKt?ni)7`2Y0c0mzKeYhtKvp`nx?ZSCxA z*8y_`GiWf?c?QbvzyRH99YzBH%$udde;YnZCUy(bbJojDZ!%Mxoe7QrAif9rfc78! zl$YY=3h-jSET;nx$jos<`0UKc89+{H{p*oxzJp%Ej{}DRRaVVQn*FopkWm+f4 zoqxh2BrVkj2rANX2;B<;y5}k&gmoT|2tO}bA)DPVQj1B4T~)_{6dT-(0~S-{ za{vVD^N}S{O($ezuc(((m>K$E>DYX7d?lOB3-H)*Sghx4#~eH{6@w1*YMEy<5+H(q zpN@1#i+clXp?~@unJ9o=A}gWq6C{F!KSio7i_rA^C^TmR?6j42{Q^XexPczdp=|DX8?LjB05M7%ZTys0^{(1;iGI7pOBb|AV%ojgkWR7 z^LCG;VS-euQG96=)y{6&??kgP6@cfyO+1s zb18y+%CxWdDw9^hE!*b-6bE_s@cXyDU$?4uLW#AWc z-$`DqQXD4po659>-j0>)*mp&?t7075+iM)ac9x*Frm+(b_zGQ722q?+u;aBX5bDSL zHUM)k+BQ9&gFjX)unhlbwV3^Is2%X0vg)hsW7bC6-C?ZhWP!;}rSwxRj}E&@-aN9E zPqx5Ym3L?vrg(*Am{t0~r7G9Ap&rxVDnK*5=@cqoGLc=7Ziy#v?(7uQwf_T~1)Tc@ z{J#upANnT*(f05jAH-t(IPEPkmv5W}u56d;F|^XcUuzsIla;8j-1==b`fY(SeQHh7 zr^*9QfZy2Wdq$vx33Jwv<%L&lqpz?f)VF=OXzxf2^>O3>KyNr%o89;pK0UI^UG&zX zFTqW|w#jygO1|JZ@N4V9mVUBmVGH4#pwG#tG_;^oc#R_WOOw>$V0hpsFyLL$rRJqY zbZ_XzmjIz(+hk>~NoPhq=g}dW%b5`(*=5==uhwpC_!x%kOq7Srhx^bHLqYZ=eCeEm z8sizlaW5F)J`iw57dQzOA=I&e>RKN{+k~pA+IwjwEY;Qs%@q1a)eC9|g4#Q3Jmft^ zjhA`*1hlnW#5uVvj)@Ai6$@l1VC|!cz4Qu9;b5db+xNGyCs2pUNfXDUE8uRhQ+;(+ z-cy=5yzHKOauY|@-BbIBVno5BR6&O|UMs+GL1|bEmR0Q&^k#CZKNHISU+6O0A54tU z#z|iEh*fNa)4hgha+E*^m>(1rShWvc6P@ZE=%JmhZ>VT-ehpIJhQ^gF({`evt~#78 z8lLgk5wW^81Rnm#Ax{{~?W*3_%O;l1CYH-4md7TR4+R6CU;J0y)M7{EF=S}8g_xV^$yHOJhx^EX2wBE3&UG~YFF zI{Gk;8AY!^FO>SgN$6Z_Q6vbdIVU|YizM9vw1-~C#UKG5%U%+j!Qms88YuEy@&=Bk zr#K3LA1F&Nx$JZpxth4vvqH|S0399%$QlcB5bB!iSZJ$Q!_!u?>e8kJ zYb$pDTCf?*gy9R#07_ziK;wIk3c=-Sp9i!fby*k(aPh~;`~icqqR*83==`I)p93eT zqm+~Z*Vcv-sG#-}SfL-&BWEkdYp8=xP&nWo{utYyLbrMF#wLafWZ%0SObBAAh@$f z0!r*zNHR4V$gNlGaexwg2wylB*j}*Nd>x2|y>4P(XRXwTDw>Zk=EM|TsnSofO1~GM z9HqbHEInM1D*315kUnx8vRP~^O^t`**NgGUYK%uVnP&qxms+8Gy}XHc*$eB%b8}Oz zL0Z>8#*8d zSEzcI@dM^9FcJ~$wVRAJx||;{El0Tr721JSLCr|yU7R)r&%S4yg11>d_jkcibBh-S zP}mK4m`!M+8fhwo>Z06`H#blh@G4l}$VB_U!N(PtF$hxUu40Af+Cv3wsEPH(7o}mm zS1CxMi{d28RXE;zl@eW!;8^`R?=qx}h07`WBHE#Ue+v}vX?{X~v0)cJh+%*dU5qp} zKFRA7jH+lgkIMB~5#+KhIt(->6ygI$m$47-D!=mTM>5%%j&>;Mu;O1LPMd;Njn4!M zvR4Yt^KpeT=0S0E^!F_-*ulY3J{Ys1#1x1?B8dTsC`qj0qll~7<_CqU z)mce_)ZG@W!1|LqcoR0R%zeg><_Dj>5^Dm9el%Zy#U0h^btsJ%WMRsVAcG#(XG+Y{v!r1%*P^)TxOMVCoC2@M)B3UI|^t_*Lc~f&Bj~ zrz*rnQ>GL`9HGZ-@}qu`<0ul^dnufH(B4rwsaBI%4)rzmwW0rbWg#k_+bE79qk7Kq z5?BFnVz)!dTL3Kh;DTyXeOso>_zfg1v{j_rOZtbw3h=aW(yte{_5z-#hou|KJ-}0t zG`|zP)&dqP1D)i$+}V`Ga-=|KL#GNwj*dk0WO5^t&2tf{tY@^2`LqM(nMlEqvJu!& zb5G(`$^B5+E&%W?ST}||9l}U!K5MTL-#g7)kjVjJ1;uxCm7V4l_+A#jd?I+-3uhR3 z+IJjyDtE}{@9$a$z*-#6SuX+K1fae2Ad05{2e3f(l!SO15ExV@@*EPHBq3rF;yxBO zG5tBHtq*GJjFBu7%wx7qp*Y9)=^-SB_F@QW&1cYY+w&QxK?-VbE74=2O=Wsw9puIx zJy9>>Y9zthz?AP}{2$z~L-2rphgKxl-}#8w-rw;JBNSOse<2B2PM=2#D5wU<)kvdt zF_vLm3cszi7{-Yhk86|=Od3_w?shmcYvmJ5@&T&yBQP0AZ*r}A~DfrK-?+ocx%sduVuqj;y zM&fPT;6Da+`0^NNg|l>i^6 z+8?a(O&-R}oiK>41v_A`#pWt@fH2#r{(F(fAHTd4{sa#1+OHLI^P^kFfHibJ`+il0 zZ>$0u_8taP2lmCs5V#22L0^Dm)uJj63jcy&DVIj5Y$_}))AN=4=>H1>Sxv!4jK{QH zN<-g4#{6BHjMc`w@GYTCdT*<;Q7t@WBP8Fn51qbW`rIB9Eok_a0Fcg` z>row+^4d}~i%~I>50pqfFkeMWhrOUlOP6Xq4=X_*Bu8n%3JgxcDR{*GpQE`52`7mu zP^$;_1P5awCW!Gl)FH72nqbtwMJ|S~0;r_q-GBXr5}Pne#HwN;7|D!s|5lI%>Ev^O z>*zXC{ozl>Yuuq?cG4_J{TBQnGv-G(PDXvBs&Op9-h+hG0XAID3Gn`bvlBsXsrCcl z6V>2C5Ll25z!8$o-9nrs8x3!wkQfT#=nRTm{OM6_1|N$tnw7(N2tZ==VO}PrU5nZR z5WFkGNQwC_oG)UE3u9&3CwgEU115~6#%it7BniYnYkA7_XW5FyIOtsJs~87uK~iwT z&h#MYe@KA-Y?7}yCrUk8s{Me#q{XsSJdO4f%Ofn+F3VE2q~I}xG75hd9)qQRss`uw zu9kqepUdcPwd|DDVt?MxUw5>00{sW;WzTQG`BD^a_7)=cVH7Dkt5UiS_2Mxew37T0 zsaiA+ud|KUA7s5Fe=YNW1ht_@aa_Shzi?T$pCI%H{i_;j?G-tg9|}Y+bBA}uOOB3h z4Cq&9Ya0TXk_4M0TaU(hmiN9muu1zklFa1($o}e5D_?fsqmVVcHl?ox$r~{@^SRWe z2R7vQI;#E2Zu4gh(fwkY-+q!P-_HgG0{oGV{LrvaD!&p;%Hj`f z3dGAZ1KOtdw&+)9VVI7c#_D^<)9%pO!HQ-ZNg%t|QA8Ae)j^N+I}z%@h5$)=z}cUs z=usLrw&zyX+o%LRS41w${4eRz+TQB`HTgeB%?gfFl0Tv25y}atlSo1WD&_h~`H)9e zcn1X$FF!f}SN2v422yEzZ_BEKnFl_JG-s+68~bOS47bR89gs|9i~GGT(PXHReE73d zq7A=d&Hq6MYb15vhtrtvFpc?OobgZDEnx{ibZJU{T&3p*P}o8>UgN`-X}xY4yO((V zGB(6cIFUa$ew)e~euq{p?f;&jea{I}wlOXZGO)eKiC^e}EVy9 z*;-{i1JJR_kS6t7%*TYgQ~EmLHnaNNi7FS|lW2sf$_(YfM-U3=^L$FfxJivaT!KmP zn{Za>^Tz9Ul?U|EWdVJhic=Q>{l-8*zj7+}A+J*!Mo)%XU>_T&b-qO1NbHZpeq%al zh6-b);&fGB003}dZ9-~!0Ol{hOxvoDu7)9Cf2xn3iC4Bhdb$ShY0|iHEe5rRvlb~F zq&O@-T62w?DypkF zLU#!HsTHf$cyC{1)I(WnJnJF7CR?x0YW(A+C9Va%^{j_*h{83h1pDM0e~TpOC-};x z8wkrBDhLG&@O-F+775@5zHH;kHC*Mu0P<{YZElF)Da8)pE(yg-;g5x;@)Gt%*L#&go~ z62=dU-d@0uV0=e9elFvmrsHQZ{&qT^$M_rRcrN45r{md-|1llUU_73VABJw3cccdPfH_5%*;soD>TI@^vz+EA2>R-+H*ra@+qP*fK{;=2Hr+l(z8 zF*5*PSuZ?#@TW8_MHLyJarPQ?|}Z>dc2z0P%%Edj~$`@!UOn!e{)7ae}ePGfc`>Myc%lp z3Z2lzroF#8t8qE11&z2Pvdx`t?rhZ@+19N5ENe6towGvyuqB+z+~HZd3rQg*(s9(v zuMtvW?;;)Z{eU-=cn8QZFg*e1loFc|Zd@g>2imakfsX1CF|iG3k9$dPKzqQO#9Ncj zo1pe_0KriCxr~-lrNI2n4C?MMV@EE z2tWy+PoiF7hzFv61MzB4u;Peu{VJgtIN5=j0lh=5W!erS0(F668i(*T7!P=`6pLlp z7GDPJZ)b+GLK=P+`@pKpZY9Mg0_tIxmq$^t)oNaxOH?*mUt~3fLBX|y@;zd!cLt}W$S2I-7$Kt*l9#JSudKA@U+nvvwh%{uo5bc& zpMvBHdT~_kBaq0U9Hc;`^NF+;E%?Q=B*y1c7%K!uWSN8|Yq&Z(;Q9sfJmaxW>|v1D zS|PoC>R(~*XvB==$RdPNS`*4wD<%Z!{%JL|H>gbpmr`ITF?mJlc__WO+yj43R?DZ$8 zb1joW&>(Q2>TgKtwirLq2;;Lql`Fh~0s_sntl~+H--LW?QM%Dgw%Deme24y=d`||4 zO`9m+e97Qgv~S5^reF}`DXc`wBg~RjY|Z5G%}ZHIcDPkDM(2)fz}J^md=IYzG*k93 zpBqo(qnKT_z^_B-Q-B*vf3!cc#vRn)fcV_tW!4fw_+S3Wc6azh*%H8_J$GFVtnH@U z29f%|k=nXC-TwAp5%Sxr55AJk7y}3Yjs^d(qBkyn$SLW^n}4QKIZuilYdI{KfPV zv3^6p0`u?gN9Pail!Z0zLv|w*PpydmZ)lv{tJ?T6E^q#xl?=G9tR8qyb3j3u_7@eyY86gi&o`wpc?~C{K z$1v8@j3oiM8zGWS*sYhC=rAYefC?#($q32$oseOk9BN~pqi!%T(p8UX6D46MReys`E$M{D1JOp9hrFaIe;BMD^ZD7H_arf@+>O8&Gz;&zFXFcxC~ z#~;tsW0vd=Px`_*C#+0P`_6VpwA#V4Bg4ICk$LC}rqbg>8s1!>yh* z2=EcsGSw5vfT~}fi!LBdpMH7Q`%Lts*+V$LXLp0|l3#*5;jiPaEo|S&QuUHttGh{m z$L51x^r_hP`O=XKc9SMlyqs5UiyU!dejVx~Ts-wW{REdA8tVF@z2Q9!Krei`wm(DS z+lQzepAsK15M{^|C}g`N65Rz9`vpm9{)!glhAvTy7UYG-tNIvpU~r^h#|Zw1J!u^y zZGwJXK0f9~E_5SFng4Tea?$YWJ3qjH=v!4E zE$_4e(Xzg8oD6TE!+++7!P|o=Mxril52UM$2B^^J^%5KM*2EQPAHsMxEeD_xZs?xu z`UR4Ih2)@KIxKI0Y%GbC7GS}1lV&DzFH5MJO5ap2Pr&8q=A~&|BFOnrv?4het9Qp5yBX@A2clK`G1@ zIzN1%XtTN4MjXG+=Z{x+uAr4gdyJQ~VY{ZZ&c7YUJ)gn9TMD)fQ}Pi6QdD$7i--G?cj;+n-xGEQGd~4n=VgXrZdzjo{>bvzHhu z+zq`#f(6!kxnQ>avy}d)$L~U3m}_a@8(h1?yawGlnco;XTaDb63tDf<4PA(O!|qNF zIgr316SQ+&UL@1~lM%etZ;lfHc9zx>Nx?hTc#-1^43PJ+pVLo9Szf6}qHS^F^6Vkf zf)2jLCI zD;&rcC3hO!`q6%ZlsAUW+#K;0)~QKMK-=w@AfsQA`pQY6z6h4KGjy_*Pw!`xzkp1! z&CuHL?#jsBS+4L2QXI&as$ZeGaG#m|0S*4Z(2tTK*?)!lNV(~Epjv#0&0}#bD~}TP}zEU7G_X8)K5HsUFRJ^gRyw#sCf}+yF zBF+c2`j2vDwED9-yJ&x_o~GA>aYH-A@-F0HocBE2VtxBtQf^I!fHUSlN6Ep;t_r59ky$CVy`sS{u5`(!X6s9TWA!fWEBlELyGA#t5ds z6EvIe_;1>{z^1jT@p;)el@!pn`a3^_Y8w}(u!Uc>)quT?qdm&|=bS#tPk0b4mJDhw zO7vkcC;7xS0eEcWj*1RK=!HQL@Vo>DO`&3o-p>JNe1LS}#B4DR{+-SoD3xD%WR3AS zKHzLDGWe87)}ow{2PezJ>ww>=mB>)COw@UZ*7Eao*z{vl9j{(7ZF@xjp0u0Nzb6;G zizj_eN6UA-IB=rf{i5&90Wp|D{Q_Uh;-le7-71<{q8c#xyz?25t^dIVd16O0XqHnN zyHCaL2-1$RQ71OM|tAiEu?6cmaMCBmp5SwZ?`ibG$Bikkt)T*7cvocAfa;%-1FJqeEN za)-`S8a#8h^mo-Ag}@93G7z|t0XG8IAmFbBGH`Cg8DYUO(JvYZ*jA4*Cqa=3Fu>P=PtvbVx z?LrU!6~ZrzS9wPktQV(JxI3_52aF}R4-u5^W}H}{Q4+b72mg#LT>ct)2~aCh`jBvx z3AXC|Mhxj-MYu>N_YqF#KEf(*Id>FJ2^;1c zTl>oy6pYRtf3=;z&sNrB-IAQ>Ilm!vzJz|z0evN)%>wqK!rlt_k$|rNJjaN|Hvu@I zBBQWu#_51hvk@yoPLl^`E&GYVVl`Y3PvU&TN}dX$9Uf$)#Y@_yct`v%;yoEq|DWQ0 z$syhmO0-v|C0<+&gn<;rwg(Vk?ALI(CF)DC4z~s$3f7D3XmGH|-ry-~uMxm5rPQ!0 z?@^!=TniV7s6nxqZe9u;?C0S!t;Up|d@D;bAQbKnhur&|j^b8!Kzzc1hUz)@e;~0f zB3l4UvH~l}+6OOO!UwV-@?D>&YxCK^0DM5#`WXTE)r8NJ@J$Z*y9l2IdRd>f3%%#K zLT8W~C%;Pb$L1*c8}`5OH~ByF*S($J;9zl>JcD4d*junDPg00_ zfjyK}GYq8f-9yp?Y0}*wow7o`jrZo!rowVDoGZh~1WPBw(6rv(x(w`ne;LLEcrDvw zMlJpPFZH|_6(Z`#*7Ffc>=lr0zKH**=l><1McwfXS7IlD6me(!e~F`_JC0#W>_y_> z4KQ~9o@zfY?S{5gOZ)bZe?yeW?J{m#2Kdo}cG;f@ct|lPLijvr3N&qz4G$%|lsN`t z2Gq?Sjw8HJ!e8xxKduM(0fe6^+h;!;-uU!MVE;pR`cacP`*x8YR6pDQW{ZB%^DJ}R z@l$$M6W%A`n;h_W5q=@yQ%B6ZHTTG6s!D14f<~81VxH*KIz~)QJaER;@*zTKX5JcOMAvp|1|s3G*QK+t|id z=Iw3#xHa8Gm!Sr^B~EFmqE&qe(fWe*rC2)WK~M~*ai8p3v9fE*mOL``!9L;?eiw&? zdgJ)|NI!OsTf2#K?%yf+sQaWpwyv3pyi)t#IrPqgC+YYb`h;wN=fK{N44vbT>~w=1 z<-r>8W9uI}=E8vXli5USfFvgP&h-mD=TsCs&T-YqcohHI)N8Tr`LaI|aV_|Sn2&>` zcYX{>SK_-Z=|BFF6#*BLew;`G%$tBgM;%$6XDkw5hc_ZcZU|oq4%Eem){U!hg`Y&7+A;=i(l?>N+%+rpUCuA=uf-6Clc{4m+lU);4{PIZ*$yGPu|%X^ZV_f2 zg@VO2rTsnDzGFTp{Atel6sX9SIF11hOsTqD@$kmuoab?-B+svM1kzr!IxV$~qgM$Cg=~EZ{|^Ltb`c`oI&N&A1hNW4H*ci8ZYB z`h}iz`zG*)tNkn?RYUy7U!SxYeA|+fp5xyxL{S3p)TK$gArdr*{eQ3;MEeuqH%|hd z3c#{>>BK~1N^b8E4sEN`oQMAax}#m--1!kjlT6gxkihw8!U77{cHuu;|GLZLva~#= zJ=sMbJWH?YG0p*4vo|~CP+-e}^TFFuc%n~=|ES;}iX#j3RHwM;{=ea$%1?Kt)CY@y zPKW*j|0vwS|6_vxl!80>m$a4uJjH)*Q1bu#F8oWtQvoRW-(+)TyhFGy{F{>h4ou7VZSY`2NY(q6!2KqqcdbLeJFvPRt&@{JlB8a3)x_(R8xx|02R=oiop zP6{C#C3=uZ((Ocvy}<;lt%!L7Thp=zx2t`f)CUpAj>Yyy8Lusz6T)_koW7EwGXz7{ z4ee8Ed)|lqxvf|lDIcJXfv^jb`S}n5#y7P!?#l3!wKW-)vb^wb zYHKnv?Z3`izf+1!1V#*yp`zF?31`~c3}h(Ip|ShHzObpsjBf=*&HorkB#4)Ri+&R zAN-pO1sidtfN?L{cU>kcDjO^FN=(!NZXZ*kyM^#qi+#LhMPG#9!dMpmUwL4Qhh(v$ zhiegd_^6OIsOP-!9z;k#ycFSbs_-_nA5H_%cN8z-_Z3JL-=SQkzmp$Nz{lIWe;j0e zJP{wqcmH^t^%0Ar#Us0a-1%EJ!QuUoE<2Qehjuhh~7TVVEJ26|A5t2 zC6+mab2c!FZU_BC@iq9)vsmjK03HCOa5?4IT9g}&sim0b;Zr^(wUajvb-25H;=`5 zb~(zi)w&7=h%nG}I|G>O7n9`qGlej4vq{$Z1j3{;U)~E5ukyexU>c1psJXaVbFTPE z-`Gf`OCVu(=re))uJ`$3?pTO>1ty_w^4{eL3l&E+7c3>CqbOf}cpnfg+tcYx=xzYg z{ed703jF@I{y3Y0GK)991NF@ECVb%1x^h)AV$?p29ay;8AvS@A0Rw;VQT!KxCu-6X zv0%poR-Edfx(GX*b32OQpljxpqMB|&Mq7$!1DZsND(Y%(MiW17lCxS?2hGg_yEe@W z&_~FN-A)4bL>o}I|HYn$xKcbFc^e<=@zE~um4_^SFx$~BS$9+ve*`cHK2c~x8u1j| zYQRBG&uvBH#NR6*!X}4-pPmAI41j6*%Jmwtfqe0Hp8B7zI{pAqArkoKV=y(tA5iMU z2Bm$Z#&H}Q441`U7UvDnkb7aheyFPT_SVDCldbsQfY;i!==cDfnAtp(yTpyGSV!cY z=Iwns-tg^jIXZki?i0h}e@irr`0{ZM5B}n#)rt*CBMU06G}L|q7V4tC`59kunOJ01 z22PwswkVM!$9Mg{s2esMdICO5Kg4dPt-e(5}8#wilP+^O( z(>1rd4suH)I<f-lP5tb&P-r7a~z{dMB&ThetwX{d}(ry0Xal{ z<7%S_HI=R(>+fY@kr7>WWV>S_LGasjCg;e%q(NafEjp#4S=7e7=;qK?<8_t^HP7ca zRn>E?bFDOcO2cFqfL=$PuHGLgap#9kM4zucGyvo7zhQh$y}1$ykhL(9?2SFE2n{o8 zz-rSnR4g2^IOSr@BdQxR&rYr^rZp8M81|e0^wePx0 zJO7|D5F!AwQSmZ2{wCH~^i1x?n=#ISVH)LcDaE-gESIoD!dc4c-bn{`XvV6Jero(G zH_oXJZjSeUc-6Lyq7Rhlmtb5RU&7(1fCf-XBnZO;DS?R?2lYTx=#Ssy4p!_^D?0u0 ztPyBD@lhSd=MSJFaIMQIobEO-WC`&UmDqdzxiK0PqQg^`OoJGB_oF?YD&x3?N38U$ z4d(@r1Guudx9meUP=C>fi#BucGZkC5ce1()HXEnJsZ<#77&#)8^K~oCIke8|WDcRN z8Yfzs=d1^}_4-UX!2<>3q6zBV zX*@*kbg)yV58?)te=@$53}&b8Wl-;n!x{ApzWocUHY$r2s+64ScGz31h(!v z^BKfw{vi0sxmOk%u?o$yRR*?pB#LdnU&zziZzMLA@UIGTvk|Tp!Cpdm-$H(Dh6#-V z2gNLGU`j!A$3j7GM`2>XB-9btuZFBEnpO8YwWvk8cMX!&ii1WLB~9eGac(ej={d&&uwXMT)a&16eKTioGZ3&{ zVJK0wNx6^nIUb|T%-OvL^%u|Ti#uqTC2p?3*{)@2094UVMC#UehWCwFrNa1WrqV=a_~BwBLZ<+vw1GG zMe3tI{03R#Uj&+M#&P?pC&M2>R1Ux&tCLfZKjW=dcupdFZjYC_P-ph0QhQ#WSR~l} zOwhJO)WE7z)TRe+_z-9Ucg=m-ZJ`DYC%-?7`9u+zY&jq&cuK)`E zEjo-mv9%XIswtRJ|VNEB>KuI9ND_{AiTE4={47H-Tl+_D9|VmS<_LP!wr3t++? zO5bvyJ(R8yieH*5|3uuqbn_JgzWp8Cd4x=NkaIof7Nm0)Rp*fR*(n^ufCE=1bNBZ1QHUJKUxfULL5^m$J7$+G{+=617RNeMYXc0V_cy>5Zf$80H^v^8TN`+(5?WiK zs$YcZ6Yey@^@+wu>nvr(ma0oUP}b4eG{kvm3OHY+M1Lm&8Ekh->{|32LKZOFxMWcN zrL1p^ms&AdDxQg!fg^FP%93^}{kS}C48$Ml)HD5<^ieUk8nYH~I|Eu>-Df}*DIUf= z%90Z?B`)X`*WpR!J?m-K)k%J_A9QT4~$aUk9x63tnd!Hf!-#|@(tQ5$Q z*UI&c@yatY*J4p(vjoZmiJTAHY*>o}VxKZMR^d)c48*u;Vh}e?4CRasnm}h>eIVK6pC`~wyVO!vbSdqo6nFAM*BLhbmF#}~L?!4AA8n~JD zslN#pBU%RP~(mB%1Sq27gdeXh!06e1_H9axZ$H zcLfGEG`EDz5C!f|9K6Q1f{lcmDB-Ay)QYXrdvz}`N%6iH!Ws3|<`57s`WHRtpLEIT z#V@X;e^<)C0{7}8Gr-w?|@9KbfBF^w7(Oi`T*dpzaoHH z^>?exU4`7K`t##6>Mx%Nf)F9bS189XAxi+sd+4?}c-&uWQ+7kDyqpsx{D}g76`B4O z@Y-g2HL{pz2n(I_4LoF!9zm8$wm*G6&Gzq8$PXV9qHF{>7+wJwM=l%jEdUo`X*jse zP719Fxp^6aew;An<`d93OX8Kln3xHMObv3sQp38j_+P2piT$|2KOd^)*FG>NqdW{#xIgwXOdyT7 z5f}YJrqPUGK%0lr6f{uV6wq#kF~=-k<%k{DvHL~Dkl6jNQE)jmaKyvDlW*P2LXLX7cW*eyPl+RmZTL!Jh2y9 z^d{K7_jUWZ(C6BNmnhL)kaAt`<8guje>oaI4D#>?d)PH;-z(7*V1Jc{leBf%rqtHN zQMd69=mGmd4Gxhg_ma1|Dyyc=a&E1wFfI70HNZ?oYD)wK9l7=LboW#U*S%SbBt-Da6@qb3UvPr#Od6W;}Tqils&FQiU54N zgg-5%HkjWUz$a=L9OJxH5Ca>WWWoHI_t1$yqPNp%CHt6>=C))Fa+%+Q8j%Bvi@~i3 zqVhow%5PsO;*_?GzaZi~H6`Ouh&Tq7R(y$wQ`^ON^DdAtlDNDG`fj!3h%$a7;^2?@PcB z02qLeDUs^{t^+VYRuIVqP$7^ssemwcAh+2^)M(B_62-#=b6UF~%i05>iSanB8V>)D z!8z&k*Twz#yW_bF&eGQPs*P<_D?Y;YJ@|V-%lBfE^+0_MdJ=1M3|P1nXv=U9JH92B zp+*C`r+S-Ep;J+=&DW=Q*xGXvN@YKa@^Cdk1}Zbsaol_#FztDT=dp7xLhi&CV8ZPR zV}KPLzPmn+={G4%>k&fdA7ur&#NQ|1a$N~(tCsOb{4q>~IhPaX2W&q{yLIkW4A${o z9D##=G)m2Y-pKJpBbA8XS6XqYNv`%6thm$^SNjuITxyD|eTfy9n&lFD13ZmX8@z?y zFpg8#B2K+w9LKmt{7M3Q;+SDE<~{Lfl3z zt_xH3a-2GE#i_lZ5_li`zDMPUk4HK5y@^=p`)Cr=s_;pY-k|nxo_8u;2@l8eBpKbVOllyh(|E z1w|3t13pFojqFhuD-7q0@V{7sgLiIAnf3+ND8jHfz??*ZSi8s%!QHhQ`=FzzvgskY z{U|{nu9?e?ZUjFE!H;V5vknK9l&G5&@4y6cjiOy7T5R#SmxOjc@;S6Kd%V!jr*{eM zEP!9p*7NV@+j@T90%;EqP6Im7Y{_%cuehATzvugjkVJu%E|3x?c?nMb*FcV!E{ZQ>DFukg!v=2j_&;+JiNrg4%<#P)_(c_}l1fgv??tDs?c9 zfc9-<+tIj!fYQ^-v&;ldg#(c3?H@Q(sQ>M&k)nM|bjU6+f-{K`$QUNF+qxlRdV8G{ z8S75aVUsX3%N)sEIG}=V6k<64GsyXADQDkKA?Nj&f13vhh5KLrDQe>=La7q!Gzs+= zK*?q>3q6qRv7SUo)%p_e`=8Rf$Q;HFf%kUe{WI})_0^&FP2)#PuKw$=!jKwtE#6)T z(Y1Qs1O`5>p5+Ju1uTBly9~BK#depe=nKS31eYPyb%3L*)hGO|@a6^a_bQ;@D*ZgZ z%2JJ^$SPbNhNc1umjvMpyZ1w8!XIi^m2;p%_s={TQRcy)HAcvtREtGG8Pf(w{lh#0 zqGGY_vZIaj$+8$Q;|4C|Dm$-=u6S|fS!-~^;j!@B|!NqAu>8@g~AmK7^ z{C&RSt3|LK0xceiU>KMAc&@?XVnkh-fnQco|ApaRfi6{e_NkCYsNqGq>%@tB)Mxn~vM_Z~$Z=prJIQC{=(zp>cMqU>* zy2ERgS08an5<)8?2e~s9t8evy_#QyC-_@p$pkZH#Qdh-VDSsjN3%^8$tE zun99O)=wTl9zi8ftm-*m;sfR6j$qjfe+MjdY^&#ANE2;b_q>gu#X}IZ-+|pyV#d-RoD*|4=KRY5b1-JS-r_?8fM=9Ag7dGvSo;H`bNU4(ek% zkgPKKS(&_{u6z!(8mT^}J}Oh&>dLEw`aQdiQeZ@&!x$w3zc7ZehznCh%n;FzdS|SoVDkv&Q&^Uq$5(NdNB@G?uXw)bu;EDzj6%{oB+#uMArl$?Yk#QL} z9QSS95TQX5*5Dpg6h#GB?lmsB0qRKJ@2~3KP6wTN-{<-NUp^nwbx)l-b?VfqQ`@Pk zEl;#{YR_Hfn{9^>yb}K{U2L+5%8e$bbaR@e1c|`=09O?arI8-%)G3= z<6cqZ+-=i5WYU~t(u`A@(I(B2#+2E8fggU7ez?b^M`*C-yiY{Edq6r|{in0kz;{W9 zYw+hhX5c^mCZ@a$=om7bTMT@CI$VQE=PCnVZs0Q=%(U5|NzVY^_JJ&0@a~v#? z>N7B$OJ6k2FX;}nxy%RHRHa8f^si-*?$Ze^1Ze38Q}pZ7=+6}WH$`6wov)rV^kbsG zt51LJFA|DWe3Vj_L0u}2%H}vO>JQ6D6S1mjj8WN#q2b<78WQX;LS4BL*xIjzg?1LS z=N*`JJAQYswD6xk2i|0`t5gQ}3=98I@b3yl#lnYM_zJ=Iy1k9gA;3*N4*P*UxaH1o z>~ENLnHACU_09=Y7`$GJ->{HM;}5PAIp^nRVR-X4!|>%IIr?IeL?72%;F$uRG^{P3 zDrY<)Z9D$ zLoPj2S*h;VUQICmZlWj>eER#rEOuSNw-VK)h*U0Ow{!k7V_rACqlQYqya9W_5sxf#XE2Zb7qLx#NN1 zd^rzKR{r@m|3V<~dYyT9?@hfcF(+K?vaN+(5wow!HkCLl~ zL=VAOQ2o8X|MTR z>2YMhP5sL=Y4y#ub8>V8N6RxLyGo?a{1CP`{cLDY5@0=}GUjLQ+ZHxju=mp1;UWtk zBKXZ|?e+l+FA)5Zf48-RgoSq&{OJSQ+QF3;{*zV=n&!0OpJCx23Vzw&+u*|uJaBDe zy11rx_QjR8gSfiL4B&SuGJ~*A64z<0WdOSqm^c1Gj%ngDT!%ct=Zo5im=9H$$9jf6|m8l%j2w;WeWS zb|6>6wgXBtQr$yyyljfo{3IoP^+&0+26}yL{7H&m6EB<6_%VuqOT)l= z#j8KH>9vml{kAdM6vbbhihtS0w~f)t6o0&lPxZDB8l*$l)|Q>6@l{`;^iH8nk^E*^ zly_^(&J;=~p#*F$+M(`xF7dO5n#t3g#`v(Yj)R?XKcoAwe1I;Fh24y5Ed9nE9#sljI&Z0i#!a( z1qNftUV!w^od>3KnD)8jfjod_urR%w^BT+PsQB+J z)9XsC>n<=-b!tStiZtLcb2Z1Bt3!<7LSZu3deE*gbsyV#O-1H9YSX2kq*TYHQrY?L z7Ns)tUCoawIhGl?fON6(*KSvJ@2fO>nlw_{QleB@Xcc07XJWj*ze@Wv{tWKs&4wRE zn~_|;aKTzzTi*{PQF~o@tK0C5f^B1)PI&Lu*7x=B9unT%Haydin?1buYU>a6@N^%H zJKf@?X7F9wN@UA(I|(Vz261q_QjFLk#aoPVjST8-`7Qo;ru@R+a|istwZ}io;x`Dt z1uqfz%kTV}u`)iTJ$^@vzg75)gg@WlOTJ&TN7!aG>ggyloI8YaYYOFMi{jah`h1~O z3S~+P#~4ge=Ns zvQdoK^Ms=I;eP(DQB+E_k3}(~@OR_&orSVWC`(f)TNj!_dlsTz3yjVKLb*4E@{Ul_ zj6{95kY)(!sua@G9+Gb->ecHzP09flo=_Mc^1W2p__y8|k7U1Zb!xYqFb+RCflu4_Qur!E~8gov`z5%~Ru@3n<@U(y_XAH5A#nxfS}9y*o5nQpS%|cQff~ zCNo$}=D@1+=9&HySAd*Id#p`6hP27mryAj{f0A8^PY^QEJ#F+LMc3Ns#fo00DoF&I z=NYwtwG8+3-wo&`K&(gSxX+sDeBdejUF2SFzwfc%d2XTouCw3y?)MZ6lGoYqOm{c? zeTlxuU;8`%e{=V84bC`=lVxBXfWc|y3L}Ks@4#u9<#cy(+Rbnp+Vu`2s*}J<<`Ip& z%0We5U;8V7&U0t@!f^;8-}i49&D^6!a{=N*%XWnTiC***;pK8oD%rDyVC5@j+0gHx zWXcQt8^L$$s8IY*xw5gC+nsZoM&?U!t2AR6nX{^hixLuD--S=E&LmO;ij1a_LxjUt zXEc6NUPUefS}crXhAgYtNq0sUWh6%CN8`Ek1&!x6G2@R1UNS^FGH|<$knY?HJWK%e z2=n;B!+$5tBD-vaG7ps4$kcZ@{W}r32%_!q&lSK=9}k_@o?blk3vx@vN8_RI)4y3y z)@LgJc<6(6-);garuiEoFODqzRxuLkEC3T(RLI86Q@AdBS@f7e6-Ok77qDo})9GC3 ze>~|KZ*p`s#~Di40FM+=Q~uPw8%?J8^({NxrzrmbvO2-b3a6GpiNc8?%T#rjI2W^w z4{(41c0JJGHFB0@ndnvO6|xF;)&gBjd}k89TrnsS&W|Qe#;1CJ1I0C?Yqmo1u3fdn z5D%=nO%;{Z6vzauny(G~2*@}QSia5X7Ih1hClT8Gu{?h75jGcW3}_i<@tx&nGoWj= zA`*cb{di0|-Aoa>UTD)8ah`9`Oc^Uz@Jx%7eLBT#3WR~{AHie2ATyJuz~DCckzTMV zFd!A`*A~4A_3$Ws?gy=JM3unqtL^LCZ5i9X{#76GUucfU&7ncv(|wqo{nGL>!8HAl za}*(O{SCxh$Yzu(tDK6Q!v}5!tAIYd(6rJFiLJA?)SG4I#(IF^uo_ps>29A^;O+r)b+F&=q=Tmt@)v8KQ- ze5qCu+%`&~f4&|zG}GHTdr~7U2^;QY_K8}OUcFoWXX}kb&VHumLQg}40tTyR0AwQf zh`#H(aNzjpj0(;+2IdQp$i0uBTJDYCJrQ_Rkoa+V@nQMVx)Eq#;0gm-l^Bk0>W<{@ zTjPQ2O*#%sb)8^hyH+yi2lp?08T~w$fYr}Ygw9xAPwssPwJh-Dug2<3GrBi0hX{nn z?dh7tW$_i&jwja|UnO86z;A8^$nhS-`9X00ZvhgyU-08`{;eP$=h#2<)!k=19(dCv z5X;Y+sIJSHzQgjBd>NMiMZmH=mk@Gq=g+8-#YXLaJKP%}e^Azt_1IAC>)uh_!yo^B z8ZK*}QmLVM{UojT+2^uM&%m~MXIg*(~Mr2E%y}_Cr9gs%R|2; zehJq!Uy>JYDlPyEzm?){B~8T&;&NJ?54^VtHx-*sfbT)xx9JU>JCUw&=V{2f7~T1R z4WNnj=E*(u+FtqeZ?5I7E6y5KTJFd|$eZuhQ#~bJUU5dvH#7DswD;kMIfmY)HhT~G z=L}vubF;i9xHdKZ?W#zJ%#2mp9oTMavBrNrz8?kCqJ$ zgT&Ja@nqT=?*g=wx6zL#@e+|Jiw6B8_igts|1??L57W zFV=}~F?tq1q-nU8I!qrSjjIQa#x0Y^?bN`7h@ z&06t{g7~Q3#qmQKVsR7FpI3MhyS**z)c;Coy$qhrJy&9Rh*&*qm?Zgr`75$+QvUW^`&pj6 z?`SV?dtZ_5)TY-X5BjHzkxhldu_4PcD!5MpyU$G!vrMZEoURz%|K1@mQo%${s{1N8 z-|D`K6^eH~?N$8*I`TzZs|_40uu%-StwI7B&c(16P4vh%Nkbpq%-A}khzeNx89DU$ zf^SFHyHJhq6W0489pEuoeUUMBf!6@K^hLgXPdh(v3f1=k5TO5{`N>`RioPNr(W+jH zCMIFy1OHMC57cosJ20DY@WyUg-PG6si&rMcr z`jD((^+NP868~!JTOG=}QPP_iBc^Dg?+3Fnqi17_yUD4A<>c8i`8aLsj1XJ+-$i4q zvYflqH0M0nflwcZ)OVA5D}E5s4)O%=@pnF{n0xgjahR-TUR1bVir-oFZ(`0|nUOdi zZ}kH!&F95A+~Qtyl_cL}pCxE$mby)&owfYUv}YamUg~s+W;Tm6_gqs;J^o^n_uY#h zzaK7NHtW~Sd<@c(4E~k|OE()v5@o$ryZ0aiPVX0fgX>%iZ=~Uj*(q3kk}4+AwYg4Q z2iE9E$D-AQ6Gb_-ooPJFGfM~m9E^1}n4#IAI2WGGD*v|D_|nQG-S#yCO$EehqOXEA z>&PhH^>IV7$4v9ncM3n$Z=&n1<{R=}JbuE9;n2#ysc4A8iLM1Edh$m+zh2rEXPc#5 zZqjYq32CbM?oG^7;%JPyjtEaE{~b$fN6IZDZ2dE@2G8kICJ6_tAExbwV?zqEaUeGZ4*i;-^iA2OZ*yLU z3WC|mWZQQuQAP`J`J|I?<`a)3GeM1Zn4aUjX^3(rl{bcntKhI-k5^5azKi)$o0KwB zSH|tTp;rCQ2W%X*jfdl3xw)`}F|39iqfT){A#k<%$!@MYHM6wC_#CcdIJA@diK$ik zO*AJALU=JX$$FqQS|^z#eT(>ULr}FDUPy-Szf8iSj8TkPq6RIuke}+t+RVxm5Ofy< z>l!dWU6x^o{-R(9hMj|#2Csieta0uk{^}t;c4H}lO8nukh_%OW(&bFv=H8Z7aYRjH zeZ@qGy+>5Et_;W09L*QwT~`4J&M#tS_Zp%2YK=wx@`kPwp=?UvG}Nn-Du=UA224lU zPBiT`bed2;VG8bsy!zJr!5soOFyV)l3yAj4Bd_8r{HwuP$p6-szwWX0*6}j=ybd#z_ zB|q_{Eq&^TN@_foquwjmg zl>2JmmsxlS$3N`j!~^pQLa8?J6iBN&AeA1s5}Ng^mPM!T(Gb0ahNJx~_e0cL?LFR% z>tPjO)XllU$Z;?!+)2a(ddPzI6KEtLXAX%GYF_{}ot^ke@78za+xf(pm9AL^CAWiq z;vL+7PbH3ioDz~KUZVu7oC;4lGSv%qJ4 zV3C04{hX%2-9B)rfX36fDR83?JXS!xV@*a^_`qWXoNj?<`M{$EEVsa@4;(Dui57T- z57ZqKwuYMm`}shP$=w2rxw8*EQox`E{?zD|eV~B9Vp(BngAW`a;1?G7iVxHs7;du# zzTg877jTgU&h>$X0zPbk2_L9^A@>#woazIE0_rATazEDxYSQ3dV1cFWfTvjCQ9kf6 zVTLSle;=rQMz^;G=K4TwD!O}E;5IhwjrQ&;pgFhR6!^>sY69rGOr~Jz4Iik3NbWlp zxX=go5wO7mAM}CRP;ei&z?*&GK?45W0-u!1H||o+9|~SzwtDoF?FD7I=&g z)DseJ*aH9J12t2054FJEd>|eo8SY*d`0piN*((LivcOF~aDM^6p+BVTZ~4G$1YBo< zFZsZp0?L08%tw9Teggi>0&n$!x*Wy5(*kGsK~IN1NRcJzXf*nfx2bi-PZy$eBj;!?qq>2?8_Tv(AK8=y#^uN^WX!I7w|(1 zT%LTm00-sJ-)2x$Bln*ulZz;Xd^vY40q!1Dy0W`Sq=Kso!n=UL!LA2?pX z6D;s>A9$sJgDkLz54=La11vDd2c9F~t`_(s`|qagXAAg?RyCReAN#06{`*jb>c0?+e+PF*z@3(QhXxs8eXF;^<4N--rirk@`( zPBAkTbC`|k;>QeC%nZeJC8nW_kaLLT>!$_qC4l=Y)2jyg|2TOz>U~8C;BHV_C`thLF`^iwcDj~9eP_jpvEkmjCnl}7v!2PIWVJ?wbUd6g8Tk0k1?7Ck`p*f~0*C zBl6>ccMUX<;HPQC5V0JM_wct%2y^rmx@N+nE{?){fPO)DA9@CVzT+RB>q0n`z%zZ)m#Rs zGCRWgy@n+iGs%06=Uzzdd z()g>TgWvEcP{HdfTbaKwXX*?0n#V-T2kKlh!n>L(NgAa_1eR;DWf#ZN^@v=5ghgUJ$gMF0BPuzzL zPS?|flL+)QF{iYl?h3%2W$9!QUX{U(rH05)^N6{?#yEsmW#o7DMVFMD&Gx2%d#OQ4`kl9z;v_!M`fD?cj=@tT9#`t#wM{m$)ewXnlZ`-g;-td(QXx zA_;LzY};Y=!RqVDT!(?}I(X%a2>H9`Y2%5&YSJb9+e)dJ)>bL~k6|z3{bU(2ZYfhE z>2oY_r*dH~INh>o{NXqg#wTutj3-SQL$5*FIf(*Mj7JGuh5naB(-gP{fJ)pH_&dqu zOJe-tuv>puveh=(<*8)TtVE+AV}45XQ{H2u`RZE^RwDOg^O4;g?J$-FEgpF5aRiXy z4YCgXr0=T_7C}kjq7y}V4|DLmYN1CM;>_hHeq$_1jNXZ-K9I54)qTu|d_V!_E zMXzAPO-Gt_mtVB*0+kuf!VAvlcwuZQL-f!gF8 z0#esM=br2AGG>HIPjtNou=M3QoKC)y%AXA&-n`W5nc2K%TV4H~BynGa0t@bEfFwIP zaD)=Ezkr=&>nv~xpC$37!Pw0p8&NEkDE`b=M$5M&ilM$J26iSXqS%=qL^0H?OzmhX zS5@Q(8|Do)lGtt~v364MRzW2*PAI5x<1o_`o}-!hAe% z8$b3QD?ej+Zfsu%t12+jJLcRhJPxjA+e%o9b`OJAu{xAl*7xSCN>r@!3vBNc0P$um zhiUOEBkcmP40@!X%yFX>e_c#CFzN2*`$2N@| zd+yXL21lE2+?JP-F{OoGqUpvAj(cQ$VuCpYH*YNB?a-p^!v3p@c2ayEz>NS2_9obD zgZ&9sIR>h$|L1;cf<**3e`SJE1wS*vNd${5RJRgtw8_c{Hh*Cd#u6O=xd~1umT2&8|f^KEvL#?QI%W2&!ZP22js*>5-ZE}8vy_D%hJ zmjzML&8oYnFwir@ekHg+>H$I@3UBE9dTC?fWCp5DC)I^&?sb7H~V%AG*ZGtW3a1p|oU-WoOjb;-GDVmN)EUoG{7ptl(p z3HH!({305GLtVwBELTjySl3n*WFe0*MO3}SH!N9v*D%fps!mLvsr7#LpAq2%IHN!@(0P`I8Oau-7Z{woS{TB6>*BU!D?WbZbM+rX!?&mGwFGIZ3CrY3vpMu8lJLS^{gOEX?k7uzVXJ|E~pOog77|XNn*_O+U!ndXTZN%EykT|!VHrO@ybumsgSRgW{;hG)vdT4*(gaCKOu1`` zG~4%W?Ik>hv_{maotLQI-pu1B=FUd+5!^j$#ArxbT~3z-kPxqwbCH;_H_#0j_ynMG(>Onr{ogiSXbtSBf64 z1*a4G&{D)EKNemZRjyuTscAX)j|l=`xERYA|4k2%Nz9(nTXOo{w#UJ;O&mcv=g`@Q$!3z%iJa-|+CM|qwx0`q>u&>5 zWA{qp-_yDE=9*;F9DMV{^R;RZ+VDyYd@Y z*Ggm}@cl(#)Gd+#4a-YTJjUboORI|*ms44`D%!F#v!bW%K(Y%g%ebaa*1f3oH?joF z>t!)A!?j$|Mn}UY-2k$$4IIhe!p4@@C)V$%O?yRk`{o;P?JK2 zCITn!$YRsGhDF1#^(S(kW0{G?hKaUbnAR?(ws{x0DX@Tm{t+7`Ru-q9-`+=+#D6f= z^>Ugt)%C^S{qf<-agq3HS|N)FdpDM>abp|vV~xWpoaHz|`^$9pu`E7uq3ZohUy$kr zP_-q}G8N=O1Zajd^q-pN>>!8Aj`V(!mPhJ&kEF3Q{&H!Y2hle;m!6JDUPM1#)iqjS87(y6J&yi$FFa2!TJe_1#AGb?}UJ7Fv zy#~I?Sz=KSOQB}a%+gWwQmD6D)a(@Mdo;sz)WbYw+T=_El}q3v1vp2AmWz94sq4~) zIMWWL?Jp_C_z0_4GQ%(!x&u^y5p1-Fl4nqMOJ*6yLX~MKg`gmwD=zTM**%SUTXKi1 z%8`xp?oYB#TdBBl)}M-WN2k*5?{!2uh2Ipe*ZW`n!b|q^>`fv!OC>%O!5Y>Y%HY*G z@-XyjwDeHzwI5T~3n*&uIZVWsY<7B|Z;RIt*a~vN8B$lJ_J*XPQ5r06Wa;qoLxe{1 z@ZgaX7MMOIvd$BtY_F3K*Lr~ZEFYa(@;+^=Aa{x;xWk>Izf5N$ zx8xe8^CPUhiordh?xdpdf>By#tb%#N0&W%_7cKN}oI>~s3&C1puzC@+G!ht%i1wOD z(bW>AHT_Lx7u8NKC{)8dkqpG-E><+TQ#)3zIjt zUB_3X<&Fzs#c*I|g_T&GaB%)*6O0S1<`0*Pt3Ig;$ybFu)R*4&AbM517JC|nvhB@j zK}Kmedh>L7JNxxN{r*3lU+y^nY(L*zhhf3(Y53W`mls_P0UJSQ{;_rm1C?uBNGF7OJ^v z{*Q*3nX&$Cf|{nz-D-lGrcT*nf|{l_Zf2U=)*l-$%)m?KsOo>1uii4jsPXmFspctu zo1wjgd;8TpjnIFaubw07|JUZLzi7cG5&9LP?dGe`9`q;k)jyg4?TiNhVg4r$ng5x^ zpB?6ZkhNM|PpEDF$86G0aan(7MB>f=;+r-1>tN=G@h|BFqjajwyaQ*PXUA#`n9jb3 z7E%ruv^ToXcKY8&|3A$ycZbk_nqTgkBI=I^{xF_<``kayFV{Dx&o3_$dwS~~t{)Qi z|73nin#)N;G3?y+KaCeBKwt0ufgkqpmuQ;n3svS}@$=M$*e&@W$+(9!9O;T8GFoQ)^9kWE=PnvQJR+d^NAH2NsX2xrUe4FuFZvy(q zh>^=9+l?oCWE0mE*onU?ac$t=)UMRRz9X^x597;o8jh#X{vcW9eVlZd=imrf*m8~v z!y<=YB2SE7FJ_*A?nGe<8^cvY3Wf%22BI*=gt~NocKpwqBHuZcc5?Wzp_e9{kF0Ra z5cNAl)k!j`NaHv)-W46m`Cv%7x0>3Ea7)g~?bxpjiuDuSB9pt~$Fz^{r1+DK>s7-n zGGC|#B{P@})(j_+qOWi>3EBQd`i?W5xgY#pb2YeKpNjK7#DoGCw%?$s4oVvv$KU?( z;o|tp(!@U-peOWip>*;e~gZc)c^DY6zp-ni$b1)O=2ChhqL@ zWk%?cvn$4!%Spd;UPC%b!*e1q_H1fL!&f6vb=r0`{hf0fSn7_?)Ge+41jH<8nN=^u z%c_={hk9h!`ea)kv2as~EidgLqe=(PC!2A-88^67C8+fAx3?Ztf*2Q?z$9@wj9oWqU`$VC~_8M2}%K9Ose)SoIAq*%NW#nV!h5$J%jQ>%E}q<%w43 zHRfda{jx|@QBhKNqncU#Biz`v=%MjiB<_UcU-wxz*ts%5j`0<|=c8sQEzVoI4WDO5 z)*9sO4rN|j4eW82v7_;iOFB%Q9?ATSn_tNXzez_&QvJoFl@UfMgFl)!7t!@@@AYrx zWx1OTckWrpM1|J^k69P^@!{}d^fk526RcL3(K1i`?y!F5J<@KM&Jun5(Oyau*EgyF z@gW69o)Viphr(4u&#yZxJ6JuKj}zp3J)8iCHwst}cu143_=fOeGU9!TUVM2k_pE@{ zs*GXC(8<`}2zxJt&AaLdTMM7u?F~jrU2%2^p3x&edi4`;R$-4yg=984gz5+Y3K73koA2>0Cc(cN%`~Gi08l`m)iGn7P zMT{&;B{YrNHJ{n9-K=s@VPi?%*_qDeaK?CgU@uS``a#s$VCo@|Pu6z+biWAOh2TVB zXTVZpR)1-tfnUe@SenLKEPwVQlfFAH8w`8)8(MJ}nJgx;owQs{ChC>;OWK8D*=^cd zf9Dfs5+(r+{wN%{&qX!K=WnTeG>`STQEN38Mmardryv)m5H*WUV@Ng-v{|B0FI2I+ z8hfVURdD&|lh47a&{g?CUq)h6gBx^UZ!3k-d$rsU}ADIrkRf?J&PxDLl<@oqY)*i^(8?dlpmv z+0!pdX7nkvR7*k1i-P&x2y7HCpQCTmzf*Jv=214fb9#c}wko^AtyEAD8C< zqIXm+&K5VFDsy-!R-ufl#fCrLfiQd8bvK#M|4km@_{)()O4$gE{gO5Fno@R1#!?6G zv#eCC^S+_?PNg=sAx*zFX7B9{clGp#WRg-5-Wiu9XRVN6eN73Uvs_OJi)b}OlR0y# zm_(=wvWB8_EcD_|%d^4x)dlxcwrJhFf?8=!9c6@2k{*DrwzOc-s_KG&0^o686QKnE zBmtlI19o0e!;CW34fddLRO^?WcuI_rC_M0=vLv?$cgXF* zw%nBTA^Rzw^!c#;d_cVPF}y?yru-QE^H_k$7 z9Q9!YcMKZp75q?Tbu^v)0R&LgDZH8#Ux!VY8Jxd9oZJ~{W;UbI)0cjgli3`}Y^+&N zzjc{?A))$hqT#PoaJH^CvFOEx>zTq;pZVCIa2k#+%QDsF)sR7a97K(ti%cCx$gF=U z6O7(zwP~tv%RW06L3Xmp6eI%c{Yx3z_YPK%gB4SxG6KVDtGml1B?G3z+=V@O-F5qg zc|oCsO`ZroFgKM^&F){oWZvsMkE%uD&CD;ugO^U^J+xdRO3Ih*sB)CgG_&-wh^lTs zw=t$bJCW+45C_lT{KW+lkd#Y< zTx?c&>870U&Q1K}xkG+a_y6B;vfXarFnGlYB2q9jlDR#?bI%bPS84FZI1~$Cu32BP zuU$8;?yS7(y6h^axxue8&EIpT8_{L@Z)=wDDt~+nGmXVnYhfx+#w_GhHs8V=+EvT9 zr3I5B7>)_av8LF$BS?VZ7zwtI*a1X4^PU2aoQo_Ni@dNj`+%FQRl0a~fx8;rZ$Dqt zrakjB+Zm`USWTlj7lf)B||E1iKRxC~gM7lk{t53fljp{!%@{ z3G}BI!>8#Fwu1G4r#}#bwm(ov{egZ*RmMu=zx?mIfz`!*wuRZ%nt7dHMemfGDoU2k zHG22@No|sk?~&FCNGxfcz*~|fo3H%*NhdH9qRE_p8j9EW6rI7)Q)Rb2jW*6Hc$Tt+ ztA0H^SUm+Qgs|ZgZRm(p=%__Nw7(my9<8|8whne)8k~K!XWXBIjvBY_FjIe`>h<~) znU-3t3XS+V(ZOUXR_)|@Qt|mLpU!w1m?qlBkQ*{+em5y*5uB1fSpB+e>>zBc*8A#) zXNLzj25-_Ns;=|Cg>TUqBYS1@p1i1=8z$DwY^mdUl|N&Pj3(o$M=vjIdOe>@XA&x; zu|~Bm%O9AC`b-QZ5S(98Fr}{ZN6hA0;~!|Db0)rgap!F(=H_53XV$zm^V|5kt<90T z?mNNYdcC`H0HsE8Cvyo#gjY`MwqP6eGV$c%!k2mBox7B(3#wp>)13aN>22tB40wm~ zaQf8mkW!+xodeG#PtGz$D^;&nuqK>l?(su$g30UOtvRk zmTbJ=nni5sZ^yT_=of>&E$w4^64p0tH_}KqGI(;qB>Kzh{V}t?b(qgOjWyu&Ad?&f zS>G;S3@z2wBuw$mpz)e!vR2t9LbYjGMp9YM_vspfxo40jnLz@#hKOV%_6O-LkI2K+ z>v>dprsvrQzUJE+uN!Tzn(#UvC&KF$6C%Ok{6*&`WlHBJnDbl7DoD0GVY-Nx2mKO# zezsqtPmhCv^e*X6b_I&#zo<~-DO3_n(=WMw(3`Z5=YAqgpCd1<)cyf$CN-_`V=Mbb zn?~d;zY9S$jmRrtOigFfG@{$VnyWO8$R9R>UzSDu^>F4n6-R{Q+sLp)bh-aYe1+2n zYH56>_5|n{*P%`H zg9D=RH#L6i->yGgO(cVm#SF6O-puYk7g(^W#In`^wTUWfDZB&`wK`i72vefkp%}JE z;wBTNjxx#)ZE51_>6LpWhDDZ0pLH=pc{6p@-+8Mu!%o&W`tssC>9qV@B&Ps#8IYW| zbeZApaKTz$ux6vVD*W1lq9sPg>c&N`?vhOBv0TF0OlvD1_-g z#e0JD8rfxAR^;#iBGFq`@Cr;P0(Mtk>zCNR!OLg<5;lv0EhAF;5c`c0{|2MLRZz-s zj&DzQOQb9lVp=ye#8PzBXT?kt=jq_ju$|%9?=03%2CfRKJ_ExFh}Ba=H+aK~Bq*g% ztLGOjFK4l*IPRk8=Z-|tr(k(Jlj14S?wk~tzwMj?sa|T#!9r}X<^?7*3_GN-X~T{% z%RyYoUb7Sv9w8@X%pQE@aX9tAGlE8iHWle9+OWwfM2C|M8 zS6g<`qvZ@?qUuo%zIGcG- z1fG432t^78h{|PzwTvBIqKyxynd}4}>w}$sI4eNU9nn7beIZ7^WL{A)s5H)%Ei_!` z_uT6BgafA=zs0P;`o;-8P;f1Br+IyaQ3qVoea_?21OHh7tDpS(~B00QS2YV(se@@ z^W7=rLzR|Aj8`=lDLIzGv#BkwQT*PKa_h0QXu?}LF`}HGk3gAdyusP0 z6VSUv{DfcP4_!O<)6HXaLbJ82krV4H3ha7h4`AMcPBiw>up64?E+Db z;XrqH=qA_G0!)5X=F0&H&m%Qfq@oL^1N1Mn(pOKm?n26i@cPSUZ=l&}^RaLXPjdC| z8JzuZq_ZHOKNz#=`d!$IKO^c6&1b!NX0PxpOdb~VhV4N4;BRJf9$7DF;7>F-tam-)0@Q@d9w#e4Vy_!=E|D&Gruby{KeEG zO3GK1)OGKudEk6*yn|F>WAYBatZI|a`fO1a0jLTKz_);wLbb4r%&MP^S%9+6%v%pL~ z27NP0eMvo|%XCKa4%Qr}8vUc?ok!itQqHpVV*S=^-IR=`ZpN!_dMIrocMt$7c5snB zY|;M@UFD_@)bLx(03(B`$>8kar1Sb+CxKd}8J#B)w%T-rg$-kL)XlJKj20!gk!LBx zHBEheL*Xm!yitaS7l!gY~4H=u{_#aX^JonKB3&iROnF=M#(s zOR#`4(&8rCMRhZxn-x3q%QaIi4MU586o#H-UC$I8rmE#A6jRxOoMbh-e?6F2N zoncf-;d)F@=bnGi1ZORn;jBY@N)5t;Kb*PFs=-HA1B^15k`-ru={zQ?9VQo4c$GT! zL}n0W>}kPFG65TMUo1mHWj0CSH^KQI;t>*e;_o|?Nn97{!9iqUOUVq<)^%+3(DqIc z?LHK`VwiL{v&sF&>!r|KN=o6{O6v3!wqHI@BB+SLoA*MM+#&q2#eBIKoxjJ=h&<%Y zu~36)8{gQ*h4Thc>c!)QD2MwA9?}M9A&O2dH6~w4BlAy@QG?&1DDa6HswURGj4e^; zXc`74$e2dwEb8AkLARXjo1mLRXz)2{v_~lQ8$Xk}JE{LO5BvE%xVS2V7b=DlE#OE< zC-3n4LdyJehQCd82uWO17Gcj^r%>RoC%1yD%Lgl7de~^L7O>y(l zCMY+>@fKHZic=0XP`N4Q_c1}aDUKg#f^t)A>~Dfq1j~Av;9P6wWG|b!(dGh%opW9mh#W+ ztf_@RKW7tmAw{&Cu+wO#u~0Qw9cG@01?o~zH>_bu&eX$U`&O`m^Ix%SkAL2BRt+26heak^@`^%8* zBa->xI~#C2?+JA7#bgeVas+G zG|Xkp)lftjUj)4uof88Wq>!e9WKO^^Kg+!zaB_EWEx#vFW@jxmZ3N@G*gM)AcvlIJ z7hOHPBZc=Ac;=!ne|-YHlZDqQh1XShHNw+bGU5vruY&_NzuzUF^A&%mjo(f2T~qP- zN-zC2uZNQU`$5F>Ae@&zp!fq7KhCCKqj*^dOaBT@bpnbXY~n-D5)YYwmV)M>Rt62l zJNMtd;@wWj>wnd{HmcD%x^9`9metHQ)6BREaQG0s7)#>6$JYjDKS_QNJprOr*okC8 zg-wSwL){5LF&5fg3FKSH3TmdDys~B-K%#Co(cUCt{cw4*_rq;Wy~h2z_>Y+K$hGL- z4EKz$SW?3jLB3*`uNB6;A>qn%3maphCuvMs6}%6|daK$gn{gAEwh=0#iAHG=jEBXA z7Mn8}0%f(_lUh%Jom-Cjqx@FV0&wSiqCOTn0rHtM@PHdQ2}G-Of1#xs9!P#1tA>c+ zcp@oHV{%GbX}0q$wOIml&&CL7-o{%ixjC!~CDj4`5IlSJ#9+VN3%X@yT-j5hpKr^| zcy9ZZJigv9_j|&7zZLs*`>bUesV=#JKkk{-Y5IOq`}#_|9-I17)8>>scZ9wZj{h8- z-3S2~zLSMI82-nRrp|6o)!E4~8w;JSL~;SVoJ!lx)Yl}N;6f6Z`f5xoVRsU>)sI%I z%mC7>L46-h4H^%eaOD*&cw~ixHCkGUg?>Wsvnr029L)(VS=#?lg>Cl3aHfjft)y_$MZs@gvRN}*aS(7`>MiGyVG>IW zB)^3Wg@&!Z^Gx-jN3l@I(8E=6;Mf$sJ)y@|D0?8e$3QPR7FsROi9h+LEs<$5PHG%| ziq?%T*vl!V8nxo6>6{>Yn%Y&LbBGsHPmDyf=aAon)$j6Q?QQVJ>j@9}Em-|2zi3k+ zIVUq?(YuuVhv0761xkVgVQBFHDwzrS2fj#t2p-(HfbJEvaoj(jDdjW2&bV#rc0zw8 z1@y8DI3TT*^_0N~!lZJJ5LRqOw=>Q%{xw6kS8ynn{-9<$q7fg5i;qU15BEwVF;NWk zSImM`%s66F?N9OD6u&AJKX}LZ48^~Zif5y|E&UR$M7g)ARhV`@N>kL|uvdAkp;15F z$vHU|iqkly)WHX4^rVh%X9bTE-*E(0wZJbXI&%^W!BXa+@o-XYT&E!@$}Hof?@Kfq zlRH_svN#qx9I{yz-J1dv$w{&$^O$k@Po38zw?bvJgMB`qW}^$j(Wh@{R#rcAK(zX~ zifB(iTSgdOzdqbk(`{+|-p4(ZMnBaSZ2y`9ue9!3R)Q8m z(a4`fCzHr?5!-Ik;|}E3S)$ew5VIphxj%H+fg@u6g<%`KFS7 zC^iNEQPdhAZR;T(|5@r9Xz33;n{2Jev>CMpYbq??Zzxg@B&G2`vamNecABMm`RrFf zi-j)md9j&S+RUda^Rl$e``XMe6@AFG%etx8M#{ZC?Cv)6cF?O~i5 z104X1x~awDV2uM&^;&7m#GYJpKZzKDe5$;+Jnsp_xeKc9$tnGhh3=spXBr7UV-q~9 z1e?q=P|H&Qcc7wL>_55qpJ1__Ar~< za3xAF_OCxG1zKgx8}Islzx^{@tyVY<=&!ta)6ciIwcp$>=see;RL0CXoYso*u}~vT z#5CjwO$py%9gv3nCX6HpJ=UfpHz?0`4SC*=?Hlrgtj&52c}OgDA!M^E_Gk*+L#64T z-;gz4yj;|GXul7^c}uftzkS7$>0hEC+V;B>Qu5mGA(q8Mi8I54>1k|k_`z?#xA^VX zG}uJw8>Gm2L`g363t<}WyZq>%v$MdQh~~~A4|ImR5(O}N;f5w)g{+Si0L=u6Ep&1!$+@`e#usYdD0>p7lr;2h`An_8& zi){;3eurSnEZLJqwmGd>Igs_s6Eo+uTPx(+KZtz1^TzEiv_Ri;Ot(V+$_@ETH)aRt zKf0Q1IgD9xdo1)Sm0}C>ao7}O1B8+pkGB=%w(qyMvQ)Nq$$1D!c6uPQWUS6Ca$R;P zY095B$A|5y@z$~&cLMt7_s@RU91ESRoG?Mbhm3k%X0w~3>;|P}cM#dNSFclbZCP4B zQT#(nz33-8L6&~Po)K@oRp$qdg4xcrO0|kOcUCq#=vj!m_WFsHRE*WLjg-jh*}X)2 zdbXU^HtKi=hk@mGx(x!}ZqLPdiSjZm&Oa{JAB%E)bcxgC>SW1t(H z+b#422;0%c*^((^gw<)8>`o>IfuV9J1cK2rVL4#YyMF(j^ww-ze96L$27BE!Ubhoz zZ~oyOOeu-~n~~G&)QoP%VT#{G`^lVfU`d>-_Cp&EQCV}Fnf9k<+&NE}Ol~3*#`wv*}BXUv%CiXQv&AZQ(mb>}Al^U(ci6K~5Lk(Smy09>bsi$G%_#<3=zk&TjZP za=^yuR?BU6oYZz227VmUE?5;fECWp zZF1U8a&q4`mdS9i8@%jpRorFQ%CtYmKh%VsU*#O^>-8!cm?D-Nk-2{qS2_r0T!rU+G7?6xmTJpKrOXp&yoT zp}JvHQ;Zwc1VCTsny zRTKM-n&LaSQcQ=3v=L!-!5{!qvXjsQ=KODzYT13p0k-{})7!MaGN$*b_E%4}IJy%#`Jn7k|@^@bt^TY?d5LyoU>p@Wh)aA{DrxT z$jm{Cd;P4@XLYR#%!r~}>EMHd)m0GDuI{J&hU+2)ty1;_(Y^gkO>pA;gN@;vE3D8nz zrw7Vp7!NJ8ZfjZC>=};()Y$Vq%hBrW-GVU$(%;-}!RE_H&Q4#O_TIg}jE9b`#6qiR z9JF=~a1lb~WnRXme5Mw0rIRi9p#H|`}y5!>A#f_4XM60{e|_gPc-s`NpArBmPZ+gT_XHLm?0PRqJko*jvAT;s$X z-7943*Vvu|ZS~6bcr`8CbAY>>NmHfTQq5%X=Rj>3@>?Lt0U3*AzF%UypGz-6o>-4t zcw|7EFwHwA8Yf^UE-jiNwoaLKjO1^Urp&wQMJc^N# zl(2W36^SIqPv((xJffaKey2#QLSXUzEZ@&8$bb(NYXG{>kalD6rf&eSy+rqRGTb=e z24~;G-;(kbD0Cz~ui!yYw{j+s6E%dQb=3up{Kn@L%;6`@Xok&yK@SW2pdL9D@{- z8~rL{h_~yP*n&FiK<3%E@0`J3vgJ665z{;)Oe!^6{+4sVCOIU_2IC^xy^##Cb=6P7 zUo7+iEiH4#-Yl{G+{~ck+fy3;nTFuhe!)WK@0^@%fNJ4e zOPb|D6aOx@GSm6U`0xbd@*soCY)j>4s3fPfmBaHwDT0n$2Mw(gAQj#}w9<~mKig4e zR_+qpl=fmXo=t7*mvS$Z29Wt~WL_)}%1}`GKiZbRv+8qlj>2QTRNnK7VcFo`o+>pS zW+-yXx*HF(^`eP~84+nq2jubu(|NLZGT-=*CI_YEGM-#)QFV<~H59~G1x+mNsI<;? znfCPT0xfZ=Jqgc!Ld)=4zv@f7&C*+*rkyV~>R6n)NrbvZJ6t_IT5fgTDMUGNe^N_Q z8PvcsIme{WOe@#o!P|p3zX)MdYRdbs{a7l%3yJq^q*?fZAb=gmbbDhdTB`i{!qg>g(JDbj%eMt@-iC2;7Al=}LFK5x z5>iPvQN-E|XK6DP8L%y+h$KS4Q(Yje0pS_z1Buc45TJ%s67`@}S(E69BYp|>-Z1gnC}0t}96wbo_~Xqbt^wywk2y+%|?IXAmnduPQjD~EXU zRVW!E3>5A@k!j)jNakj8TmaNJV$}t@aMv3Fjn{jf zm@|!%WUJVDrPa(8LV2}GW{jCt9Oc~K{hmnE4o4S^(Lo4N!(zRqpX!3OidExNI~@=F z9Shefu~_J@v@dJ8w7x@4-;2nSRsU-1IZx&B9vLXrh%sEM=&DaNFq>DfQ9!B`z2Usf zry8178=x%KZ@^=r-X;fGtl^Nhy>=$%!^f13LVfqM+4lqot!nfcaNcG15c>^VeGl2- zL&nm@L~V@5LT^&%z-70MLoxem5T)Kkc`kWJY9BPE_hcaxCHsO*j0olwNCYm6_q5gs z3eX_sY{=w~dmi1rXC76urLOe)svF^RDr*ghXw;&A2z40v8!~ZmA)Ky8kelz|EBF zJ`yFPY2`W%F5SDWz0IAaSel_7RyCOY)ED5@?P1y;2E!Kt7OL|;T(>PlGHZqGOncjV z7&($%e+XjelXI~m{!s1nk5LZBl|HGKq%jKVme<}wigVJSWn9^+QJ6Id&(h{yYDSen zEY@NZU+$MIWW+-EVcxPTh8AaTr!Lg2OFKMh>I4&O8Yv!Ek>Jfo7$b`dkh92C5QU;J zL-&SGKU2!wYbe-`Qh1tH(()jpJdLFX3N}VK>-azp1!t#y8*Y9)ZJa6?TGM8T92FW->I<9!zYHoUX7KnB;Hn5vvn)MQm|23g+V5B0; zei+F~TAPL#3l$qKd&1>d%jGz6S@v{Wo#w%(rbyh*gRhylKcJKD!BNhDk60ekj)b>7 zRPeFb{ho@$9sOy+6QLXkM(d8x#5A1f7oODJcn{@6ZAZsKONAfr+l1U_90(_GFgqvV zn=qQJP2=PSgKy_8bjzusLa=7OvWl(f?<=amUSy?}dmRLm-Jk^3tDx$sEBB;3heOkS z!qh5uB;I!zOt3|MufN_B7`K-vSMG_;vv*dE0AvK6S2FAOyccjy^PI19yI9Vb_?IZ>OG;7w)ovbt@MLz?ulk0GISEf zOy)n+rU^Sy3M&`(H*4fM&xU@WY#Q!^e?5*aI#?6ouXN=wzhi;qVI!Q}^|F9$tJyn+ zu!+9`QKyExL$LZ%%u+102+7+i;=2^Ub~bZlPlN_n3s@?k{uUC+br+4vb!nVU{y;i9 zry$SBXrbIncurmeq8y%1$HFLLZj;c%D#8;KZKjBi}Mnc9`awP~;+t&=ajZ_0PZh%Hh(i;!5|4)V5&VOznBbWQTQd|9> zZL6)Z?@K20OwrYJ^OM)YraGh<@6&2+N2F_0oJ&8jm65N?(7BmdsGlJ(_mC3k+REsN zAy8%HQyGWYOb;c}OjM?)WxQdX@Ve%~_Y$+HMHbh5s4TkvPUS6$du&`_VHv{vs|One zj7nYsp0ia2NQ9adZXuiqN#C6!fmIcOd-=pI3hhaRl8QPo6?K=1%A%05(0SAcGuuD{ zm>M6!NnQ~3>^t3Tik!}@p3KhZf)q2JYm?&c6h^As*VkyLXkB~h^+%dUERvobnQf*> zR+V>wo|WFqG#+1i-yCEz`*sgcdi~Qfy#GCKSHnz#sf;u;*N5`ZCCfDUmX6CF%zWiK zvdjwBRAb4go;gt7v71{>8*wMt{tN#fi{E5=%-jiof`5nbA0gh*?_uz(&m!w+9pju* z)*Jho=OyfBG(BYhNfRrtoJe56`5DgXU#ZiXepO*3OM3k>g7LnRd?NP;X4}a5$K7GD zDy`U$zpK8$#UI<|_Y^ghIpbhbG};tPm7?Bn^VWN#l0?2Kk|I}PRp{xeuVT<(P3((S z9@knL*NH~6ud2?GB!`zV)RFU7U+k_Cp|@XGrTx0HxKLe#*?vpT^R)UpR0O_iRzktQ^B4ceJVe2J^aI~O`r5sFSkZ~x_jZHe z4kNW)&}=tm3-dJV2(bMOXeC?-yV37woQY&?i`~c=*f~n7o5-!Q=(9w%t?WmqaOY^e zyu*E_fAqJFoDv>+(uwCpCN_;6KZfOO<8?c?25(pEYAes%`YFcwRbIEv!%a|Lx6Knx zP+qr<7AmjXvXKTVuiO0VO;BF9dDBf$UboGco1pQ!y}$(Jb(?X93Cim>V~h#P>$ZxF z+gxo|-S|!~CgFJ8w)v|hJ^qh_eLRQT7hsHhh5x4oD7x5WuL5MmOz{7(0PrwZ#LCml z;@zJYUFi8cm%#ryksT`Fr2h^7X%(>X{|f(qQUPu9U*hw>YUKF#!k_lPVLnaxjn)6Z z3cs2f!Q^qCIGMk87y~df-yD2&#gNp`OFJ)f<{7roF$2@}udlWd2P{UzJPKt%bZl&AM)ljHOLy=f9`oC$6)^ z|2B8}@fN`L%&Awg1s;uklUXsvxGU#l$LY_nf|&JFJ_^=!v@6OjhQ(at!w{%6TV98! zfx>9L%~3g*{8Em}iy$&UM6^Ta{P0eS$Q6sib;YfZ1}ixbCfA4Xne0URA`Hv3WQ=9$qsOZ7gJs=tS?iq$M zizo8yZd{Y**L@W@JNk7$#dfazx)VlFJ$2r7;5gCBH+8=})7eGE#Gjj`wUj^iVPGJp z&2M-W<9zvMnwaFzo$K?XRS&00xp2GVVy^JVoqJ!?Ar5qR@kRLv@h%HcGTLtg-LVho zsCZqXMEvuLZ}avphX-fVThP~paFg>jHr>osL9G?442#vvlZCpt4OPc<-Nm+NIjcR@ zV}*JPsAdrXQX$3fks>u!@t2DfC-SBaH6x@&8dtXDdgD|xMU`T8<`IO@_D(zK)eCPJ ziAV{jy@R|y0>P@)UCQ+@ma8V9J9?V`hDN$O+4x5k-zJMKufx@P#eYfB;QB_zcS&*m zs^S+ZewB^CK=Ey!>Khe*m*O9`@gv*EpP=|_h*znDHxyGL6p-!dA(`AZNbzZBL7pqX zY9w-ZQCd!vd%`bQ+M%M&Edt`LWoP2sD(7~^_e{~2*M1xAFCgj3H5k*~Go*h)=`{hj zmHU{|Z=hM29X{d{ir+OAzn^NXLGiEHf#1c7Z>!PXN`If?&HK%X+~XC`M9-stgW_i@ z{;xLuA?@RbDE=J9Uu5HVX&>KL`43h6aW=js2l{Pwv$NuRD*j*_|El8KBy{^M6wL&m@2MM6w>j&UHO_LplU&jimUGkFf4ierLTkf|N-&U{BE54)R-?j12D_)aN zo6lv6-$ZM2=iB&O+ozwZ_$I~QM*NVhib?RyI$cE(GP?j=U5L1e!WnXiWZzf8_3Ch> zXtnXWKr*;Sw7fbzNbzkt@~+~~P`p=%9Tl%Bx#e}0;*U{$CwQ^_LwHQ7y_Vct1JV7X zlhRf{Sjf{t(H*oVe0eM6%X=TyL}IT$WgV@*UKHZgtWG@^u6JI3g}FgAcrf!4T*z5( zVq$VAOc+;;d<8UB;UJ7TEnU-zhRZ_kp*lTz8{xwBC(t1b&|40s-wd1_Q2({uyYQ14 z;YqlJa9$~MW$ECSD?YBlccvv+GlQhKc+lyre#dk=mOm-iNm?Jyug%^^RLGP&Djs2! zA6~3})VG(m98TwS=FfzAEwt=)BMU7z%EFL(7kiO3=bva{ETw+{DU*SAIdWK3kHmQ& zF)uj#UgX622a7eD#K9K>8>o?qTxhgsuzD7di5$1xlX5>yI2Jkr)J(RsgD-+W6DVRS zfREK^N(dPw%U*0#lb=@86e$*im7|@JFwOY~T0mBC_C?kewm`LsR@8Z2C@0zs^tZEGHofcs96J0c&Q$bMQsZiqOE9WloI! z+8Qig7A=2!VmvSiEThg*j!xH2%W-}dqq_Wy^{<_bnkhAz-MyzN=sk!fnV+Vgqs6Cg z1o8M}y>>1OX~7$+RI!QN2{zsNqzf-p%n4lN?W9R+4-vT5WI}auPjx4!ah37Rs(uC% zu~0yKgcqxe3eFB$H+rVmXZ~A-M;bC3V+za;_i)ZyPngf_tj*QZUWf zyS^lz+{@CbE@sww?dZ4Q*_=7|y2l-OAX`L}-#2M;CGu?+E;q*3bHTQCx z;tHi0@24niTm-#Vr+_3@F|Sr8+DbFy^Z!rhRewd-bzU`i^GisBGpn666um_xy_M6S zfv?Kg7X>&AwTR+AQB->|E)>`B7U#FM!!yltDc%#Fha1;FdJb;GJXp8dVZ6Wi)vDng zcXbv>a&?uQJJ{enxl+{`c&fD*cZ!>%uj!{=*#z3)JO&?9%>Q!gHEq2B{byB(wsTxY zx;G%IMd!GEIkM@Fyof)T`2UBtcMpuJy86G9kYG^aM1>L*HR#v|i;}1)R8lh-U{Zrd zK^yNVNYUDgnn17$!AT(F7)@0y?V}a7Dz;it6vF@^L9W);h&PZb6mMq?3f=&rn)mbF z`<$5*#6CXn^ZfEhW}kERW$m@sT6^ua*IpY!I)dDB$47Z@k;gs%x>7jJ`3fTs`S$=~ zyw#WSX);=)&A1dloe!ki=I3NpX)NnX2+7=HQ*TJ_E^sGz?moSY<#L{__(4@%(43?; zr;>_gx$Kj)T%HQ&=nW{_?nHOXCKY`laEC%9Mv8|~YsQRIt(>X4Kva+&Sah^=J>b{w zt*yQmUwvps645L@<>l>@7lZrLzSZ3~YhVym*>JI1IvTI>j;AagX>tM!UwqS_=s6qW z13c~sEXoG4kE~!Pu3mC~(O#zk7b);2yB{T1P@;@@JFWE4^N5*3_S(IV8|($@-2=(L zwfXNNf4s!2p1RA(Z1H?X3eW6+fm^%hI*t;y14o$-7P=`(rypBk1Berj3r5vDDGy_OIzd?qYX9ohVI) zcGeryR-o=v%@80n*Y7u0WBkUDAX)Oc*v(KuCFd@%zF~uDZvulCxTA`)rO`cjMkxHm zKskn?B%uuT<8vAy4P&-t`1={hFQ@Q5cA!s3HNvxfAg&ObBgMIN1f63dEf8}Hzleqj z!3!{wo@YECN`qtE-?8p5(ams-Fy7|eFrlQp%`0s(kMl1uk$fL7Gz9&!?4tA^fa5h@ z{~5vAt(KrG%&}y7(Oo6c2tl(Azujpze#_BScAqp-{7Y48cGG83lO5Soh?#4u&gBz9 z(54>)wy&_QT}d8dNyM9d4gP=zBYQKe`lGOgUpa2qp8oJjFI5}3b1X!Z__d*=QZtqG zwe=h>sB`1Qq>4H%mRUkAWb1U+E*D!c;NfWRC#XtkbX<4ZH||bX3ZapeHQ$=|6$P&! zz&;yL)TxbN=b62tZy&H%Q+?vsP@~-+WwWizu6wks7XV)k8la29wr88B#r{+z@pvmxa8xN3~Dbt z*ihX?6qcNs%n-Wc=NwE)+s6rJ47CLo&2o0rjnfRmxnBdK9}18X z5hD~e?>VxUvB{HBHvSD{Ly-5T2ZeYxjnblr64ao+jxj3$8|? zAx{|3DeVU8ZFflky^yz@UdRJ62}APjvc71rmT?Euk{-15f?9(`>z&HYl55YJg0cI|57O-&&cDLKNVg3zqg4D+ zBKsl6@2BYFh77%;NA%XF0h_)m?FH4d{nY&<*59_Yp+I|i0@m~0=bQB-^E~*?i`Hb0 zJe6jbEgV~FI`5pmL?p;UQ1Q{+mzrL?O|EgCf%S8#9c<9F3kgxVBt^!f zOdaX0h=f$0FAAJC&BJ7MkYeI*rwmtNoYRFYhn7$V%{a#?hY;UuZANS+31 zbOMc9d3vSV&GP}?mqru+HVSYFfQg-a{-fNMhya3}B5k^7-tPu$;I$&6Bpk7X}&PRY#nqCzQLO3Gi zazZ5);{7DDS7!*k+ADD9k-#fVEhV=Ir~nL=e1V)|`;du&ng>q0Rq`8lm23C*n8JaI zoMXs?2gD2Uxd2Ni4=1xnw{MWos+=o8rRcF4N=%DxT&AD!t6M@#5wdBI&qpB()Je#h zv*#wN&o|7@xfu#pQPwy;!}%LM#r_3@rBDAM&HjZoKCL}LXUn1q13DETUdiX8Voz?pThQ&*%Gh@aSOOJuNy9Al1`&WZ>Ht_dCgnu^gza7XzF@wV8 z6sSOPsbqtzmW*lhhnGB;5qdV$-g`Yiv*fwV(6ikG^;$F~(5}7pIP{qK%%jK04AI(k zgCPCzeRtm1evDl=EG6@PXz^Ezpv95Y?b$E1eh9y3Xlf=4bTD-*B}G%U%ThFTD#h&h z9AnCsAesgv2dvgukp%2u0HamVehQVv3#h^z!tv=ZEYxsB$jLm-S1 zZR1RN}Z&&TW1F`S*3#YNtZuGALB#hjD>E&W1fdceNXFnr%CZ7hESI17Hyve z2Ff9!Psf^6`^G6e`Z?>x0#8+_pT{_ehz`=y<1&~y-Gn}2PRaR|F{~8-`qTcLF$*={ z2yHjV-x!`2UrX1@1EsAV1^0Rm21CJ4-IDYfXEqHjX=OLUIC*Fd+0D?>Ziqi)#+Ar{ zy4z?yNk=DuXqS#2())S((Xx(3BXo1mY{SUq9&uN5AlSTl$-Wc2;2<*JFnbFpS znOy&a$d1RluKz#T?>Id24C8Qh$JAowpc}7X8AIqy7A9lG>qs-#Kgy56!G(Ig zChM>6^Ula?d`Pd#(#7H^qMI*v*9Nu9t!)i+HK9EL{yO#l4QAbs*YI=T7-u!aoyvJf zQ&)a$)(FqB?oJ*}tpyX#jZbqh90tiu>H2H|OWl7Ojsd=J7#6yPZi4H)APm$G;tORC znI}!*E{2lzRKwxCL_Yi=+}6Pb)};C9NO7Kkqv)afcbJ{6NcB>6y?NxO zax(WdgxLdFLEC{q9$(-aw6+D`bebJKGdX?eJjl5dlv=^E6M=7t^3EX8M2a5=x9QV| z!R#xydEd!Sx<5oIZ-W52w~>0tpo&;=~qnxfklR;z~3 zoL&r{q2P{(41c6lOm`G7rd^PGhz_rx1@Q`wM5$zi$sZ}MXM8heTo?N`Qx{z`9ORkgl@q^h>BuiBn&wF}L5l>c1mzB#vo z76I^F;$_w8J7!AGKs}m+pY@(~b3dDSkPj*R$iBWqN7r{__LZ{gXey5sKL+=pj($N4 zfx`@2J%d4kaa@>yt#57J}T=9j}_e5p#wP1^|hrgAd`iaO{+zYxXVp zCt`n|rPFXMljT=G6S#@RlLmHdf;lT|rT!zqO_KXbR=5{J(_4 zf+td34ZqnrpotO|u(J(dIa6&-H7*bZzM2LmYm$Er`X)oLMT4@Rc!7th1rvXcfPsGl zpGcv8w(29P8jqkFZ>`|G#>s+6@xNddNzB}CNJkrdu7lMxz1sF+f4h2E>jUNi3UyVw zZqf3H!8L~acIHJpm^;m2MyNew#-&CcR83EcfSG~%d-)#Y=w5V0n)7FRsO^t$Yw!%F zq6yZL+31Vx$q+O}q=uP}?e!1L>gO}D~Cs#8q5Yqp>_t$O^MPES$5oQwI4=_J!^`v&SY=V>g^ zjG@1+WFM9K5T*Sl=38n}zyPgB8H^BKz_F5kJW z-%mxhbv8>EH+5+})%4Lcy|4YZ`P36n$sZlQ3C#)XsvC9$`LgV!6Nk9(38`c56>~0! z7>v7QN`BgSd8cYj4ISD;veD12?&^+bp>rI|3n@E_nxhfUZ_%tF8a~MV@+r@(re&`r z{^xs;W^`lxA&;LSfegA$hVo#($=09mUaj!FhbyyQkV-DlQmk>7VUxrJ~k|Nf- z05VludGkzU4aW$ueT&;G0vRRXgiXqfs6RKCQ*|NQ?%I#8F!ry?OM|kR8PG`Xg47 zm$*AtA36&W-W-^anv}iCmE(6FOgHg=rC(N}z40$kqTPeQh-E#*m-<#?X_ftymYyYt zWZMQ`W0Po1@d4^Dhbh5(gUuQxtHPvjh!?JOA#;k!%8Ii75%B>!V}TQ6NQ_{VlACfy z;f_S1v#To#>l?qGYDVfW)Z`n|_aFle92z>*p*s1;nnrGV9FI(pjA8Tx4%u_ZrO|Kwva#|Colc7nRP_H;yfkm8hkLi;$A5`%D2z~djd(8MrRY;B> zeGWaN*mjx0)oI7u`BK-BCYPl+*sUvCPi4haCR#4vYy@j`Fk;l?clC+HlNL{gA#vdW z787O%&!s|V7XW=%M+{Xa!XUxFbWpsPi@Jgts6U@f1~Q1k0 z$te#(9uJYvIS`icFErHD3Hvtn5#2RSL62!>?r`xim@54136)N*Cxp+1+>cG^L-;6246om$s%ZadJk55KQ zfP)!tr%cnQv;MFHtC>#}Qq;OSqK5WU6Z9(3aGd(iUfa0vk4@FR zf`LUP>kY}RrBK)N3uYJ8^I(Y-Z-Fzdr2L#!IG}v-Pr!P|Hy!?kRbV($9Dyl}9idNo z;{?P-T?{BV|E%(0u}`*H1Igw>B~Pi64L)X{NF_2t*urtq15+Hv1!owt)~;xr-@fjO z-8&v5L!`Krx)C&6d63=mBv;fRs*ZN5!IH6lm-E%GFM4~Rq#00-wV(tAO4F*8uYo(jUsX$dy5>6%gkBhirh8z-l1c}I8Hm}R0i_rdMdDL^Pq>V{PFB{ z*Zl+PtLY+tBE?4nrJbFIBn$3@dw}R@3sFArHO*xEAbRbO8rEd9$@PT#Gyf&ipMPQ1 zpg&syTI;(?U+H@(orpqr_$S;C1KakS$!P(fV%vYf)-aFv`?fz;HH@MLS02&tY02WJ znc^ust$yVNn=(63 zOX1E8{Ba5bcm5QG2p60s3<309#eGqz9z!}#N$I?yi&0d|N*a5&8w-jqOje2Yl#iFTfcP?W> zV#T?NTf4{*DLzD?2JSHTpvMLmP?H^x55&YwWJ4%~?}qb3Gs1xG!dQO^9b!g0Ah76i zX<;XlR&=vLu~7#`vudHA!1JRH#_@9+$ynB3U@Fv}9+9sP3EX)eeW6!e#Bv<&_0rHO zy$P$>X!0HpSZ(iS_jm!n-a%<4fqPa}pE`4I05k?>pOPtt%DIVEJKg@x2D)9cHrZ_| z=t%_yRN(yRJ}uTyq1E*1Cm=@)x>fzKJeIYCF{Of`R1lv_NopBPEiJ+o8pfypg^I=` z6LB)QX=rLMqPtS*^AyrwpuSyD0B%8f^s^SyNQCY5xx|^oHiZ@=KLx-@@iL$=qZBZ5 zzNY3QXlX>`N7B)Cq5*5Yc}-P#-fMsk#z+daW1+Q9#b8WC)Y1cqE&z>nmL#=^Ou zp4$Bwv#B6%Jbazu#xb-jHq3pIQ12Hf`BnY55d8#*bnjgWq~rSG8LIo}4=&Z!-v*td zek|IH4^H5YTY<${w$@a>lQp|4PqSFu{zeLmf1$XUkB}CXKKG|2-x^nw;-wVXk897b zD4qC(iOl0K;EmE47`%-V@h^NcO-OnFX!4ejA?IpkI2w$a0bO20znuHw1!)d=w-lG@ z`&^Gv0*k@~vT*+Wdn5Ty&^I0aw`F^_Q}zm9*&Kau^_4|Ib6QPVTlu!v$>4YySk#qt zqlHXz{lS-OwQ}XHajAd|S!9@ILHM)2r9kK<5Z+;UJ@9YScRvW-DO>ET{OWIk0DFez zjoHVS>&$&Y=s|{^bIsyZM5@JUn~1dpFts>c$OG^G!jC}?nCxW#!CjTkBDD(98S3*<-psw7;@sJ40*3y8p_G(Jyv6g(y*V%~ z`hQ?{f1^I-9ARtkr`k89#EbLl?>s&0SlGhHPlG>w)dTe@c-n|fqyKMrwy$O$sxb9h zDp^fd&20P3LQ|^dj$9Iuzpf->FbX%@^XR_q|5nhN6uKCv>8s(kWE zvjyjc-jP75nXlMhl3LEaM2^z$QSut%{JX8JK$T5SRYow?vglf8M|2KhqMT7*@qD`D_3x=U-=}|3!yQ>Kwtu^Si+Jbt z&s3@|{+>G?WbpO-ySrU9a_@S9u}}XVp$*%=HQ%p)2l)Hf$M!Ez6%X_E@8x^GPyZf= zP#CL^UjBCf-r$|rKRbR)p}_CxTrEQensa^&QugiND%$uTjo**p=j8aECNo~Fc!(+< z>+9e4yT4EW)$6S?}s4@8VZtOq5_)M1qHh?Dc%!2jwEkRbl()M=K)07&vm%*3F?y4 zU4t)GEp@@4@j^Wc?HqA)3D0No9Hb4WB$--l%l?DI3sh7kK%f0xSEreje% zUP_6qe>b^=7LMIx2*9E@47!kAt#DO?#Obp80qVS$V2Js?dE@5*849%A z3lFD33g*aeQXjw-TXSx1;Q5S+(e64f+%Phu42xHo-Lf)tKla*2WQR!PMn~kD&@136 zQrsKN*@aYrZFYc~o%FX9ZnoShM(@2CPSKuSApzRBULxITei6j-BA*w|L90AvJ;As{ zid*1jly%XM>-o~xKc**1JHX^+W`G{wY9y89V10 zih`VjfW~>0H1m&M?^PCYLDohd19i2GR;>6-eKPQyPj8q{tpMmsrClgOt9Yq}DanW2 zq~pf7X-H@&cg_;R5guD9=*G)Pyv7%Uzt;i8>S{Y)^c0}K-X$1w-eidns2g}MZD)ZG zr?=mMsw3b1@Ug;srIhl%S^EC$1 znGH^i^i2E^Xr+nf^Qp`QXCLKjPa_arEM956CpeD5Qb43Zi%Fm=DJUP&-t^kWM5+r; zAbnMu^DsNPTJ$YPA2W;9Ky;&JxQ#5TY3{9cz}MixhxYSZ8p6_gHwAqC@!}I@!zU&_ z(ICzQktI@G#h_RMoo#DuP>oxBd~pUfN-z&{BLwbp-hNF`Rpt7*C4Y}_kaf{o=xh8U zajSc>jz~ovZ$yfFns$B+W{Yf*YeLtIs;sCeBj(Sa%;o_Bd}q&hQ-smkKyu5W zEEv|z-a<0>Fq3phme}MDl9O#x{tZpNOa?^&8h1}f#j=&W+ayg0qb8Hg<87gRn@_UU zzAYe`pJ!@NV50>#IfUfAADFia5ma%PsX-xvCjZtX=PU1>Cb@v*7F$^}$=W;2+g2qT zO>#2H$!C`cvPmQ>MwIMxpD6SD@>WQJUAvZM{hl9MCI_<6*w9ircAmdXlbPAvmNeSN zE>%WgT7V^_J!ahT14 z08x%7jU6*oJ7h`~k?g658A$b9uqL9ha&zG=P)q)_P;E{6`06+L$rxYV&QCYQUujxe z^-7!FHk*)%-@Mn_&kHRRx{TOoR@?cAeY&K_Mr6wjbGxIt=drPZ#oadC;P;xGkv+MA z*|*X#vAUz5hNJB>|0OtdIZv#1;D+JYo2s(8p8lRz0wQop6ZfUIyEla?Pibs^0hvl; z^Md@ayeN%+q}$U!#)CDsq?P_fI@70TIrm4XGx_zL1N~p8Iy3kx&F&Ie=&$8O6&E{l z_iF0O7zX-#HM?`4W`EeF*-HP{8Bu~--kzLKqdPprjL&>@+CZQNNS)dXsKP`5O`@qrH8|MbV;)^P^vmS)xS8L7GM}+z^RCls1mM~>e>3?_TWZMf~-%$e^Cy|KFuo)#KB%|tOPjYWj% zqVM-8!cNtQ4J_Sbbo;I5k=?yttUy?2NasuaDLXLH}ueW$b>t zk)6y(BUYp=mFcs*H5Rw*6#tknOo9EdV~mb&iMNyAw8g}|p z@kcLEPjyMWgikmbF5kkgw>YgET@|M-GJF2XRY9}9SN}+?VOh|n4^!SuLZ$|1B{=K& zvvZ4!fMowu(j5e(q&v%4t%_pHMU=R3by?5m@ujF$@mzjNs=V5XeumF4Ls$WgPF1=DU4WbmPhY1SOqgWlqSpw z;cddPi!{UE2GyXvrG#AQ7C;welRL4DjLw}5y6^6HB_-8jXRyC;`((yuI$4PwpB+2> z;>4AtonlJFhBy=J)WPD%S_}`)#bBr1g~E*~9vn+<%PO~#O3f$uhrJ$sQSlYBiIf+p z>q%!L-w@7eA@CJ#s^3|COYI)r18bsuOl-RG?E0OH>nEqzx_V31A&Y176!|2*Il^x^ zP`WmD2IscI(SOjjf6SC!d<06ys|~m2SB^Jat-HCB_+;~CPeyeKhvx%}YL%mb+_1iz ziE+tU_lkN|{NggLhIYg&e7%}Z{YIVfWNj0`E|F?Q=omz>+jjj<+j{e?$>}9kP=vaA zPiwfbF6~y{xB#yP;3KKf*L+EunOTkRv(?WfJj~h#2bexuJM?iDGjz-geWj7*?P}lW zetYs4t+N?fbTWEox~$HU=VTvdOU;qK`B(hCL43VsvASXI?=q+Ixb4+m?-kiLgd^5+ zYYdzy;S0D$Rw-Luo#lRX^tU0YZtN&ZvCXcccG56qN&jwy`s0Z(apd+9O z1PQ!VxN#eJzcKJyaHG^|z+DBnQF8Ax0Pkwg$G6-0C0|Q>I0ja!LuQMni;n~KO$@QY4Bj)ke^;ZaSYr$UmU~!{{%v5QLPmX(wRiF-2YYo`i@qqu;9P{e- z<#A}inLER?O4L9>`|7X$^8>#7>xa-2_Pe65PdmtH^^tdH1Qt1sXPO@M-={}f7#4{A zlYFmeBxgnT9#AzhvbP(0boJkfK^am!0H*zL-<@*G3-5X(Jact{x;ElBrfcjccRarQ zB?0{|bZT1BTB5|bTJ`eEy9gn!nA6i1yol9DDU(zzvtDTF0a{X-$=8ynRyNii)y6HmF^`xnINHi;= zlyNb0YHI{-py3q&u&+dg#?{676TB7K-5GtMYPkJW`{AylR)oC3b!PE3`T}~%Ug?a2 zA4lPEa?w!TgXyk9>xCDbU($7FB>xc6*FkS6Nb_ZxMBnQHWg@B{d^WX4yA+V38#)#U znV(X~P`v29<9>2ZC8r$bcladwk14VIOVMwem)}J9A$xc~+5bJ2?48PfS2FtD0C6cWLkeev8)Is~97D0)bi0yoeo!Ur>1bis&nBJ#~-#>x}TLAB20Hva;hSJ3q30 zQhk>54ba7gL^?B@IG|=qHQtmiPga(&P?~c#y+hw#Z@h?KB!li8P;;oTavwC7H$&&K z(+$VrC+0*=p+JKwEK*T1JU=bwzROt(!w0dnC$S@xin_QhE8!^SvQNXiJ_@&ebw;>t&jH~9FNUvvQ8zUzx{XnX2K*y@^=k7bGAzhz zdk-Ufc<{QE)od+bl~azfxp>Pj;{%9x$2Ca+r?U!S5h`EP@oS=AMb@MzDPb%6RgbYN zbBTR(ZMEUqy8EaDnh4Y{A;Em&yvryW(y;Y1&veSZRz(~G>B-LL7KZ~@S$zM_;`_L# zQ~3T@m51*>G~&sB;@@F;fDrb8op>ea^v36D^6Pq6Lja{K5!z6|K!!s68YzAR?n}4) zduKp$&yr#nLM)-;UcuPu&1r}g`793jEIf0M9>Rf9?ap>ukbpWw#pjl#uPz^YN^r_S zW$9~7+-rr4Z6*F44RxD74+1&ILRtZ&9OiqDE*e;!1E^=TuA5u{h|c5muIOXMT#{TV zp=(D|0H4HoDx3g<`9Xqkgw%KzpNT(>?PWN3@qvgQbNWwk8&nj2=meti{Q+vzZO zw;5x~qwkg@(UuDF?m3xo`l?Xu76xsv9h$A-z{pqe+Hrmf^cs_Q=@*fj2E0)H8p7VJ ze|-{$e&w_o3tRDuztX*zJ=_te{bOh94a^D0(3P_2nvM~!yeR%X8NWRWXOR~q-ONYk zpM6K+1iqFH-BvXOr-Obcmc{UZa|htBKrl*8e|rFGz*xs$EPlXle{xyu4g&E;I;G@= z69dfHkR~(U!12YC8nc}D+bp)5eZ%(P^&bDcNy_D)Sk?uwn6wh)@}aVWT*Svz{joFR zwUy&tI^90mi0>oTWF1K%{i(nJ74YP(vlkc{^&mgMaVc;B)n!1X!QbKo=TM4uJm*bQ zk!{~nUf3i2=@S%ZH0$Pw!-lSomy8{sR+Wd`VB;GHtPJz9#(u2sh@D;=l(!_MA^OhKZaQQz*)pFiD)k3Q>=F>9Mw2Hy?%W(YbeR;OQjN_r0jsq zjrv1+o14xh?YL}D|gph=1Q{^eK5E)$x7)PD6Ly# z@~FTQQ72N;PLUHxk!iG=s31qje>tDhktVIjwn!Ui(U1KVt=t%4(aSk27RxjzSi@1A zoLPQEzg+$ne7aZ|!bD#deVv=FF7v6k54giP4^--GGV(xPg>$h_FuL_CHSi$5z-P0Z zY~EcWhumv%hi6?x%%N+OF^8}w{3g?ROu)-=VO5~+J_@w_#6Ymd`3IC{KD-d9J5)6d zB}Weu<&EQrzQYNC)ok{#ODEH$vxN@V{w6)Gs%I1nKPq(X5avIya$1Wu^6#*?FZ^=~ z_uGC&3-qBhiOIu%?dQ+>O;s&8ly-Xlm{S*!Tl4L!D(Hspn<&tzq?4jtV98V3a)}-1 zD8ngqt3eJsVW`i{l1k+9JuSLnV%ys6iQxZGd9IiX&2tsqJU4?_l*+I@97~JIF5Jtx z0uY7fhj|~0{wgie1X*zt9v!>@TVuSH-kCcgon7Q~*7FZRu@{)gaSAzHOG?w*h60a& zJcWf1uJ!1sAKfD6-Wulx%3*h*45fE2RsEFf;AC9!j`@Zl|D~7neAGBES<4%woO3Mz zH(3A{l3OBbl5PD7>hP#|QnK71Rj#isH{6!{ja#n7v~Iim3$>ibi^Pebz*Ei5@4ogL zgxtB0Spgijf$BRsS(DuJa+iBPerp_6DVxpMvj($gFCT;azlCIWNn^Fx)Mk>|B-@_| z5r)1bv#@Y=Nq2phEoR;_^SyxNjwL2pNV4!nlayaUQ`{uwSFm86Nrp*op)P9Jk5PrU z6=Y~%WinKftX*M}wMtrO8c6PV-n?xhS!k1U^>(3oJ5O(IvWDcizjnQ*Xdn9rhIMdu z??gDHX5_i}uYVX;smW{5;g z3Db`vBb4ex*13-WtsQ%#3@{EArf%4KYN2=zIe?xfbu5dv(ZuSnojH zBh){vSM}*S3z9i3xB4n2I1hP#jg2Eoz(vUJ@E>aKeCiJJaYY+nFBrr!E}uCt>oEU_Q9ZFXUhUeC7#o2$nk@ zwyv<-?Nyfl~wa&TDSTu?!0|q#3 zjW_#xcBsCMO|M^=?Gc8W*sda%V+p(f4ut*0iYxm?OxDNt)t|2Fr7M&AgXUv9VlU6Ycvk9J{$JSO2- z)`Jg$Iy(o0i0#m7Nom8)!E_yk&j9J&4Ap9q0aKcG!dTa(UG3nNCEDsqW?%T2sv-KG zXQ+DGpOW~<^Ks8-swbkbZa($B1ir~hx1G(3r_arxqjUPl*BY#P=pQ2#7dcz9HM z&CHhwj0vdZ!rk87s@wdZe{Vk%iv#{Tq>3o5IrlCyc>Ntc7jsy?h>!C%TB=43rJoKJ zr{uNOekSsjYR<9MRM=`>h|l*`&@EZP9?;>uX2>PyNL%8l?{4^SSJANH$`$-?(sdp+ z81|&m-*AJTZsKWbfg**BBlTIJGHbH=9oUW$%UqdxaY7-SEj=h-_!dyk{m;*V*!(SK zGQR&ocRFmA-k{JPCsT=YHjT&8J<>WBy6cIXZdVQ6Z4H;Jh7EKQVSMqoYS?%xHS|;s zq7`ElBR-vbwl`a#pMzU;U{;9FdRj;Rsn>m0PL#sXlBSO!>UGPxpwIesg<>bO*54gk ztT)lm+urT5>+{gi)Nn}wS{CF$v~C_7po?{dQG7nV^kmje z6I}91Jjy3^b@xmIK--kziciwKVxc;ebE~Z-LM`YG%2x=0@kw4)22;*JY6~@|l?+Ks zjDj!}Z!xEt8KLNQKKet6Hzq?45iWu?nAq6QCv_+1iNGRHF1$iZH(C>{`czKtQ*QiIS{*P&? zGb6Q^DKcNXQT@21C^P6}lC@q`ie_=6gh1?M34`1m{i52F?ZP&0H5%AHwEc#|Tk1_E zo1M4uriG;P|Dd4Z{{CsY2&pyR>h-=^tSo|dP8O7Ozq4bx<||5_ zYfGI+sd$4|fd2GI=A5JRT;Be#fx&8KYIaugOpYmFyObGf{-eaP*-hy*o4%6nCa&Otp4fey!*U< zhPMtE(g^ioM#L3{m#uI{jMJigYZ7md7(Or>P1S83zfX-1cqp^A{)}4Vxm4&0o^#IM|K$m&?{Qo>p&vOGZw9~H3yp#R&^kmLP z!MyvQr=^ANf1bV&BL`T#=)W}XzWyF^xkn)jQ}}^@ulDh()6>9IQ!Yc8wk6o@jt!P zTc=l%asp5^$Q?&E3Y|-#c!_U}a+A47l5+LY?=>r>=mk6-GM9R#mL%t=3eafRPA={= z^{n{R;_fYSy3~DxOWi-w_q#qf)csd8*85IPt*SmbHND_(KW7?7%J?MuMOUkV#pCCq zOFa61I+Y*#zS$cIwK~v1RTECpcU|qC!vb}hyKDCxQpF9WIeD^z#)|t=H#F*M^_B0L z$>61nq4TnR>3k<|DYzNSTs)7Ai7UwA)I!O;U1#id#V`J@3(3#(4a`)ETay36&PMmD zq8;QgOF#d9_V<%Wss1xwSKPbrc%8ey@j7&e9WQAG?s#44j@L=T+*X6RY1q**OhLPu z?s9u&*P%-76TO024K%J-^GzVd8>i?+7@`-u`G)l()J-hs5u5i>^7_O=tFP1;m5MZ3 zxiX6f|EOL-ENirmtp@JgKwTy1A9k4Ja@7gcKFZb}wzcC}_7qesYHToKv7?Ms=0R&Cb8v zH+e>J)DHK{?wej_nV>hzcmuwJ;PJLOpc9YOx6oV-Dvc`ODF9g~{}}E5L|`O)KG`pJ zv;Q`+-|U&n-dSnnMIl*b?oGs>^fEi|@kvuW9_&?--3Ls$T)NBi$Fn}LdWndD{YC== z`Ui2+3y5c)n=@>R)!hTLGLQw*Ocq=Hz4*m@KdX4ps4eAIEAKl2klLK7R>Elm419&m~}C*(!BdyX?~r9)nOx6JpD>A7mzif zkkRO$dd}7J5vk|h19(0t^}I#Td!Yn3|5`nFq@EY(c~k0n$Q@~Ei@o(nVAc-47{q7| zlGw_V&;DZLA1cC(mCuI0YC(caUzmi)275Y>AUu`o)iP7;2c_KYzR7L5)qOM5eUsgy z=}UR8I}83<$pDt{-{m z=V44ECS;+OrsgQDynDOuPT*>zi)pfnSeUt3Q~c+TE*{BG;CCwmceM^#5vae63Ch^~ z!;$6%d`Sz`Jq6ati?w3S1IOssJV5!DL{_QaHDbEX($i= z*xZZ*YtigLU8nUyDKhb$8gNk+%%ogqY5FInLnj0WVw>-W<7n=bLr_q0!*APj^sbwO znUw2C{6dQ21JG|5x7Q%(xKXKSQ>blwb~H0+$2)ckJ73$KYWQAWtDMTqda#L+()m+! ziWJdZSS7u(NQ*+k*-iG(^uF<{oOC8sOdC#$jS zZDuB}3oV7l5rI|4b>|c#-|0ZWoattix`uP9qZWl^Tu~ZrEv3_WbaX^?rTU6PT;0>q zwNS%NCwT){cP8eE(6zo?EURIxI8L|X<5B`Pv{dUc=a*vd(%eV+p!*RkgPae=02S>5@uRBt1C_h*tdf%K60zC)<~x_tc>Eo0qxws zk{6h@lj=)ZrQ{|8YA-48?flanAcd#wRQN(@WMoIgro1fW(Xn& z7>;sd*eiNK10eg1jw9BxtG+hUn#*2(r1hw9WXq25fR)X)-=4nlR6}iNNq1ew$ONV|GxZUBwoWFBQqfct+ z#WKrOGhPXY#7rBd>CS-mXuZD1p3{H1Z~TeIbiGt&S>r5iO%!cvX#6?f!qGXC%+H8g zvFay?zEk8JF-LXA8udT@Et-zbnM_iQ%HcmJ*=qEa*c^355p+j10K-M~>&jwNYo;Gl zw7zy&_s*)rCN_19wDj4SdAMFxpN7}V&{t;ch}Emgp$5>vtZo1peIYTGSMI!q%X@T= z;7<(Z-^8Zq27(BTUcT!&VI}%v(I&+lIKQd!+^lf)`~}haal8(XZ;P~L0?Yhxw6T&G z(0%MVebGVOpP`p=P5{gF`OCwx>V~pzQ)|MpWkNuRCDDWs%NrIa^+HStNulkD`Fh#S zIRk)`ozTb4>Y9FuaK)Gy7ngP_oqyY zaRfk!MlV!@%lJp-=dVq!cEEI?ejP&|ZoF#4#h#IQoh$z#7R&F3ObjvA>vHhKKltbJ z`zi_>3FkspX`rh4wS@@v57#H!%&EXs2(O(>zkEt%?gvTbFSN|?+U|4U8yBw>>uZZ0 zPOnT|yxAG6KQ!1u&;2bg(%J^+d{}JZ^Z~Y5L?^#n z(pIE1$lKXmAI}V(HR3j!4~+PXD~3#foxwb_sx8{7T^rcuV^AB8^$WJ`K3e9QZ0*(O zYQpyPC;xt4GT!}=aAdi*H<|puum_RDk(LGxX4S8a5}{3_+|D@;5S8KctWRtlX`fqY za%R^{LBIpnY!%H>RUu~0NzRECif*J$4mX~?4jtHfq^*40vc&M8r!Gc6jW?&p-RXX| zw^V$woDE(EJ@`j64#$x>KF*i(pQF8;^UVIC^`9dCirKaK(x_k3PbL}N-X};)bh9eB|q6s&3S{zF=-=NQx``dx~qv;GBI;qPBo*bHftV#yz-yl5}rX^mZ1$SQJ#Q=ReUjI(e_Y?K6 zNdHdKzmxUvl(Yo9nv%mj{3tEa2xN91yI*QQwAmv6 zP&1%HelAgQc^Fa8ycnpHhYWMtwRI?y(#HdfM*pgAU7&6o=};rVkn1;ry8J+06B%P? zDw=cu5U$XW*fA*V#|G*u_#jDB0$+Ll2f)qaI)JkJtLBWJjpt$;JSd%Lbm^g?FW=IE zGg@Q?7gfJQaDnjL)uovw`H)oKdQk+V76R4pybJYG^+2ljO^$_BO-o17k`dI1 zu(!gVaY~~dyQPYAq0ng1Tzq1Sin^(5iwuLc)X=dMH1|(S;5(!?*7BZ8*VXYk-$}t< zOU;Q-$s;9R_H1|AVz3%{+mgrUg4bY{iTzM;=h}6~vV|o3P5}-4!Zt981^@{Ajt`$l zsFB+(AZOToB?4rF50G7>$TP|2Il|`Yr#$n0d0thXQk!QNraU^dJJJPrmA>4MDEAMP zJG#3(Hdg}^>Un)d7)9~oPBwC&8Tq~jH!^Lki3#gvLz~+%B*Kn z`;L&lWYg}rS4=XOWJQNb3YskmlPn}TFN>mUX3GhwHO(Z$By(#_hRGx=cADfQ<+T|q zNH*;?Z!1Yo-ffa{LTa@QHz>o0=4}(n_76;QF3F1bO;S!st?za5JTmkdj=TM<;E3F~ zWcMme_kRALyEiV?y~#GI?k)K5x;HM>y#=Z6%}aH!_Wz`NRt|=xZY*~DSmq91g@!14 zj=y&k*OX+BsaRcd;C_a2$2NmP4db|g88G#8^1&u)^e&r0BbuMFzY*Oh1Px$lL>C-r z@@hoK3EyjG`$lxX16G23r9Uk{8ygxm`mD09{h8|T58b)EOdaa^zwA(LxBue~(ap6& z-^cq9qn#hrzp`ez{}mR7FL1|8%vRo&+5Xdb{kLpalAG+)WXr9Sf$0Ag+toTl*-1hH+ll=Xo z7v<6aM!Nh@xNiSl{r|yr-%F0FtNW*7>}?8+(8<&(Q^b^^k==4p%=XrKC{{*3+xtKxonG9jsL(u9B`^>b2i2zoGrT&-{+}a_8S) zeyQa9dym$b`xciO=@Q%_$g~F4`zky*R9U% z$q@|id>HELVG2T6nAtNt^p&YQ&`W3Dgj&cNv%4GCjcr*pRMs{1htm{pg|T}Kd`Sxo z!IbL@_{0e;b;Q3=Safi_HSNr_!q$!-xZ~4`TD&4NvipQU-B)zwCkIw<3(pNa->-fJ z`6lW%)2+OoXik1=6P46Afx5d%ji$TZ2vGvyPf8nrp=o@v6PInZl6S*MK}h;IBHP+JYu z)^W1v7rlN&I{(hkXxozAcu7XL#IMMww;7F<-4e#E7RxzNg>ttcePhMPgGNv1{QxVf zweR%%Df{Zr0~m@Wp6|t(=$zW!UoI0Nh}pAL*|57)@8TQQuLIdA*a7Xo`#%yk`Nu`5b8y2rE2K_uD5OQD4mXa2wI;!{oMd1>FMn@xKaXJgf%+)GFA)Q# z<{P&!&U@6Ig!~d9mj~i@C@wHNL4nBL>_B~yMv(Pf_rw%ZmOjhIuPPh5hV|mC^M#pM z&mad@8+xTz=jaeo?T`grus}Dp92+t8{pzL>(QQj~WVB#rGAPvcUUuTdBwRn~eb-cuGX0gM<>;anOR`ifePv=d6yw#$82mm4@@qjp12Km}E>T(%D?c3)lYP_MCuK1^W|OvWof%MJL?bH7<&QTniXRn@~D3Do_aCWkcy>g2~oQzz0Ctqh_S zvv8X9acaovN~iNS+boIfuJC;&gBs^Qrx;hc5z(*W&2W$lWhr5;=2NJn-r|==*2$)p zP0j8eYb|Y4LDsrz>hV|^g2cKLy`Lo}MebFR3Tkz6Q)2qW1()H*>(g13JN1xDLh;7P ze6=zcs{X%O)~mDtUI>8k9ljosz0)~JJv!Bv9Aq;VDr2FK+Kt6^D;rIT9GkJb&3FJA zM@PRJ!5Vy?uU=a1bQUW6JCp>XH=|ToEAY)`m7o9px3NXGmG~wRPUC9^`30o4}D5JNL?%k@XmMPo>z5^q{V8i6l? zea9M0A44q2LjgHnlTl5_ z=ch=~xrCgFH1atoLAYS5hl{^i?Q~}OI|9g_cN3KLOL(~^>u8{m&`G?)qtyG9yjA=~ zjvkan|1NFj3+=Iw!BaVyls}kTD@6HFfw-7bNeJX(N zxZY(Y&H#Zr4GPoj*kC$_JDoSL-P5YyLmBH8bau%sP*bskd2s|!PwJ_FC-wh^q^xtU zI@L8g`9@LTq?uC!6s%IgT3c|kui!um+A_vM8oEs9lSV0Xn%bOu{^ERUA>?E@`l@we z!`W50!l8fZ7*Mw^9LXt2=S6UcdG9#!P)0*HOK>UYz3KxXwjua0IKPG5Y3wa*XY^*% z^@g=p#n;lVr&ruD*xOBrd-5B7V2e4ASrS-;;ma3cW>P5nn)VI?(JyuQ^6M^;=@QdI z$U^h@JbG066E8n%im;^N+TbCj4HJTgI-fDhCQfBT zgD}EwP**Xs&05zt)}MAwp4vnM4wp%INS%lQoo|raJrJDLVbw@rdC+ z5YuM!tstMGLZ|t%P9bYzDBY2N!0&CoKd8P*WFoVNzq83_U3SaG5=X-vhP+eseLjvz zYa#09dFUQcw$?xR^z=TZojL!IiA~Tm``Xzv_vSPERvk?475L(qlL0rp8!1jhCS*)6 zqD0mW=hD0JkWXvQ#cQ|SB%>mV~gSyMGNCNQX*MVYt(jxb>)PUpysNsr4oT9dV z`8zdK7?9eg{7i01?s<#i!>NQS528xHlZyeTR*Dkt(_;@9{rtxylUldSXi>@@(Hc&gW zD?3R&#oyk#&?3F%cVyA)gs#<7`$d}|J3bEt~|EqsTSE90;(ZwYdGjzHAGdzQq>?akdQuO>@5Yx6>Bke zGrx_1tv@_#c4(@}WS;46cRkaiJK7xWdS)oH%m?;P+iuPUyRB@lInK)E)Ttda-4sl0 z^61|=0tN)h6J{7BU-e5M-T=g=vk+51(?dY(c+SdUTvX#d0L{P$Acb9~6=00bdXLYt zNW^BzN+953vw}9&EjCO0Z@kNl&Dvp8S+QAP*i`q}tlc(sKy22(Nzo;;W;?TXNzq{& zJZXcd&Vup^UTAVIhT8r530ld&$C&6^?Ccbu@az8HLZUODKJje;-?+P=J3sn!e#`5~ zUd`jCZ+%9Orz+!aSb)MGD8wCwSI^Pe?gY=sGz+nsG?{P_$w2U$oP^#MYfZH6Btkz46HZ zPvhZ`(T;~Z3XF$43XF$43XF$43XDf;6b^9G=;(e&fqBY#73}dl#^}6Kjsz4kC$|ec z*<3D~89Y)r%oGCkuN$(UyC}jvW0B>avEVKabH;*C2RL;&G=k)7BD=Gu4|7#1{d8+M zGhM%#4QFyTgVPudXSym@c8XTIGZeWOzu*iq1D{iaVUgjOHpwnIYJEd-!az^TE@h<7 zu^B7K7_acCRGnJ|=%3Vkr`_NUnQ)N$ao3 zV$;Hacilm!_qIj-*v{=-!nF`>LNld2kTb z()d{0`1xvlhp+LTG;V~hD-Yyf?70?4iW5*cHcPGZjOJ-33ui5@Yit6V+azGuKvnc? z_e47A_ei(;(BsDg0eb5}Nx$RSR1hh?oyu7tC=6LFtCoj|gTq7ml$%xeLDV9Nliq#fVSkix3!C7R_ak@>nKto-oH`b3vbYX& z{qzGAbmudD?p}6v^e|QrN4pPa=s~^#6Pv96ysmw*@RZqv`YWJMq zY@GNHt=;oy(u(L_z=@iXm4W|Fa8xjWC-8%=psIe`Vt@TXz?B&-w*TG8_DO| zJ)bm>AxqU?YxnGFE?4SLwR_%czDTJ*H0$I*$KA|7#y)QB;-%5QX*s;b*u^=~XQD`3 z%lXW0HH?=}O4gZ}=L-II2Km;43-72I?oOZ0x>Z*!(^blQ7CgzG^^MwEqan5?ZzewCf&wu%7sxX zx%|3Zu8*nV#a|mu5q~^s>1lmii`JP@9-^jj9_!Dg&FrTXZNl?%nKAEO>-KB894r^h za&O?QYWCl158YIc_9_N7mKt0NGIe)6v3 zuI<9%B1O%BhPB5Aa}C3m!rwi`tz-F$b(AnXd}3UKLca@Wuqq|FC>Ylqca4=^XNJ70>kwGg1!_i*B4$k91GttfA*eO8{ z4W#c4cdMy!b}?q9-6jMF4yC%ltox~KMD$Dc#Cj4VV{>Wr>k#pZpTT)7@H~)=82ax} zVC1%mgsYS}ZumrMFX8xslRaYSCx9BN>Z9=r;(jPG@#-fBRRs&2hc#vBS(d#L!|X<7 zb&j`3e4zKP*d3v(OD=`3*81q`u>QnI2U(^|2mqloDFEnH&+17qv@q|PT)C7< z^EYC(rSOxQ+_h&~+i z;L(RY4;KB0p%deGZH}!N@RI@S>VgtQmOOA==ip_MJo6x!}@nt9oliZi&t|lCA||l%DI%+XY43V|Gc!@ z&B5~1FA4U$;h~iMO>==z=O=}Jf%+-x;>?u|{P@U0aDgBx5QTU?cLM7;O)X>bWw=7e z(XOO-6RLU)Z!A3_ZRiF|$EB8z3k)5HolQ(l26hp1ZYcWkVho{dEqqkoZ5$^UK5(u% z8jIr4PpW!>wx2cLJn*U(8E6K4o>&_YawJqb!)O};YT$ga#JQlcqY3cyuq|mk(f(<=V$q>3zPo4 z9)I}dr{j~K`{+x=bu@Yst2$SCx|u61W^S8nhS_#`DJ#kLDEs@P;b+nZ!w=fjlT;AU)i?p-~KjGL3MVHVzB!=_S4`E+?Z!}@&Nz39l zpDNQv_um#;#&4|#tH2P76z(^V(86eJ@PNqPjNuJqkHbJg13EN092P!P&4mK9XHuz- zTa<)iBbjNafXU5JW0@RvKt!qYHXT*re9>HX_*G87lpdsiIH(-LvB~iGYlFc^@w$sW zUG1M3;2^WNe-4>7fhtc|y9ba=9Vs>K1LwN;teSQ?kZ{4#rYhEi^f0`}kcw5*G*C(A z4Ac)Is}wZ}YTfxGMNEoXjrn~dSZjWtHAia7V@rcg$~SZ6Tz-t*+11lPU{G!l!e{|i zTK^D`Q-}}0o)eQH^)7muJIYJ=*maZ#+fl9>8{IHEx=llC#+dPpu4p_nixCW>`=Omh zH(2{-VR`?L7~iX5MKhvO;3TsNhW#<{Uzl#J6}%2=S#RK_FX$2PxzOrK zmlfLi;yb8>niCt~uBMb8==MkJW~00iwN;A#X^eYGtg#o>#_IFN$ zCQ}kF50v#GnqjL*;4$CLEyp-s82@DoSC@R zltx0N^h^t<32BhhHOL5IN3nLwh-)s|{%mKOfR;_mSpTd7j33 zJFTZQPTR(DYC{z9oo#Glq*6+!Ep;rVI92JE8ESFb&)`&yn|RC!(wx7t9*0|=8Y{nw z9q~#ZRO6FS?L^$MsI=p2vU%EGj?n~ttNl4-v^%$YmwyK>-e zf_vc3uB)jm)Ok-(-q>zn$||n%EJ^G5oBfWsz5<~3y-$1&@ES(yc$gfgVIBbOLzHod zzyF+Aa2p8Ifc1bo9HgY^^}F!9<^msn-;@!J`+vbie6p|pJE{Ns;rFV(2EUJ<`)&N* z#k(YawS*Rat84a;-`;@b;rIGy{%`P`u5KMq!$!6*uX&LPaWL?v@cSl9cl94g<4ykl z_udbF|2hmP-Xt@Ks=gn7v*0f1cVxx4@p}^QzJ=f3Y|-Ir z@Gbg%4i@t8d&txOH~4)J0QSZ2>kwfIzf)QFgWnou^y7C>ul?ZnB3}CO>%}{ZvRnVP zlq6m8Re&#y!J<7(%2fR85Et(CL{_mOa1!zhy{0ah%QIw?}LB){LRE=F^8jy>y4NSp5?`lr_%L z4}CsCOBZdXNd;qBJv=)c4WW7u&*c{*&hWf=e{%AWw^#}1p-onqx!TmWOd7|UtZDFy zWZ;^t*`#=t=G=4%q^IECFI3$SS}LoXxzaeaT>6L{k!tznJS%yocaLVBPC1#)$ES)B zfqk=cBhPStIJz36IC07ULCR?5<OD zj1k9M$UF8f@1)1CFx33#(f!lv*Ecu9&!OfA`Ck_Ov^+4PHNMs-K}H|q?QcEi^oOu1 zevK{uONz(ycc&(^W4x>h<{o7X*^I-LvC_-v?9DZZSP3sV=g>uKdy)a3A_v7{%W8-Vn}d&N z>x{PR+J4Xzdz!U^4z7)5Tx4{7CxO9N|Vj_ue4sL2BclIKuGcXONz?5W zgg*v$oaEB2fgR2Fqj0zBHL?;pZ!r$tunQRjQR&dVfyjSRE%qV#y?g^D|DGNE($gmd zdothm#8O0SB{C3EZ-tCRQAcK?^OE+VbN6c>ifq=1x%Q!o#fQ-=v+3d-h3{ozBMxiyH1R2u~6%HnHk){~vpA0v<(`g$>`T2E_;x5fNNV zAR06YN!Y`dKmrL65|gkA7&_?=X-T@9UP4gRD4-yMxZ^g1`>rUiI4a_j!ES}~AR zj>T)XY(!4_VS3?KYF~EUqNMU`CN8*Hi=4Fl*%tVyls+Eb1c$|RyXqSh(ONpG9Qwfv zNk2&K4i0BXhiJ>iYaV>obbTqghC`pt;Y>K(H58#EJdOZ|*4l#|ZMsIv$+a+pCoR>< zDo7eL9|U(&^C@#K6H>JD)1LQFnb-6FiupZPTt{9n9yo_mhOUs0U}oW+&dBMG2D0ir zsZm6aSiUVK=WFT{1&>mbq8_63S)>fbJ?p;|tp4ZD8!(e!G-?l;`3Eh3QzaUW$lkjW z`&FRQIx6Q?rPAuTYaYqBYr7oRGRD+ry+-=1J%z4@ff=I_eWE^#D%)zj)OUNXTt>-O z^A(O3j0#j0N?b0#=L0KbE-)h_wX(%>#0t${3{;>X(rv=pE<;A`G`ruwWOrlrY!?Us zGX2GC#tdBj?n43*ni{PQ-Kk}xYp$(KiED3nE`FUlCaJCdC9{GoQEqykwH@6--nobF za2_-Z;8SZSqq}DRH%{FP_m8V{zucF~IZ;s??Z#~tGm0RpiJguVmu4G&Xce`wHMg_? zzAOT{M#KjpV!8->VqvBgaaUAk>-O^=UAwN?)2yIxin+sQ(Z#iKhT zJ#gicbhd?TcarVRXczHS$dJMe8_~ze8XcC84e7aJ1CnMF&H`Yo@O)})p|$zhUk z7vz>+AThdF{p{mEANAu`kNf|rXHp)u=BG0u;K$J9)ez} z`Dh57#cLj2FWaf5lv6n-x^Nyci>#!sIh$&P#KARZ6Z<4#aLw6NS$M_-|YPQ6{>7|_M)_&8K=MVc|1EG zM!BGJyQmCy<*E_z^(_(@i$bESjG&AS{>CYS2!cbYtEq)XdrY$Ww%X( zNZ4F_G*W_ky%o|9WI1^#4Md)=c0P?ji8s^A&-j1_)dTXp;!Ic;uRV>F#l`AE`JKaM zBD*e`h+3c-N7@!4&$IEu#vIHLl{@Vv%5T@{HfyXVSV@C%8iG&19z&RE(J5*OK95w* zQ1+3e-j~)so8mg^5k>Md0!bXFWFjGIobo7-$LV|;`)K`oWxwk$>Y5U{f13BCPA&JfaL;MnxWsbkJ%8ew%x!&`Fm#a>}a^g&6#WIg|#ENDJ2}Fn^M&En(^@sr~nFm z?9~VzajipKTQ=AtDMchoEwLPLh^OaWV@FNG^6X^;e+8xg6=Me6R)zW@!}6UPs5;x9 z@%6tk&=M4W&Z{_;0aG^*Y(Ta5ym(t|{mm!nQ0Gma!)n$Re8yMS-QP-+`jT^07m@nx$5XH^+XE$}QWwprNe( zMP2iGHOSSLcVQ#%tfDrthHO428>xSV4Gkx@>>?XA4gTTIg|I1J{;)iHAfnHu)V!ZB zQ}ZIJ*iy+YXdNZxye?)^w&9KD7l)l$i2K%Pd+#${{dgsZUp|G}mGwwlRp@R_kPTV^ zJ#zWj`Q%2b@q!2(Q7uMPTfVo&k&cib4fdYEp+XcvkO(~$KIyk}AwtKMUFbU)-FDSr zO{!XyC%OS%`fkL01-*1rHeCi1?tC1jW1lF_DwL zXswSK(~+bjQJp!juDNd&(k?&Ah75}pb_?b9JBm8~;Xx~qcktn{UR|w?L|6)-rm%9} z8@Vmof7eu^>m{{C&9rx7^*3woT}e$Zb_s>B{Fj1AKhRqlc{(g`QFy^xFf6RHTJk~; z_Hca~9f%gnL*6IsPRZK5h?K^`*U(6R&Dd+lA>Ylme9zHM!g4>|r+_6H*5FYdx!afS z>x5Q9&J3cUA0ZA8h5w|U_YWPp`b$hBuGxGZQv4dW6@R$=V@=)kD+j7;Hmi~Y4WyD= zvw6KNHyAgmyr6KMPF8=3$$%%9f33Z?qhP}K>xt>-$r5d+zKek}5ZP*qoW>~Iu#&U-t5Md7pDIQC|8kp+9%S$f{zT}nVtXgg&pV70yt&&wg*`y&Mh^&joFT)6*VK9=U@2&*{1RFsL#86w2}^5wA^3 zcF+s6Bc?+%Bl$%{N@)Z`;w6fXGAgZUobvbxYOjt{+-O*#=M@e-5O;DTo^+`3=dLXj zzs(0}UP0ce0bDZ%?EnY1ZLqb08A2v3T}m2CIAQlTeZT$uId$9|WRT9CICpUCw5k*5 z{)QrJLo5WtfF92v5y5ts0Wz>-w90_}#JP)Odss|*-o_o*uPNI8|n9Ox9PQ58Cr<;yL?x-*!JQzF8UDt7GAr}eGZ<<%g%3P{{y?Gl1={8 zpe{`dr)7=|8)J>M%puufV{TeFFU>PQMcNNl_Bq3B_9=oo)Px>7aHY(P{gqP@{F`FC5yjW;VLKQ*Rm#W zDCF}{02AC%k5S={cnt$zJt-pWTj+O3q9L!$T%otgSL-z_OB8r^v#4uuhwFur?yECu zyc9|#`2!Inu8i;108hXfDSO0meS{K8zhGx1^={|peS{OxH>-JO7KEE&GLp7b^HKIWeiX~(; z_`;DC*$`)h-3yT>1UFYzc6feDnXL72UW#F428}UPx&FX7TaC!q3h&~m4++jPDudoy zU)@rpU}lBkk%gN@UTcgoHK>UYVodPNb>%fGDl>D3lMfk4ElR*@bB+X=fy6%>k)=W9t1z*+EOVhR?5;tdb4McqgW8qXs0)M)+5U`1 zv=LN3O3!DE@pv2DOC2%FKyaLvF_B8gC?p5QT%X@)^wov}VYDH?2NekKuNR==yFSKmQvZlN- zRF8glqj%igJW7E(LdDb0uT<865kOl~4IwOBw@=)9aD^gPP4zs*nz0|s^f zB_SUuq1(SSQZLC`Kn7*&r!zYW0dxu7TgDb`+buV1lg?#;6x6v<9>$V-uipqo{eFtR zE)<|v5UvgRf~w7h+YGXjsxD$t&Ul?<7)#I|WbWKyNf-@ZUHipJbU18;>jTjSkBwS` z^l;mCupCE{iu^<}@ihAU?goR1xGakzV~n@i7oqAHH#Z~xKHr!I@@m+q0y#6QO|_%2 z3}LAw9=l(LCO;q{fF^r{ zj`x|~Pz|Vw5r{^D(MXn&*+l<{N`X45%rAC$up3T@dQmqr_ug!uLbFmDg0oF1H zjphd$v_G25*duu11;x{aFKXsNRoml30;K`fdxeh z_9{gS#hc@eJRUYN>hU#s6Y^^FCgv4-i}EJ<^8CTPvhuve;mC}J>BfWMI$#mJ7_-~joA>?!W!C2h> z41KJ>m0BWT;5CxDJmgb=+D-4Z2^q>Etqhyk)7*+k4 z=>-8vnhupvS?>OTz1P>f!=N;veevdkIv_fZQfwsovBBpjqRw_ygfb~yzARO_?O{e` zQ=u?2Ynj7-9Epp99chk#zeRO*a$+zcN;N+&~K|4%IEZe6x~S9Gg>D) z10B$7^oJx^4hQ`?0`f=l9@)w8WRcc^Y=JEy1N41XLB;fv>67z}%pxZWh=pQGgV1S5dOT82yrYWUM^zc5~6Ze zP8|&a%83{nEmPfhdWeQfi}q#X=xPY4&!MLG6+%K68=*IhDpH z7+rZ$Es`d)%%}1hm;2*MKyoQO>O83AfZ?vK^#*Ay5{`tTQtHH*j`Qv8XK}$2V-zNl#01=LCW|{(J9ZM5uz+RYCE<*Lp>(mS%`_+f0aDM zG(1WcLr+Wyw@MPI2y#WE$&l>9)Q!wADLN@yVLa=uk)4!tM&*HlZV}Qpt)Q})2P#Q= zW(MlrF1A?VS<)=p5YoYERHabomBVw;VD7Av!WDA=H0z@_8VZp>D21BLkXK2zb`1vA zi-)uYD&O3L+jftJ$z8)iuj*vap=QfWnUd3HDBh46pEbmeQbg+NEAqj>vK3m8jKDAL&cc`D! zom7EzDq&84Qfcx#{7E%Sr~IuNm@gANx4#n&wvP=^_TMqCO;hI6858~Ot$8trv!IjV z?csF&tBrKOlaP4*Y|Dw@##(Dyk2yhMgftAgdCGh(a=STH$)pMRIe1qamO8}dirR?5d5R| zXvr;5ph1A5UThD@MsVWX2}6u(HBL?+lxMmoVJ0pd*;$j77)N}p7(m~bL9xz3F&&bY zB3=^R!GDyR2q{}gVt&Biu#`A?1o9sdK+9zreK5@yAy#3N`T%*R_#Kf+W}E@3F$7_` z(HDls1S$&%927kirD@qin~?~5$!#`{CfzB$+37$+`6)8ZNv4`eR)Ca_HYuz{%`9?5 zTI6b~7%FY2{9p-2l+*?@VZ~0~vV5H3$AtlsPozIto8&9r z9wT`!nEK6^+p z#B3ugOEwN}A7(emv;<5q>v;`#9qC5Q?8%V8D$znAHA?}H%7M6!Odke4QK-To!%!+S zJ%J@kisw8ifiWDxkOD0%4>g8>Yza5z0CrBSG#rIo84lM)Db$eHmO^eSovnu;bPRh_ z{_z@AKCM14$qqFwbI8hVi<~K4oK-GXKe4)~MF28nOK^5`)Q#-vX&#djB{qE*0sc*}Q ztOC?{^4|oh@h%TQx8(elQ>K#t$TdWiv@k1mtB4+#LX=|7c_qz>U>M+O#yA#pH-@2X z6bvA{uu9q5DdLrLNv)XZ(Y@h6k~gDz1NDi225NEB%rrZi=0=|7u0IX?yVO1kk{H21nX zP!giT2qH`sgDDxaW6(Ip(l$^8){n?555N2IDDT_nQL0wF#f%wsIsVv#w@`=7_(_0sPyB=D~hTr<`}_f1H|e0k3T|dgvmFP zL`v;(+$R_ZvhPj!%s#7pjb3PA;~~m7$`cY?8FAOB=^y)d{y4GG<8AgPel~qB_18`d z1cJ_v#vdnu9VPnXSyU7vx)VB!x7i-0nqpNSW%Eh+$PLr#gN0s*De*p>$ND6qr+)8} zYLGmVnux7a-q8jW5i}bPx${JWj7Y^IeJ6jE~{OY5EOtBYn=RTmT%Rw(D>OiU~;DX%W7 zD5xwF<&#URi>4P$m{uglME#2}K!flm6E;qiOrBm=Q6$K7QDvnlnO;7lN|ep0BCs5j zE{ck0oCt<7_zGBGU=aw1eWcj&4Gsv8*F(ai*CWR8eBC%frAvZJk}?4G-B^_`Y49e- z^^7fy24irBa<_o7oH3sL5x5FcVhYV9f(Y0zsM2nm{Cixi)g>ZH|}@{K0DJ z0H_>rKT&iXQUDS9_4vIj^7rTD!d5>if`Ya3gQ~FS#;h3{D;ZKylzCE%g5-#R zq*>_RYH7}z1WB`%VroIs85(ucR1;PaL5hO*s!=XiLN5hluoh1kQr1vi1A0;@kZ2Ov z!A#*k&*YU@It1!yN-mDknp_8MCK1Pi2V00-;5n&UWgLt$Zu>o+IP- zaFjdbyHoCv?+)B`lyBvI?=o&rZyqPWk#TA)_}SfA`B!Snj`QCscgTMS?mEi9^8QEi zuR`c_{*}75d&y#JB>s}MTMKQx1(0F+=5L(t_&(@s8QPif8~IfNA| zVWYuYhxK(c<=RM|>;-EeDlErwSOduG?!uTD7$XZ3ixb$c2`h%`TH8V`vM_E7IRI;G z!g+$`pqkN4jdVF!Z!I@x=j09N>kpGvZg_os>apT4r6ab$1 z%1?8OTIs^vYB{NLm+px+23yBNWg(Db5Dpr}ks~3KBzWe>vG|MDWC{{TMcC{2&|70z zG*KR55i!QhoJ;TC$oz3ex?1Tcl^=tIEFIGgl~gMibyzMYP_Uxj+Yl63q!>XzPMJY- z9nei3OOYN6UZtksN%6&tO;8OGywq?*O4%wSMB|tEBK71u0KaDy}XBJ#`r64S#D9Vz0zOKs2W zq;pG`Et-$T*-*t2A2rhHV?uK4q{h!*yVNW|o4annoxQA-XgChsT z?S!c6xXpU7>K7Bpv<%gxZKk#u`&`v}V(Qdb#tUsi&Nzj+j6)cQ(rPT#U&wJnxsXq@ zNXQwFqlm_kpyt%U$F=T)$ckF(t)yvc|MqzoRvnwI)k?4I%kjmd#u!qNa!PGEfL>hA zgG^V6N4h8^JI#<{mOVxyH@2Km{hEZ@-m}eF3o~VQcjh-5bqs^5mK4ECHxi;H=cdxk zp(wHY4`Xy9*D;s@k)nNonkB-js9G;%_O?Q@hhtA~Vg=dVDe;tYNp+Nyp#}48%YOx@3tV)JSZr~r3m3e@yLlmmJu?FkE15g-R?Sja? zty#=9+XWV;j>FCj)qa^D+Kb05X|pOpO#WERr&Oj0L?$5H=P9gIED5HN}R8rjo8D5#r_shLh5 zP3FuUH{QLe0fyt>iCCKJLuCGZen=shyu|R5;+F&oEB@R|tZG-Oup%8(BT3UxnOrO0 zqzpPiBvIi*Xo=HUtaGMC-XQFW@(Ve}PYOA4W}Dnq{`vXTPUD1J$(xu0A>Ft+4eaPo zjh;Uecn{p+v%x!DUKse{5Rqu}Gb{Du~y0sukTFkzua&S9$^TKiU*U+LsW7 zDVcNCl%?Gg*r__OSvJ8^6+O?gQqcDFaQc%)?{FteSM>tb3R)$dmM&4qlrBd-qjJZD zBOb7sanb=Lk{rOos#Ha^$eGWtT$#bxDo{D1ILsi>Mo`|0`wT)nvsBO`Q$}Qd;TBGw zvXI+(p8z4PnsNcx#oj*JPCtm})On!SvCg1u~n7`0VO@l(rCWFrIpqGH**T zoAxH&!{0CLz};C1->*$Do8c{C`yxh4v879v>xPjzNd=%UL%o{w|9B-*sMvW^?zvlrZGp<(MU*M@iA zJ#{`+b5=QUKJ1K_;$Wq^q%bCD?R-4(7MmCkQ3%@cMhsL9)ksq>hgfpiqK|0@wV!11 z*#?3%iIdc4GJmpe&6SZfhhHt{M`@HzCUeXxtDr;wC>%@!(ZqJA{gZPwC7YfW9b_Cw z1vbtUIv~lAZmO`e(V35FKst6ZerZZxSeqa<8DT=QTa<{G#IlP zTiD&*cPMu&8EfuR=HnSZzEhcRW9-M+mGN8l_W|RGyOn!!qZ3EmtjyguDV)mg=Ciqo zF_W<$V})U>wGHFykBC9}g0j#jc9|HCBbcba9ZVifxYF7ke!Bc)#6;SR;&}}i}m6HaiO?KTr4gTmx{~8264H#LR=}X5?71Ah`)-B;u>+SxK3Oz zZV)%(?_PvJe>aJn#Vz7iX?L5r1F_zT_uIwwvD?ILu{&d%aK_1&*dwv?VEbI`ZhT*3 zr7T{0$=^10+GT71HKL}KZ)Mja?dj`1cv{3}{C_W=`|vz~=RrIV;pyC84bC$pmye3a z#8&aR*e0G3Pl~6+)8ZNNtawg5FJ2IT7i+|e;wAC2*xoAKS5cC$iPyy&z&FKP;%)Jc zcvrk9-WMN;+r*Am?vtg8awOXR>Hq)!X}YUR*M0WwwqMHr-FqC+Gxfk;2lYO<&mn#L z9eUW|M;v*SadiIy1JjN$7f__4USKW<&7RQcHH>L?dh?!!Rm<@V#A}G>4{@wzLR0Epi5nfRT%2Y3W;$(blU>b$#Hc6!-OsATe zQY`~@IvwtoTj8kq=>J@;t@3CQsp3GJk5Vn}>u`(0#_i}WT?`V(iQ^@$C3BASKg0@U zl*rdci!q{?DAanxHeY@zL@5`ENn)}n7A0Z|Xz?`I55#kf{7xaAAxmkFq~I+UjULY5 z^BBi5PGDRCU;9d`yd1eF3SS1y)mGqt^AD%!#mx8LgJ+`ND7-WA#6vpK3ZGKn_TS0y zXQm()v!~0MmNVOF-2&7v2DQRvQoD`U61Cd_B1d}$)N&wrWEyBDQPJ*_GxiW) zi+_o4#BN!Cd&F<3`QrqgiR8i=-kSDLp=&O!i`G@^g}OaRWQhNWAH+V|zFIeJKkXNh zqV2B{ckPYZIT#$akLV(f(z*&mJ6cn1Q?<+hIH=;jL(v0qa-IbTkIIglgC?J zxe)E5IiY2!TBP3T>?=#fLy|A6)_w-c{7m$)9IdVLSS|)=1JM#zf?pG#c5B3`*NF4L zt-EVIv;(xBTB_#c+XrgBw1c$XTAFr@Mm+pjjkx&1n#sr0wJL3pcAPd(%+}_EtM}1} zuOF|SBo5K~YW=iBwZpW-wIj46wT+N5u7Q+c^7~;Larq35diX6OQ_Io@YuQ>Yxc+UR zT^?}#JH=h-_nXAs;vV$=&7dIniHF4l=%d56E#hzD5vB-_is>5hNs}8=!+Ax#DijAy z05;&btZ*eSjgUx{zUcjDjTd-1dQQT!_YEBb3gH6cc5BehXl zo_3=ct&P#fYU8x=TE14GP0%K4g<6p|Nt>({YbDwgZK^g+E7k57W$-0Lxpo4uLaWqf zXfw50+8pgfZLT&?o3EXuRci~h8tIB$Cj05I?6JRab>WX1m4xBanw9`*rMl5a4 zi9J_M$vA$H$e~U(7(#0<5mw1aiKBwQ9(q_m;;+Yvp}iBLK8MVsMvfSrH*ENrgl}Ta z%wDPIuf6bs^%q@y$+{~py==qfSDu&X#%b0;2O#2f>Cy!>!3ApI(p??>;8^}ZL9Czd zQm@i)*N#F+_%6D@cdK}1LeDq<({IhWYtLJ^?)>xDufL#^zYA@@i!QqO;!7^M z^wP_I&u_zJmtB7O6<1v8{89RpMERp7Y0ijU0(tfmG1roSKg73{Fujpf%8bR#5l&Bx zaSjkaiCy6Qi==$;EM(yqASFBqi8xmqqJ@`Y#->@Rs|70pz0LJ*taQPO^cqYS@oo=j z)Rr!-rp3^5<4_n&G}Y7rKGZc}c{F|ULszV3z=U~_i#*mYE9`E>QA=WQG#naC=Xf;? z_C{*WM#I{D&r+QI|xYSQ)X3|m%%mi?mV&W@|Qda(y20PO#M^(D)lFoFf z!?{$l$lA*XmSJIU2G)?ogaKB9_N}U^bsMtSLNC zjYR=$lZVBue8dthA;w{PIDU`z7DD9;{}iPBCB|!Qdk8dmGQ*Ljbh3p!j7Cj7B6>PY zkJdHMkZ0eia}VrJTaWs`|R;I$*8K2y`UmIBH$0ie7BJ<)C_?@UPY_vkw zXxXzoE=A?5;JtkLGLZ3xmy|i<9}0Uh{^tW_{+u!OMP=U3=BbPaGXD6!`u+jq6O6Yo zp3k_5aTsF{#-BJnpD@0}_z>gujOR0+!suoE^feX#%ZytXZ(v-{cq(HZ;|Yvo7>{M_ z#kl8H74A;P*BBpVyoK>%#xodCW}Ly8&v-mzA4ZMwpRcHR-eTOwcn9MK#^sED#yO0I zjDr~uW$enhd%Ft%J;tXQ?`FJ;@f^kw<9x_yde5G8QprGakmc597CQD1YxWKErqqA{e?t^b6 z_;+L64@mrFe>~ms^uR+BJv}{b?_^HJb0D5xcqsgX7|pnP!<_6fzyFzdur2OB{C)_q zFP?sQ4#jgAp2P7Rf#*m(N8vH>9F3MhBB0AZbaFV|AsrPCpb*X za5`X;!+xqXm05Oupnc!_UrwjJke;{g-|U1>#1T6F5sg>BT=T`keCtiUEO40X93~+( ztIFzZXh+rW5a=Echu&TNmN60!q95^{wtqC&ItHJs@tlM?jAXxQ&}GDb4ba5WZ%y0^ zZ^ZS8+jaCi4?5KNZ=!r%%ogRqdGU{UJCRKTB^Sj_RJN}}@V*GoDrkrke>7V`Kc(~w zC4PqaREOPAhe;V|X4(0RT1Mj6>bF`#BmO^`Z4^`jNRlvrN1HE6uquh2fYxXjwD1cZ z-$>q2(uTnNQqb`&Zm5sH@|$6^DU|PFn+>ikahOOtX~NSCIgDo1JNgy4G%>+7!8H+o zh4?G5{T1=MiS}>pzfY1rCtG3JLnyXv+YjT<_^Q$o59$AA-0@id_x8UM_+JV9uLS;A z0hVEeuWWr&h&P6l)C%N*mrXvF@Y9@&VSle-u zs~nFHE`@YoC;wmPI@7fX^5$BMI@h@_M?4E$C%SUPTvy07OU!`llUy~f^}^%2Sk$^I zTy9qx-pZu?RM$LLk!!kZ4#ubJT&1o{#WdGdVz%oFQ33m6*BFFHJhfgFx^9tj#AMf4 z*A#rob>+K;b2?OR*15JK?vbu(t~`9pNBCo0S+3Ep!LCuRp};)X2v@c%$90S=%{9c8 z?m8M_3~(LqItnh2bsYzr<6Vcj2D$pV`n!&Ro1>75yTl=`p02}TKFoE9Yd=>H*Z!^p zTnD=ja_s|O<)WJ_)pa2L`oVU8S2wum4twGHNnhvsUO&jyD1Ov`#XC*BE*4*7VaC7o zFJa!J@5cY%=-=u;>i^a+7GLN;>6^qZ{Tuxnu|xk<{|CO(-xjP6_yX@=>;Kg67ypF) zhx$(aZn0DUOn(LLo)mBBF9Sc-KY^=P@%^9r+xm9>RhVAT-_qaIU&ptn_1E+_^e6E5 zlK!H;Reu4v4KAM5AI0BO_Q`p8NFs^+)tAcy8CP*KgGy(jU}sgzI&#+w`0D zyYYS}{=Z$n27lM;f6;H#uY$XEt{e2N;wG4{)o*}lgT5aBUk!KL#CiG^`a1n`d|#zs zsb2v5v-R_V=jto;i|}@ae!9LExK2L}-jtMrBXT$pC+^Ys@+xjtL3)XQOB=Xyre>a+Bd z^kRIUq*v(kfF=42_?Qj5H$^GlCh6n#sd&ce1^8BoXQW=F57&q3V_=g3Q-MBKABDGZ zc+b!W;@b;ilng&hAEFignvKl!AbURNV!04}9H6|4I81bNTCBzi8iRKWH&+m-d_X zowm;PE8f1*euCXEF#W83t^Hg3Q2SQ5=@RWCX}U}!+jXur z+PT2hu)kPaqg{aam3Y?6Z|k(R+IsCYZJl;H{y$aPE!CQVr)X#3|Fg8Sv?gsDR_(lq zwWsf5z12F`$Gr0D6Rfvc=lWdy6XuVx*5*^W9xDbr)CAUJ=}^7>7i)1`2xpJjPm77J zc*9}{?N`wgZ>idW^8a-%T9HNTv2?6bTIV9$L$P9MU#vaqh4-GCfi+qEHMPF!aI8f- z1Z$D{VO0{j>w_=HVr^5JmMd2&4S}ut8;ErU$7sV~e;n*aV*SrLS03!>>u{_G%G5?< zz0we@5E`YCc^tls$9kXwtOuHk^+DtC|2o%Htz4_XUlrb~uuce+8Y_gRXk}O_R1MRK z+H|Z5D#x0jInu>C*9@Tfce=J*TZK|TA7y_jF+9hQbd&!l|3HkvwYxxvcnF>YZGQ*B z<{;>*4uy-}aM9cLM=L~WHTq%DUG#+(zc1Fe^%n;4Fnk${{|CahAO0T*z5Wph#{doh zzeoojgZ~GJ8}z&6`%saOm8AptkJhxO;k^nv{WN?b+$t999+;lSTN=!Z^{3_6!QjO4 zzu{O-Hr)0%0vZ7GZxpz-`BwzpU=h}2z6Or%#wxZVtVewfx|3;GJx$*x<2MQj<+pXXgcYwFtrEda% z*{t6yIne{)J`aH#Jq%9un0(u+KMrp7g#IM>+B4u>&w-!)9enL2@V!?gr+X8e?`{1Z z{ayWi$uW26AL$>14}PY9u73gk`KA7qz6+f4YyDr~xV!c5z=OZn|D*o^Zv2z}v;JTG z7jSB|RH}=st7~6y_7utadrE%a3;e$~q<}t<3HrJYg=|0)!jX^|3`i9NTmvCJ90QqR z5TuF>S0<#8!BX-V0y$(Dq?Qq`k&s5lKr3SYO_cf(`k!

aPeA&?MLO`Xu~6$u-&f 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 [, [, ] ...] ; # are quoted strings +# desc = ; # quoted string +# type = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic | +# avr910 | butterfly | usbasp | +# jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw | +# dragon_dw | dragon_jtag | dragon_isp | dragon_pp | +# dragon_hvsp; # programmer type +# baudrate = ; # baudrate for avr910-programmer +# vcc = [, ... ] ; # pin number(s) +# reset = ; # pin number +# sck = ; # pin number +# mosi = ; # pin number +# miso = ; # pin number +# errled = ; # pin number +# rdyled = ; # pin number +# pgmled = ; # pin number +# vfyled = ; # pin number +# ; +# +# part +# id = ; # quoted string +# desc = ; # quoted string +# has_jtag = ; # part has JTAG i/f +# has_debugwire = ; # part has debugWire i/f +# devicecode = ; # deprecated, use stk500_devcode +# stk500_devcode = ; # numeric +# avr910_devcode = ; # numeric +# signature = ; # signature bytes +# chip_erase_delay = ; # micro-seconds +# reset = dedicated | io; +# retry_pulse = reset | sck; +# pgm_enable = ; +# chip_erase = ; +# chip_erase_delay = ; # chip erase delay (us) +# # STK500 parameters (parallel programming IO lines) +# pagel = ; # pin name in hex, i.e., 0xD7 +# bs2 = ; # pin name in hex, i.e., 0xA0 +# serial = ; # can use serial downloading +# parallel = ; # can use par. programming +# # STK500v2 parameters, to be taken from Atmel's XML files +# timeout = ; +# stabdelay = ; +# cmdexedelay = ; +# synchloops = ; +# bytedelay = ; +# pollvalue = ; +# pollindex = ; +# predelay = ; +# postdelay = ; +# pollmethod = ; +# mode = ; +# delay = ; +# blocksize = ; +# readsize = ; +# hvspcmdexedelay = ; +# # STK500v2 HV programming parameters, from XML +# pp_controlstack = , , ...; # PP only +# hvsp_controlstack = , , ...; # HVSP only +# hventerstabdelay = ; +# progmodedelay = ; # PP only +# latchcycles = ; +# togglevtg = ; +# poweroffdelay = ; +# resetdelayms = ; +# resetdelayus = ; +# hvleavestabdelay = ; +# resetdelay = ; +# synchcycles = ; # HVSP only +# chiperasepulsewidth = ; # PP only +# chiperasepolltimeout = ; +# chiperasetime = ; # HVSP only +# programfusepulsewidth = ; # PP only +# programfusepolltimeout = ; +# programlockpulsewidth = ; # PP only +# programlockpolltimeout = ; +# # JTAG ICE mkII parameters, also from XML files +# allowfullpagebitstream = ; +# enablepageprogramming = ; +# idr = ; # IO addr of IDR (OCD) reg. +# rampz = ; # IO addr of RAMPZ reg. +# spmcr = ; # mem addr of SPMC[S]R reg. +# eecr = ; # mem addr of EECR reg. +# # (only when != 0x3c) +# +# memory +# paged = ; # yes / no +# size = ; # bytes +# page_size = ; # bytes +# num_pages = ; # numeric +# min_write_delay = ; # micro-seconds +# max_write_delay = ; # micro-seconds +# readback_p1 = ; # byte value +# readback_p2 = ; # byte value +# pwroff_after_write = ; # yes / no +# read = ; +# write = ; +# read_lo = ; +# read_hi = ; +# write_lo = ; +# write_hi = ; +# loadpage_lo = ; +# loadpage_hi = ; +# writepage = ; +# ; +# ; +# +# If any of the above parameters are not specified, the default value +# of 0 is used for numerics or the empty string ("") for string +# values. If a required parameter is left empty, AVRDUDE will +# complain. +# +# NOTES: +# * 'devicecode' is the device code used by the STK500 (see codes +# listed below) +# * Not all memory types will implement all instructions. +# * AVR Fuse bits and Lock bits are implemented as a type of memory. +# * Example memory types are: +# "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high +# fuse), "signature", "calibration", "lock" +# * The memory type specified on the avrdude command line must match +# one of the memory types defined for the specified chip. +# * The pwroff_after_write flag causes avrdude to attempt to +# power the device off and back on after an unsuccessful write to +# the affected memory area if VCC programmer pins are defined. If +# VCC pins are not defined for the programmer, a message +# indicating that the device needs a power-cycle is printed out. +# This flag was added to work around a problem with the +# at90s4433/2333's; see the at90s4433 errata at: +# +# http://www.atmel.com/atmel/acrobat/doc1280.pdf +# +# INSTRUCTION FORMATS +# +# Instruction formats are specified as a comma seperated list of +# string values containing information (bit specifiers) about each +# of the 32 bits of the instruction. Bit specifiers may be one of +# the following formats: +# +# '1' = the bit is always set on input as well as output +# +# '0' = the bit is always clear on input as well as output +# +# 'x' = the bit is ignored on input and output +# +# 'a' = the bit is an address bit, the bit-number matches this bit +# specifier's position within the current instruction byte +# +# 'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12 +# is address bit 12 on input, a0 is address bit 0. +# +# 'i' = the bit is an input data bit +# +# 'o' = the bit is an output data bit +# +# Each instruction must be composed of 32 bit specifiers. The +# instruction specification closely follows the instruction data +# provided in Atmel's data sheets for their parts. +# +# See below for some examples. +# +# +# The following are STK500 part device codes to use for the +# "devicecode" field of the part. These came from Atmel's software +# section avr061.zip which accompanies the application note +# AVR061 available from: +# +# http://www.atmel.com/atmel/acrobat/doc2525.pdf +# + +#define ATTINY10 0x10 +#define ATTINY11 0x11 +#define ATTINY12 0x12 +#define ATTINY15 0x13 +#define ATTINY13 0x14 + +#define ATTINY22 0x20 +#define ATTINY26 0x21 +#define ATTINY28 0x22 +#define ATTINY2313 0x23 + +#define AT90S1200 0x33 + +#define AT90S2313 0x40 +#define AT90S2323 0x41 +#define AT90S2333 0x42 +#define AT90S2343 0x43 + +#define AT90S4414 0x50 +#define AT90S4433 0x51 +#define AT90S4434 0x52 +#define ATMEGA48 0x59 + +#define AT90S8515 0x60 +#define AT90S8535 0x61 +#define AT90C8534 0x62 +#define ATMEGA8515 0x63 +#define ATMEGA8535 0x64 + +#define ATMEGA8 0x70 +#define ATMEGA88 0x73 +#define ATMEGA168 0x86 + +#define ATMEGA161 0x80 +#define ATMEGA163 0x81 +#define ATMEGA16 0x82 +#define ATMEGA162 0x83 +#define ATMEGA169 0x84 + +#define ATMEGA323 0x90 +#define ATMEGA32 0x91 + +#define ATMEGA64 0xA0 + +#define ATMEGA103 0xB1 +#define ATMEGA128 0xB2 +#define AT90CAN128 0xB3 + +#define AT86RF401 0xD0 + +#define AT89START 0xE0 +#define AT89S51 0xE0 +#define AT89S52 0xE1 + +# The following table lists the devices in the original AVR910 +# appnote: +# |Device |Signature | Code | +# +-------+----------+------+ +# |tiny12 | 1E 90 05 | 0x55 | +# |tiny15 | 1E 90 06 | 0x56 | +# | | | | +# | S1200 | 1E 90 01 | 0x13 | +# | | | | +# | S2313 | 1E 91 01 | 0x20 | +# | S2323 | 1E 91 02 | 0x48 | +# | S2333 | 1E 91 05 | 0x34 | +# | S2343 | 1E 91 03 | 0x4C | +# | | | | +# | S4414 | 1E 92 01 | 0x28 | +# | S4433 | 1E 92 03 | 0x30 | +# | S4434 | 1E 92 02 | 0x6C | +# | | | | +# | S8515 | 1E 93 01 | 0x38 | +# | S8535 | 1E 93 03 | 0x68 | +# | | | | +# |mega32 | 1E 95 01 | 0x72 | +# |mega83 | 1E 93 05 | 0x65 | +# |mega103| 1E 97 01 | 0x41 | +# |mega161| 1E 94 01 | 0x60 | +# |mega163| 1E 94 02 | 0x64 | + +# Appnote AVR109 also has a table of AVR910 device codes, which +# lists: +# dev avr910 signature +# ATmega8 0x77 0x1E 0x93 0x07 +# ATmega8515 0x3B 0x1E 0x93 0x06 +# ATmega8535 0x6A 0x1E 0x93 0x08 +# ATmega16 0x75 0x1E 0x94 0x03 +# ATmega162 0x63 0x1E 0x94 0x04 +# ATmega163 0x66 0x1E 0x94 0x02 +# ATmega169 0x79 0x1E 0x94 0x05 +# ATmega32 0x7F 0x1E 0x95 0x02 +# ATmega323 0x73 0x1E 0x95 0x01 +# ATmega64 0x46 0x1E 0x96 0x02 +# ATmega128 0x44 0x1E 0x97 0x02 +# +# These codes refer to "BOOT" device codes which are apparently +# different than standard device codes, for whatever reasons +# (often one above the standard code). + +# There are several extended versions of AVR910 implementations around +# in the Internet. These add the following codes (only devices that +# actually exist are listed): + +# ATmega8515 0x3A +# ATmega128 0x43 +# ATmega64 0x45 +# ATtiny26 0x5E +# ATmega8535 0x69 +# ATmega32 0x72 +# ATmega16 0x74 +# ATmega8 0x76 +# ATmega169 0x78 + +# +# Overall avrdude defaults +# +default_parallel = "/dev/parport0"; +default_serial = "/dev/ttyS0"; + + +# +# PROGRAMMER DEFINITIONS +# + +programmer + id = "avrisp"; + desc = "Atmel AVR ISP"; + type = stk500; +; + +programmer + id = "avrispv2"; + desc = "Atmel AVR ISP V2"; + type = stk500v2; +; + +programmer + id = "avrispmkII"; + desc = "Atmel AVR ISP mkII"; + type = stk500v2; +; + +programmer + id = "avrisp2"; + desc = "Atmel AVR ISP mkII"; + type = stk500v2; +; + +# This is supposed to be the "default" STK500 entry. +# Attempts to select the correct firmware version +# by probing for it. Better use one of the entries +# below instead. +programmer + id = "stk500"; + desc = "Atmel STK500"; + type = stk500generic; +; + +programmer + id = "stk500v1"; + desc = "Atmel STK500 Version 1.x firmware"; + type = stk500; +; + +programmer + id = "stk500v2"; + desc = "Atmel STK500 Version 2.x firmware"; + type = stk500v2; +; + +programmer + id = "stk500pp"; + desc = "Atmel STK500 V2 in parallel programming mode"; + type = stk500pp; +; + +programmer + id = "stk500hvsp"; + desc = "Atmel STK500 V2 in high-voltage serial programming mode"; + type = stk500hvsp; +; + +programmer + id = "avr910"; + desc = "Atmel Low Cost Serial Programmer"; + type = avr910; +; + +programmer + id = "usbasp"; + desc = "USBasp, http://www.fischl.de/usbasp/"; + type = usbasp; +; + +#programmer +# id = "usbtiny"; +# desc = "USBtiny simple USB programmer"; +# type = usbtiny; +#; + +programmer + id = "butterfly"; + desc = "Atmel Butterfly Development Board"; + type = butterfly; +; + +programmer + id = "avr109"; + desc = "Atmel AppNote AVR109 Boot Loader"; + type = butterfly; +; + +programmer + id = "avr911"; + desc = "Atmel AppNote AVR911 AVROSP"; + type = butterfly; +; + +programmer + id = "jtagmkI"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 115200; # default is 115200 + type = jtagmki; +; + +# easier to type +programmer + id = "jtag1"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 115200; # default is 115200 + type = jtagmki; +; + +# easier to type +programmer + id = "jtag1slow"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 19200; + type = jtagmki; +; + +programmer + id = "jtagmkII"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 19200; # default is 19200 + type = jtagmkii; +; + +# easier to type +programmer + id = "jtag2slow"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 19200; # default is 19200 + type = jtagmkii; +; + +# JTAG ICE mkII @ 115200 Bd +programmer + id = "jtag2fast"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 115200; + type = jtagmkii; +; + +# make the fast one the default, people will love that +programmer + id = "jtag2"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 115200; + type = jtagmkii; +; + +# JTAG ICE mkII in ISP mode +programmer + id = "jtag2isp"; + desc = "Atmel JTAG ICE mkII in ISP mode"; + baudrate = 115200; + type = jtagmkii_isp; +; + +# JTAG ICE mkII in debugWire mode +programmer + id = "jtag2dw"; + desc = "Atmel JTAG ICE mkII in debugWire mode"; + baudrate = 115200; + type = jtagmkii_dw; +; + +# AVR Dragon in JTAG mode +programmer + id = "dragon_jtag"; + desc = "Atmel AVR Dragon in JTAG mode"; + baudrate = 115200; + type = dragon_jtag; +; + +# AVR Dragon in ISP mode +programmer + id = "dragon_isp"; + desc = "Atmel AVR Dragon in ISP mode"; + baudrate = 115200; + type = dragon_isp; +; + +# AVR Dragon in PP mode +programmer + id = "dragon_pp"; + desc = "Atmel AVR Dragon in PP mode"; + baudrate = 115200; + type = dragon_pp; +; + +# AVR Dragon in HVSP mode +programmer + id = "dragon_hvsp"; + desc = "Atmel AVR Dragon in HVSP mode"; + baudrate = 115200; + type = dragon_hvsp; +; + +# AVR Dragon in debugWire mode +programmer + id = "dragon_dw"; + desc = "Atmel AVR Dragon in debugWire mode"; + baudrate = 115200; + type = dragon_dw; +; + +programmer + id = "pavr"; + desc = "Jason Kyle's pAVR Serial Programmer"; + type = avr910; +; + +# Parallel port programmers. + +programmer + id = "bsd"; + desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; + type = par; + vcc = 2, 3, 4, 5; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; +; + +programmer + id = "stk200"; + desc = "STK200"; + type = par; + buff = 4, 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; +; + +# The programming dongle used by the popular Ponyprog +# utility. It is almost similar to the STK200 one, +# except that there is a LED indicating that the +# programming is currently in progress. + +programmer + id = "pony-stk200"; + desc = "Pony Prog STK200"; + type = par; + buff = 4, 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; + pgmled = 8; +; + +programmer + id = "dt006"; + desc = "Dontronics DT006"; + type = par; + reset = 4; + sck = 5; + mosi = 2; + miso = 11; +; + +programmer + id = "bascom"; + desc = "Bascom SAMPLE programming cable"; + type = par; + reset = 4; + sck = 5; + mosi = 2; + miso = 11; +; + +programmer + id = "alf"; + desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; + type = par; + vcc = 2, 3, 4, 5; + buff = 6; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; + errled = 1; + rdyled = 14; + pgmled = 16; + vfyled = 17; +; + +programmer + id = "sp12"; + desc = "Steve Bolt's Programmer"; + type = par; + vcc = 4,5,6,7,8; + reset = 3; + sck = 2; + mosi = 9; + miso = 11; +; + +programmer + id = "picoweb"; + desc = "Picoweb Programming Cable, http://www.picoweb.net/"; + type = par; + reset = 2; + sck = 3; + mosi = 4; + miso = 13; +; + +programmer + id = "abcmini"; + desc = "ABCmini Board, aka Dick Smith HOTCHIP"; + type = par; + reset = 4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "futurlec"; + desc = "Futurlec.com programming cable."; + type = par; + reset = 3; + sck = 2; + mosi = 1; + miso = 10; +; + + +# From the contributor of the "xil" jtag cable: +# The "vcc" definition isn't really vcc (the cable gets its power from +# the programming circuit) but is necessary to switch one of the +# buffer lines (trying to add it to the "buff" lines doesn't work). +# With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK +# to SCK (plus vcc/gnd of course) +programmer + id = "xil"; + desc = "Xilinx JTAG cable"; + type = par; + mosi = 2; + sck = 3; + reset = 4; + buff = 5; + miso = 13; + vcc = 6; +; + + +programmer + id = "dapa"; + desc = "Direct AVR Parallel Access cable"; + type = par; + vcc = 3; + reset = 16; + sck = 1; + mosi = 2; + miso = 11; +; + +programmer + id = "atisp"; + desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; + type = par; + reset = ~6; + sck = ~8; + mosi = ~7; + miso = ~10; +; + +programmer + id = "ere-isp-avr"; + desc = "ERE ISP-AVR "; + type = par; + reset = ~4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "blaster"; + desc = "Altera ByteBlaster"; + type = par; + sck = 2; + miso = 11; + reset = 3; + mosi = 8; + buff = 14; +; + +# It is almost same as pony-stk200, except vcc on pin 5 to auto +# disconnect port (download on http://electropol.free.fr) +programmer + id = "frank-stk200"; + desc = "Frank STK200"; + type = par; + vcc = 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; + pgmled = 8; +; + + +# +# some ultra cheap programmers use bitbanging on the +# serialport. +# +# PC - DB9 - Pins for RS232: +# +# GND 5 -- |O +# | O| <- 9 RI +# DTR 4 <- |O | +# | O| <- 8 CTS +# TXD 3 <- |O | +# | O| -> 7 RTS +# RXD 2 -> |O | +# | O| <- 6 DSR +# DCD 1 -> |O +# +# Using RXD is currently not supported. +# Using RI is not supported under Win32 but is supported under Posix. + +# serial ponyprog design (dasa2 in uisp) +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer + id = "ponyser"; + desc = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts"; + type = serbb; + reset = ~3; + sck = 7; + mosi = 4; + miso = 8; +; + +# Same as above, different name +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer + id = "siprog"; + desc = "Lancos SI-Prog "; + type = serbb; + reset = ~3; + sck = 7; + mosi = 4; + miso = 8; +; + +# unknown (dasa in uisp) +# reset=rts sck=dtr mosi=txd miso=cts + +programmer + id = "dasa"; + desc = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts"; + type = serbb; + reset = 7; + sck = 4; + mosi = 3; + miso = 8; +; + +# unknown (dasa3 in uisp) +# reset=!dtr sck=rts mosi=txd miso=cts + +programmer + id = "dasa3"; + desc = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts"; + type = serbb; + reset = ~4; + sck = 7; + mosi = 3; + miso = 8; +; + +# +# PART DEFINITIONS +# + +#------------------------------------------------------------ +# ATtiny11 +#------------------------------------------------------------ + +# This is an HVSP-only device. + +part + id = "t11"; + desc = "ATtiny11"; + stk500_devcode = 0x11; + signature = 0x1e 0x90 0x04; + chip_erase_delay = 20000; + + timeout = 200; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + blocksize = 64; + readsize = 256; + delay = 5; + ; + + memory "flash" + size = 1024; + blocksize = 128; + readsize = 256; + delay = 3; + ; + + memory "signature" + size = 3; + ; + + memory "lock" + size = 1; + ; + + memory "calibration" + size = 1; + ; + + memory "fuse" + size = 1; + ; +; + +#------------------------------------------------------------ +# ATtiny12 +#------------------------------------------------------------ + +part + id = "t12"; + desc = "ATtiny12"; + stk500_devcode = 0x12; + avr910_devcode = 0x55; + signature = 0x1e 0x90 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 8; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4500; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# ATtiny13 +#------------------------------------------------------------ + +part + id = "t13"; + desc = "ATtiny13"; + has_debugwire = yes; + flash_instr = 0xB4, 0x0E, 0x1E; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; + signature = 0x1e 0x90 0x07; + chip_erase_delay = 4000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 90; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 1024; + page_size = 32; + num_pages = 32; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny15 +#------------------------------------------------------------ + +part + id = "t15"; + desc = "ATtiny15"; + stk500_devcode = 0x13; + avr910_devcode = 0x56; + signature = 0x1e 0x90 0x06; + chip_erase_delay = 8200; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 5; + synchcycles = 6; + latchcycles = 16; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 8200; + max_write_delay = 8200; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4100; + max_write_delay = 4100; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o x x o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i 1 1 i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# AT90s1200 +#------------------------------------------------------------ + +part + id = "1200"; + desc = "AT90S1200"; + stk500_devcode = 0x33; + avr910_devcode = 0x13; + signature = 0x1e 0x90 0x01; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 1; + bytedelay = 0; + pollindex = 0; + pollvalue = 0xFF; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 64; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 32; + readsize = 256; + ; + memory "flash" + size = 1024; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x02; + delay = 15; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4414 +#------------------------------------------------------------ + +part + id = "4414"; + desc = "AT90S4414"; + stk500_devcode = 0x50; + avr910_devcode = 0x28; + signature = 0x1e 0x92 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2313 +#------------------------------------------------------------ + +part + id = "2313"; + desc = "AT90S2313"; + stk500_devcode = 0x40; + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 128; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2333 +#------------------------------------------------------------ + +part + id = "2333"; +##### WARNING: No XML file for device 'AT90S2333'! ##### + desc = "AT90S2333"; + stk500_devcode = 0x42; + avr910_devcode = 0x34; + signature = 0x1e 0x91 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + + +#------------------------------------------------------------ +# AT90s2343 (also AT90s2323 and ATtiny22) +#------------------------------------------------------------ + +part + id = "2343"; + desc = "AT90S2343"; + stk500_devcode = 0x43; + avr910_devcode = 0x4c; + signature = 0x1e 0x91 0x03; + chip_erase_delay = 18000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 0; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 128; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + + +#------------------------------------------------------------ +# AT90s4433 +#------------------------------------------------------------ + +part + id = "4433"; + desc = "AT90S4433"; + stk500_devcode = 0x51; + avr910_devcode = 0x30; + signature = 0x1e 0x92 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4434 +#------------------------------------------------------------ + +part + id = "4434"; +##### WARNING: No XML file for device 'AT90S4434'! ##### + desc = "AT90S4434"; + stk500_devcode = 0x52; + avr910_devcode = 0x6c; + signature = 0x1e 0x92 0x02; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s8515 +#------------------------------------------------------------ + +part + id = "8515"; + desc = "AT90S8515"; + stk500_devcode = 0x60; + avr910_devcode = 0x38; + signature = 0x1e 0x93 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s8535 +#------------------------------------------------------------ + +part + id = "8535"; + desc = "AT90S8535"; + stk500_devcode = 0x61; + avr910_devcode = 0x68; + signature = 0x1e 0x93 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x x o"; + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o x x x x x x"; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# ATmega103 +#------------------------------------------------------------ + +part + id = "m103"; + desc = "ATMEGA103"; + stk500_devcode = 0xB1; + avr910_devcode = 0x41; + signature = 0x1e 0x97 0x01; + chip_erase_delay = 112000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, + 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, + 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, + 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 10; + + memory "eeprom" + size = 4096; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 22000; + max_write_delay = 56000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x11; + delay = 70; + blocksize = 256; + readsize = 256; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o x o 1 o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega64 +#------------------------------------------------------------ + +part + id = "m64"; + desc = "ATMEGA64"; + has_jtag = yes; + stk500_devcode = 0xA0; + avr910_devcode = 0x45; + signature = 0x1e 0x96 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega128 +#------------------------------------------------------------ + +part + id = "m128"; + desc = "ATMEGA128"; + has_jtag = yes; + stk500_devcode = 0xB2; + avr910_devcode = 0x43; + signature = 0x1e 0x97 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + rampz = 0x3b; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90CAN128 +#------------------------------------------------------------ + +part + id = "c128"; + desc = "AT90CAN128"; + has_jtag = yes; + stk500_devcode = 0xB3; +# avr910_devcode = 0x43; + signature = 0x1e 0x97 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega16 +#------------------------------------------------------------ + +part + id = "m16"; + desc = "ATMEGA16"; + has_jtag = yes; + stk500_devcode = 0x82; + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x03; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 100; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "calibration" + size = 4; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega164P +#------------------------------------------------------------ + +# close to ATmega16 + +part + id = "m164p"; + desc = "ATMEGA164P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega324P +#------------------------------------------------------------ + +# similar to ATmega164P + +part + id = "m324p"; + desc = "ATMEGA324P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x95 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega644 +#------------------------------------------------------------ + +# similar to ATmega164 + +part + id = "m644"; + desc = "ATMEGA644"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x09; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega644P +#------------------------------------------------------------ + +# similar to ATmega164p + +part + id = "m644p"; + desc = "ATMEGA644P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega162 +#------------------------------------------------------------ + +part + id = "m162"; + desc = "ATMEGA162"; + has_jtag = yes; + stk500_devcode = 0x83; + avr910_devcode = 0x63; + signature = 0x1e 0x94 0x04; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + + idr = 0x04; + spmcr = 0x57; + allowfullpagebitstream = yes; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + + ; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; +; + + + +#------------------------------------------------------------ +# ATmega163 +#------------------------------------------------------------ + +part + id = "m163"; + desc = "ATMEGA163"; + stk500_devcode = 0x81; + avr910_devcode = 0x64; + signature = 0x1e 0x94 0x02; + chip_erase_delay = 32000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 16000; + max_write_delay = 16000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o x x o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i 1 1 i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x 1 o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x 0 x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega169 +#------------------------------------------------------------ + +part + id = "m169"; + desc = "ATMEGA169"; + has_jtag = yes; + stk500_devcode = 0x85; + avr910_devcode = 0x78; + signature = 0x1e 0x94 0x05; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega329 +#------------------------------------------------------------ + +part + id = "m329"; + desc = "ATMEGA329"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega3290 +#------------------------------------------------------------ + +# identical to ATmega329 + +part + id = "m3290"; + desc = "ATMEGA3290"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a3 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega649 +#------------------------------------------------------------ + +part + id = "m649"; + desc = "ATMEGA649"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega6490 +#------------------------------------------------------------ + +# identical to ATmega649 + +part + id = "m6490"; + desc = "ATMEGA6490"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega32 +#------------------------------------------------------------ + +part + id = "m32"; + desc = "ATMEGA32"; + has_jtag = yes; + stk500_devcode = 0x91; + avr910_devcode = 0x72; + signature = 0x1e 0x95 0x02; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega161 +#------------------------------------------------------------ + +part + id = "m161"; + desc = "ATMEGA161"; + stk500_devcode = 0x80; + avr910_devcode = 0x60; + signature = 0x1e 0x94 0x01; + chip_erase_delay = 28000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + memory "eeprom" + size = 512; + min_write_delay = 3400; + max_write_delay = 3400; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 14000; + max_write_delay = 14000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 16; + blocksize = 128; + readsize = 256; + ; + + memory "fuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x o x o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x 1 i 1 i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega8 +#------------------------------------------------------------ + +part + id = "m8"; + desc = "ATMEGA8"; + stk500_devcode = 0x70; + avr910_devcode = 0x76; + signature = 0x1e 0x93 0x07; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 10000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega8515 +#------------------------------------------------------------ + +part + id = "m8515"; + desc = "ATMEGA8515"; + stk500_devcode = 0x63; + avr910_devcode = 0x3A; + signature = 0x1e 0x93 0x06; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega8535 +#------------------------------------------------------------ + +part + id = "m8535"; + desc = "ATMEGA8535"; + stk500_devcode = 0x64; + avr910_devcode = 0x69; + signature = 0x1e 0x93 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATtiny26 +#------------------------------------------------------------ + +part + id = "t26"; + desc = "ATTINY26"; + stk500_devcode = 0x21; + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x09; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 16; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x x x x i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny261 +#------------------------------------------------------------ +# Close to ATtiny26 + +part + id = "t261"; + desc = "ATTINY261"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0c; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 128; + page_size = 4; + num_pages = 32; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny461 +#------------------------------------------------------------ +# Close to ATtiny261 + +part + id = "t461"; + desc = "ATTINY461"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x92 0x08; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 256; + page_size = 4; + num_pages = 64; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny861 +#------------------------------------------------------------ +# Close to ATtiny461 + +part + id = "t861"; + desc = "ATTINY861"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x93 0x0d; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 512; + num_pages = 128; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATmega48 +#------------------------------------------------------------ + +part + id = "m48"; + desc = "ATMEGA48"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x59; +# avr910_devcode = 0x; + signature = 0x1e 0x92 0x05; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 45000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 256; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega88 +#------------------------------------------------------------ + +part + id = "m88"; + desc = "ATMEGA88"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x73; +# avr910_devcode = 0x; + signature = 0x1e 0x93 0x0a; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega168 +#------------------------------------------------------------ + +part + id = "m168"; + desc = "ATMEGA168"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x94 0x06; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + +#------------------------------------------------------------ +# ATmega328 +#------------------------------------------------------------ + +part + id = "m328p"; + desc = "ATMEGA328P"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x95 0x0F; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 1024; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + #------------------------------------------------------------ +# ATtiny2313 +#------------------------------------------------------------ + +part + id = "t2313"; + desc = "ATtiny2313"; + has_debugwire = yes; + flash_instr = 0xB2, 0x0F, 0x1F; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x23; +## Use the ATtiny26 devcode: + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0a; + pagel = 0xD4; + bs2 = 0xD6; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, + 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, + 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, + 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +# The Tiny2313 has calibration data for both 4 MHz and 8 MHz. +# The information in the data sheet of April/2004 is wrong, this works: + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM2 +#------------------------------------------------------------ + +part + id = "pwm2"; + desc = "AT90PWM2"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; +# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM3 +#------------------------------------------------------------ + +# Completely identical to AT90PWM2 (including the signature!) + +part + id = "pwm3"; + desc = "AT90PWM3"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; +# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM2B +#------------------------------------------------------------ +# Same as AT90PWM2 but different signature. + +part + id = "pwm2b"; + desc = "AT90PWM2B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM3B +#------------------------------------------------------------ + +# Completely identical to AT90PWM2B (including the signature!) + +part + id = "pwm3b"; + desc = "AT90PWM3B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny25 +#------------------------------------------------------------ + +part + id = "t25"; + desc = "ATtiny25"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x08; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny25 has Signature Bytes: 0x1E 0x91 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny45 +#------------------------------------------------------------ + +part + id = "t45"; + desc = "ATtiny45"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x06; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 256; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!) + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny85 +#------------------------------------------------------------ + +part + id = "t85"; + desc = "ATtiny85"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0b; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny85 has Signature Bytes: 0x1E 0x93 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega640 +#------------------------------------------------------------ +# Almost same as ATmega1280, except for different memory sizes + +part + id = "m640"; + desc = "ATMEGA640"; + signature = 0x1e 0x96 0x08; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1280 +#------------------------------------------------------------ + +part + id = "m1280"; + desc = "ATMEGA1280"; + signature = 0x1e 0x97 0x03; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1281 +#------------------------------------------------------------ +# Identical to ATmega1280 + +part + id = "m1281"; + desc = "ATMEGA1281"; + signature = 0x1e 0x97 0x04; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega2560 +#------------------------------------------------------------ + +part + id = "m2560"; + desc = "ATMEGA2560"; + signature = 0x1e 0x98 0x01; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega2561 +#------------------------------------------------------------ + +part + id = "m2561"; + desc = "ATMEGA2561"; + signature = 0x1e 0x98 0x02; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny24 +#------------------------------------------------------------ + +part + id = "t24"; + desc = "ATtiny24"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x0b; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny44 +#------------------------------------------------------------ + +part + id = "t44"; + desc = "ATtiny44"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x07; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 256; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny44 has Signature Bytes: 0x1E 0x92 0x07. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny84 +#------------------------------------------------------------ + +part + id = "t84"; + desc = "ATtiny84"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0c; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB646 +#------------------------------------------------------------ + +part + id = "usb646"; + desc = "AT90USB646"; +# signature = 0x1e 0x96 0x82; ? + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB647 +#------------------------------------------------------------ +# identical to AT90USB646 + +part + id = "usb647"; + desc = "AT90USB647"; +# signature = 0x1e 0x96 0x82; ? + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB1286 +#------------------------------------------------------------ + +part + id = "usb1286"; + desc = "AT90USB1286"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB1287 +#------------------------------------------------------------ +# identical to AT90USB1286 + +part + id = "usb1287"; + desc = "AT90USB1287"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega325 +#------------------------------------------------------------ + +part + id = "m325"; + desc = "ATMEGA325"; + signature = 0x1e 0x95 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega645 +#------------------------------------------------------------ + +part + id = "m645"; + desc = "ATMEGA645"; + signature = 0x1E 0x96 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega3250 +#------------------------------------------------------------ + +part + id = "m3250"; + desc = "ATMEGA3250"; + signature = 0x1E 0x95 0x06; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega6450 +#------------------------------------------------------------ + +part + id = "m6450"; + desc = "ATMEGA6450"; + signature = 0x1E 0x96 0x06; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ;