[comp.sys.atari.8bit] MIDI interface for 8-bits: Source Code

terpin@acsu.buffalo.edu (christophe d terpin) (03/19/91)

Below is the assembly source code for the homemade Atari
8 bit interface.  I'm sorry I didn't post this sooner, but
I've been working on a way to overlay tracks.  My Spring
Break is next week (3/25-4/1) so I will finally have time
to write up the details on the complete system.  
In the meantime, the uuencoded source code below is the heart
of the system (it was written using the Atari Assembler
Cartridge).  

For those of you who know a little electronics, Midi pinouts,
and the pinouts of the Atari Serial I/O connector, the basic
interface consists of running the serial output through two 
ttl 7404 inverters to the Midi Input of your keyboard.  The
Midi Output from the synth is hooked to the base of an
emitter-follower transistor with the emitter tied to the
serial input of the Atari.  I would recommend running the
midi i/o through very fast optical isolators, especially if
you are using a costly synthesizer.  You might also want to
use a three-state buffer instead of the 7404 so that you
can turn off the interface when doing normal serial i/o.
Anyway, BE CAREFUL.  

Next week I will post a complete schematic & a BASIC program
that allows you to record, playback, AND overlay tracks (this
part of the program still has a couple of bugs) as well as
save and load songs to disk.  

------------------------(cut here)---------------------------
begin 600 midi.asm
M,3 @("Y4251,12 B071A<FD@36ED:2!);G1E<F9A8V4BFS(P(" N4$%'12 B
M0R!497)P:6X@,3DY,2*;,S @.R!C<F5A=&5D.B P-B\X.2 @<F5V:7-E9#HP
M,B\Y,9LT," [FS4P(#L@36ED:2 G5CHG($AA;F1L97*;-C @.YLW," [("!#
M:')I<W1O<&AE<B!497)P:6Z;.# @.R @,30T($5G9V5R="!2;V%DFSDP(#L@
M($)U9F9A;&\L($XN62X@,30R,36;,#$P," [("!T97)P:6Y 875T87)C:"YA
M8W-U+F)U9F9A;&\N961UFS Q,3 @.R!O<B!T97)P:6Y =6)U;FEX+F%C<W4N
M8G5F9F%L;RYE9'6;,#$R," [FS Q,S @.R!42$E3(%-/55)#12!#3T1%($E3
M($E.(%1(19LP,30P(#L@4%5"3$E#($1/34%)3BZ;,#$U," [(%!L96%S92!F
M965L(&9R964@=&\@;6]D:69Y(&%N9)LP,38P(#L@:6UP<F]V92!T:&ES(&-O
M9&4N("!0;&5A<V6;,#$W," [(&QE="!M92!K;F]W(&%B;W5T(&%N>2!M86IO
M<ILP,3@P(#L@:6UP<F]V96UE;G1S(&]R(&)U9W,@>6]UFS Q.3 @.R!H879E
M(&1I<V-O=F5R960N($5N:F]Y(9LP,C P(#N;,#,P," [FS S,3 @.YLP,S(P
M(#L@97AE8W5T:6]N(&9R;VT@071A<FE"05-)0SJ;,#,S," [,2X@4$]+12 Q
M,#8L,34T.D=2+C H<V5T($A)345-*9LP,S0P(#LR+B!L;V%D($0Z34E$22Y/
M0DH@9G)O;2!$3U.;,#,U," [,RX@23U54U(H,SDT,C0L8VUD+%MS=&%R="P@
M96YD72QS<&5E9"F;,#,V," [+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TMFS S-S @.R!T;R!I;FET:6%L:7IE(%8Z(&AA;F1L97(ZFS S.# @.R!)
M/5534B@S.30R-"Q!4T,H(DDB*2F;,#,Y," [($-,3U-%(",Q.D]014X@(S$L
M."PP+")6.B*;,#0P," [('5S92 _(S$[(&]R(%!55" C,2!T;R!S96YD(&UI
M9&D@8V]D97,@*&DN92X@/R,Q.R*004 B.RF;,#0Q," [+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TMFS T,C @.YLP-#,P(#L@=&\@<F5S970@;F]R
M;6%L('-E<FEA;"!I+V\ZFS T-# @.R!)/5534B@S.30R-"Q!4T,H(D,B*2F;
M,#0U," [+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+9LP-#8P(#L@
M=&\@<F5C;W)D.ILP-#<P(#L@23U54U(H,SDT,C0L05-#*")2(BDL0412*$$D
M*2PQ*9LP-#@P(#L@4$]+12 R,#0L,2 @=&\@<W1A<G0@<F5C;W)D:6YGFS T
M.3 @.R!03TM%(#(P-"PP("!T;R!S=&]P(')E8V]R9&EN9YLP-3 P(#L@3" ]
M(%!%14LH,C U*2LR-38J4$5%2R@R,#8IFS U,3 @.R!I<R C(&]F(&)Y=&5S
M(')E8V]R9&5DFS U,C @.RTM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+9LP-3,P(#L@=&\@<&QA>6)A8VLZFS U-# @.R!)/5534B@S.30R-"Q!4T,H
M(E B*2Q!1%(H020I+$%$4BA!)"DK3"PQ*9LP-34P(#LM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2V;,#4V," [('1O(')E8V]R9"!"('=H:6QE('!L
M87EI;F<@03J;,#4W," [($D]55-2*#,Y-#(T+$%30R@B4B(I+$%$4BA")"DL
M,2F;,#4X," [(%!/2T4@,C T+#$@.DD]55-2*#,Y-#(T+$%30R@B4"(I+$%$
M4BA!)"DL0412*$$D*2M,+#$I.E!/2T4@,C T+#";,#4Y," [+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TMFS V,# @.YLP-C$P(#L@(&5Q=6%T97.;
M,#8R," [FS V,S @055$0U1,/21$,C X(#L@<&]K97D@<F5G:7-T97*;,#8T
M,"!/551"548])$-"(" @.R!C:&%R86-T97(@9F]R(&]U='!U=)LP-C4P(%-7
M251#2#T@)$-#(" [(# ]/7-T;W @<F5C;W)D:6YGFS V-C @0E5&041$(#T@
M)$-$(" [('!O:6YT97(@=&\@8G5F9F5R(&9O<B!R96-O<F1I;F>;,#8W,"!0
M3$%90E5&(#T@)$-&(#L@<&]I;G1E<B!T;R!B=69F97(@9F]R('!L87EB86-K
MFS V.# @0T@@/2 D,D9#(" @.R!L87-T(&ME>2!P<F5S<V5DFS V.3 @4D5#
M5D1.(#T@)#,Y(" [(')E8V5I=F4@9FQA9YLP-S P(%-%4DE.(#T@)$0R,$0@
M.R!S97)I86P@:2]OFS W,3 @4T523U54(#T@4T5224Z;,#<R," [FS W,S @
M5E-%4DE./20P,C!!(" [(&EN=&5R<G5P="!V96-T;W)F;W(@<V5R:6%L(&EN
M<'5TFS W-# @5E-%4D]2(#T@)#(P0R [(&EN=&5R<G5P="!V96-T;W(@9F]R
M('-E<FEA;"!O=71P=70@<F5A9'F;,#<U,"!64T523T,@/2 D,C!%(#L@:6YT
M97)R=7!T('9E8W1O<B!F;W(@<V5R:6%L(&]U='!U="!C;VUP;&5T99LP-S8P
M(#N;,#<W,"!!541&,STD1#(P-" [('!O:V5Y(&-H,R Z8F%U9&QOFS W.# @
M055$1C0])$0R,#8@.R!P;VME>2!C:#0@.F)A=61H:9LP-SDP(%A-5$1/3CTD
M,T$@(#L@=')A;G-M:70@9&]N92!F;&%GFS X,# @4U-+0U1,/20R,S(@.R!S
M97)I86P@<&]R="!C;VYT<F]L('-H861O=YLP.#$P(%-+0U1,/21$,C!&(#L@
M<V5R:6%L('!O<G0@8V]N=')O;" H5RF;,#@R,"!32U-4050])$0R,$8@.R!S
M97)I86P@<&]R="!S=&%T=7,@*%(IFS X,S @4TM215,]("1$,C!!(#L@<F5S
M971S(%-+4U1!5)LP.#0P(%!/2TU32STD,3 @(#L@<VAA9&]W(&]F($E2445.
MFS X-3 @25)114X])$0R,$4@.R!I;G1E<G)U<'0@<F5Q=65S=)LP.#8P($A!
M5$%"4STD,S%!(#L@<&]I;G1E<B!T;R!H86YD;&5R('1A8FQEFS X-S @34E$
M24P](#(R(" @.R!M:61I(&)A=60@<F%T99LP.#@P($U)1$E((#T@," @(#L@
M=F%L=65SFS X.3 @4D0@/2 T(" @(" @.R!#24\Z(&]P96X@9F]R(')E862;
M,#DP,"!74B ](#@@(" @(" [($-)3SH@;W!E;B!F;W(@=W)I=&6;,#DQ,"!#
M4%54(#T@,3$@(" [($-)3SH@4%54(&-O;6UA;F2;,#DR,"!#3U!%3B ](#,@
M(" [($-)3SH@3U!%3B!C;VUM86YDFS Y,S @0T-,3U-%(#T@,3(@.R!#24\Z
M($-,3U-%(&-O;6UA;F2;,#DT," [FS Y-3 @.R!I;G!U="UO=71P=70@8V]N
M=')O;"!B;&]C:R H:6]C8BF;,#DV," [('-T<G5C='5R93J;,#DW," [FS Y
M.# @24-#3TT@/2 D,S0R(#L@8V]M;6%N9)LP.3DP($E#05@Q(#T@)#,T02 [
M(&%U>#&;,3 P,"!)0T%8,B ]("0S-$(@.R!A=7@RFS$P,3 @24-"04@@/2 D
M,S0U(#L@8G5F9F5R(&%D9')E<W,@:&F;,3 R,"!)0T)!3" ]("0S-#0@.R!B
M=69F97(@861D<F5S<R!L;YLQ,#,P($E#0DQ,(#T@)#,T." [(&)U9F9E<B!L
M96YG=&@@;&^;,3 T,"!)0T),2" ]("0S-#D@.R!B=69F97(@;&5N9W1H(&AI
MFS$P-3 @0TE/5B ]("1%-#4V(#L@0V5N=')A;"!)+T\@=F5C=&]RFS$P-C @
M.YLQ,#<P(#N;,3 X," [(&-O=6YT9&]W;B!T:6UE<G.;,3 Y," [FS$Q,# @
M0T1434$Q/20P,C(V(#L@=&EM97(Q('9E8W1O<ILQ,3$P($-$5$U!,CTD,#(R
M." [('1I;65R,B!V96-T;W*;,3$R,"!#1%1-1C4@/2 D,C)%(#L@=&EM97(U
M(&9L86>;,3$S,"!315160E8@/2 D130U0R [('-E="!V8FQA;FN;,3$T,"!#
M3TY33TP@/2 D1# Q1B [('5S960@9F]R(&ME>6)O87)D(&-L:6-KFS$Q-3 @
M.YLQ,38P(#N;,3$W," @*CT@)#E!,#";,3$X," [FS$Q.3 @.YLQ,C P(%-4
M05)4FS$R,3 @(%!,09LQ,C(P("!03$&;,3(S," @4$Q!(" @(" @(" @(&=E
M="!C;VUM86YDFS$R-# @.YLQ,C4P("!#35 @(R=)FS$R-C @($).12!/4%0R
MFS$R-S @($I-4"!3151(04Y$(" [('-E='5P($-)3R!H86YD;&5RFS$R.# @
M.YLQ,CDP($]05#(@0TU0(",G4ILQ,S P("!"3D4@3U!4,YLQ,S$P("!*35 @
M4D5#3U)$(" @.R!M:61I(')E8V]R9)LQ,S(P(#N;,3,S,"!/4%0S($--4" C
M)U";,3,T," @0DY%($]05#2;,3,U," @2DU0(%!,05E"04-+(#L@;6ED:2!P
M;&%Y8F%C:YLQ,S8P(#N;,3,W,"!/4%0T($--4" C)T.;,3,X," @0DY%($Y/
M3U!4FS$S.3 @($I-4"!215-%5" @.R!R97-E="!S97(@<&]R=)LQ-# P($Y/
M3U!4(%-%0R @(" @.R!E<G)O<ILQ-#$P("!25%.;,30R," [+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2V;,30S," [("!-241)(")6.B(@:&%N9&QE
M<ILQ-#0P(#N;,30U,"!3151(04Y$FS$T-C @($Q$62 C," @(#L@861D(&]U
M<B!H86YD;&5RFS$T-S @3%!(3D0@3$1!($A!5$%"4RQ9FS$T.# @($--4" C
M," @(" @.V9R964@96YT<GD_FS$T.3 @($)%42!&3U5.1" @.WEE<RXNFS$U
M,# @($E.62 @(" @(" @.VYO+"!S:VEP(#,@8GET97.;,34Q," @24Y9FS$U
M,C @($E.69LQ-3,P("!#4%D@(S,T(" @(#L@96YD(&]F('1A8FQE/YLQ-30P
M("!"3D4@3%!(3D0@(#L@;F\N+BYK965P(&QO;VMI;F>;,34U," @4T5#(" @
M(" @(" [('EE<RXN9G5L;"!T86)L92&;,34V," @4E13(" @(" @(" [('%U
M:70@=VET:"!E<G)O<ILQ-3<P(#N;,34X,"!&3U5.1"!,1$$@(R=6(" [(")6
M.B(@:&%N9&QE<ILQ-3DP("!35$$@2$%404)3+%D@(#L@<V%V92!I;B!T86)L
M99LQ-C P("!)3EF;,38Q," @3$1!("-65$%"3"8R-34@.R!S=&]R92!A9&1R
M97-SFS$V,C @(%-402!(051!0E,L62 @(#L@;V8@=F5C=&]RFS$V,S @($E.
M62 @(" @(" @(" @(#L@=&%B;&4@:6Z;,38T," @3$1!("-65$%"3"\R-34@
M.R!H86YD;&5R('1A8FQEFS$V-3 @(%-402!(051!0E,L69LQ-C8P(#N;,38W
M," [('-A=F4@:6YT97)R=7!T('9E8W1O<G.;,38X," [FS$V.3 @($Q$62 C
M-9LQ-S P(%-!5D5315(@3$1!(%9315))3BQ9FS$W,3 @(%-402!3059%5D5#
M+%F;,3<R," @1$59FS$W,S @($)03"!3059%4T52FS$W-# @.YLQ-S4P("!2
M5%.;,3<V," [FS$W-S @4T%6159%0R N0EE412 P+# L,"PP+# L,)LQ-S@P
M(#N;,3<Y," [+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2V;,3@P," [(&)E
M9VEN($U)1$D@2&%N9&QE<ILQ.#$P(#N;,3@R," [('9E8W1O<B!T86)L93J;
M,3@S,"!65$%"3" N5T]21"!63U!%3BTQFS$X-# @(" @(" @+E=/4D0@5D-,
M3U-%+3&;,3@U," @(" @(" N5T]21"!.3T953D,M,2 H9V5T*9LQ.#8P(" @
M(" @("Y73U)$(%90550M,9LQ.#<P(" @(" @("Y73U)$($Y/1E5.0RTQ("AS
M=&%T=7,IFS$X.# @(" @(" @+E=/4D0@3D]&54Y#+3$@*'-P96-I86PIFS$X
M.3 @($I-4"!624Y)5" [(&EN:71I86QI>F%T:6]NFS$Y,# @.RTM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TMFS$Y,3 @5D-,3U-%FS$Y,C @5D]014X@
M3$1!(",PFS$Y,S @(%-402!-3T1%FS$Y-# @5DE.252;,3DU,"!215154DXQ
M($Q$62 C,2 [(')E='5R;B!S=6-C97-SFS$Y-C @3D]&54Y#(%)44YLQ.3<P
M(#LM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+9LQ.3@P(#N;,3DY," [
MFS(P,# @.YLR,#$P(#LM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TMFS(P
M,C @.R!0550@9G5N8W1I;VZ;,C S," [FS(P-# @5E!55"!35$$@3U540E5&
M(#L@<V%V92!A8V-U;75L871O<ILR,#4P("!,1$$@34]$12 [('=R:71E(&UO
M9&4@/YLR,#8P("!#35 @(U=2FS(P-S @($)%42!74DU/1$4@.R!Y97,N+BZ;
M,C X," @3$1!("-74B @(" [(&YO+BYS970@9FQA9YLR,#DP("!35$$@34]$
M12 @(#L@86YDFS(Q,# @($I34B!3151)3R [('-E="!U<"!F;W(@<V5R:6%L
M(&]U='!U=)LR,3$P(#N;,C$R,"!74DU/1$4@3$1!($]55$)51B [(')E=')I
M979E(&)Y=&6;,C$S," @4U1!(%-%4D]55" @(" @.R!S96YD(&ET(&]U=" F
MFS(Q-# @5T%)5"!,1$$@6$U41$].("!W86ET(&9O<B!I<G%SFS(Q-3 @($)%
M42!704E4(" @(" @("!T;R!D;R!T:&5I<ILR,38P("!,1$$@(S @(" @(" @
M(" @<W1U9F8N+BZ;,C$W," @4U1!(%A-5$1/3B @(" @(')E<V5T(&9L86>;
M,C$X," @3$19(",Q(" @(" @(" @(&5X:72;,C$Y," @4E13(" @(" @(" @
M(" @('=I=&@@<W5C8V5S<YLR,C P(#LM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TMFS(R,3 @.YLR,C(P(#N;,C(S," [+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+9LR,C0P(#L@96YA8FQE('-E<FEA;"!I;G!U=)LR,C4P(#L@
M96YA8FQE('-E<FEA;"!)+T^;,C(V,"!3151)3R!,1$$@(R0W,R [($%,3$]7
M($D@)B!/(&-O;F-U<G)E;G1L>2&;,C(W,"!#3TY4(%-402!34TM#5$P@.R!S
M970@=&AE('-E<FEA;"!P;W)T(&-O;G1R;VPLFS(R.# @(%-402!32T-43" @
M(" @(" @86YD('-H861O=YLR,CDP("!,1$$@4$]+35-+(" @(#L@9V5T(&ER
M<65N(&UA<VN;,C,P," @04Y$(",D0T8@(" @(" [(&YO(&ME>6)O87)D(&EN
M=&5R<G5P='.;,C,Q," @0TQ#FS(S,C @($]202 C)#,P(" @(" [86QL;W<@
M8F]T:"!T>7!E<YLR,S,P("!35$$@4$]+35-+(" @(&]F('-E<FEA;"!I;G1E
M<G)U<'1SFS(S-# @(%-402!)4E%%3ILR,S4P("!,1$$@(TU)1$E,FS(S-C @
M(%-402!!541&,R @(" [<V5T(#,Q+C5K(&)A=62;,C,W," @3$1!("--241)
M2" @("!R871E(&9O<B!I+V^;,C,X," @4U1!($%51$8T(" @("!I;B!03TM%
M69LR,SDP("!,1$$@(R0R." @(" @.R!C;&]C:R!C:#,@=VET:" Q+C<Y34AZ
MFS(T,# @(%-402!!541#5$P@(" [("8@;&EN:R!C:#,@=&\@8V@TFS(T,3 @
M.YLR-#(P("!,1$$@(S @(" @(" [(')E<V5T('1R86YS;6ETFS(T,S @(%-4
M02!8351$3TX@(" @9&]N92!F;&%GFS(T-# @(%)44YLR-#4P(#N;,C0V," [
MFS(T-S @34]$12 N0EE412 P(" [(')E860O=W)I=&4@;6]D92!F;&%GFS(T
M.# @.YLR-#DP(#LM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2V;,C4P
M," [(')E<V5T('-E<FEA;"!P;W)TFS(U,3 @4D53152;,C4R," @3$1!(",D
M,#.;,C4S," @4U1!(%-32T-43" @.R!D:7-A8FQEFS(U-# @(%-402!32T-4
M3" @(" @<V5R:6%L('!O<G2;,C4U," @3$1!(%!/2TU32R @("!I;G1E<G)U
M<'1SFS(U-C @($%.1" C)$,PFS(U-S @(%-402!03TM-4TN;,C4X," @4U1!
M($E2445.FS(U.3 @($Q$02 C,)LR-C P("!35$$@4U=)5$-(FS(V,3 @(%-4
M02!8351$3TZ;,C8R," @3$19(",U(" @(" [(')E<W1O<F4@=F5C=&]R<YLR
M-C,P(%)%4U16($Q$02!3059%5D5#+%F;,C8T," @4U1!(%9315))3BQ9FS(V
M-3 @($1%69LR-C8P("!"4$P@4D535%:;,C8W," @4E13FS(V.# @.RTM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2V;,C8Y," [FS(W,# @.YLR-S$P(#L@
M:6YT97)R=7!T('-E<G9I8V4@<F]U=&EN99LR-S(P(#L@9F]R('-E<FEA;"!I
M;G!U="!R96%D>9LR-S,P(#N;,C<T," [+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+9LR-S4P($E34E-)4B!464&;,C<V," @4$A!(" @(" @(" @('-A
M=F4@>2!R96=I<W1E<ILR-S<P("!,1$$@4TM35$%4(" @<F5S970@;&%T8VAE
M<YLR-S@P("!35$$@4TM215,@(" @:6X@8V%S92!O9B!O=F5R<G5NFS(W.3 @
M($Q$02!35TE40T@@("!C:&5C:R!S;V9T=V%R92!S=VET8VB;,C@P," @0D51
M($Q%059)5" @('-W:71C:"!O;C^;,C@Q," @3$1!(%-%4DE.(" @('EE<RXN
M+FQO860@<V5R:6%L(')E9VES=&5RFS(X,C @($Q$62 C,)LR.#,P("!35$$@
M*$)51D%$1"DL62 @<W1O<F4@:6YP=72;,C@T," [(" @(" @(" @(" @(" @
M(&EN(&)U9F9E<B FFS(X-3 @($E.0R!"549!1$0@(" @("!I;F-R96UE;G0@
M=&AEFS(X-C @($).12!,14%6250@(" @("!B=69F97(@<&]I;G1E<ILR.#<P
M("!)3D,@0E5&041$*S&;,C@X," [FS(X.3 @3$5!5DE4($Q$02 C)$9&("!S
M970@<F5C=F1N(&9L86>;,CDP," @4U1!(%)%0U9$3ILR.3$P("!03$$@(" @
M<F5S=&]R92!T:&6;,CDR," @5$%9(" @("!Y(')E9VES=&5RFS(Y,S @(%!,
M02 @("!A;F0@=&AE(&%C8W5M=6QA=&]RFS(Y-# @(%)422 @(" F(')E='5R
M;B!F<F]M(&EN=&5R<G5P="Z;,CDU," [+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2V;,CDV," [FS(Y-S @.YLR.3@P(#LM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+9LR.3DP(#L@5$E-15(@4D]55$E.19LS,# P(#N;,S Q
M," [(&EN<V5R=',@82 D1D8@:6YT;R!B=69F97*;,S R," [('1O(&-O=6YT
M('1I;64@:6YT97)V86R;,S S," [FS,P-# @.RTM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2V;,S U,"!424U%4ILS,#8P("!,1$$@4U=)5$-((" @(#MA
M<F4@=V4@<F5C;W)D:6YG/YLS,#<P("!"15$@4T545$E-(" @(#M.3RXN+ILS
M,#@P(#N;,S Y," @3$19(",PFS,Q,# @($Q$02 C)$9&(" @(" @(#L@>65S
M+BXNFS,Q,3 @(%-402 H0E5&041$*2Q9(#L@;6%R:R!B=69F97(FFS,Q,C @
M($E.0R!"549!1$0@(" @(#L@:6YC<F5M96YT('1H99LS,3,P("!"3D4@4T54
M5$E-(" @(" @(&)U9F9E<B!P;VEN=&5RFS,Q-# @($E.0R!"549!1$0K,9LS
M,34P(#N;,S$V," [FS,Q-S @4T545$E-FS,Q.# @($Q$02 C5$E-15(F,C4U
M(#L@<V5T('1H99LS,3DP("!35$$@0T1434$R(" @(" @('1I;65R('9E8W1O
M<ILS,C P("!,1$$@(U1)3452+S(U-ILS,C$P("!35$$@0T1434$R*S&;,S(R
M," [FS,R,S @.YLS,C0P("!,1$$@(TU)1$E,(" @(" [('-E="!-241)FS,R
M-3 @(%-402!!541&,R @(" @(" @8F%U9"!R871EFS,R-C @($Q$02 C34E$
M24B;,S(W," @4U1!($%51$8TFS,R.# @($Q$62!414U03R @(" @(#L@<W!E
M960@;&^;,S(Y," @3$18(%1%35!/*S$@(" @.R!S<&5E9"!H:9LS,S P("!,
M1$$@(S(@(" @(" @(" [('5S92!T:6UE<B RFS,S,3 @($I34B!315160E8@
M(" @(#L@<W1A<G0@:70AFS,S,C @(%)44R @(" @(" @(" @(#L@9&]N92XN
MFS,S,S @.RTM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+9LS,S0P(#N;
M,S,U," [FS,S-C @.YLS,S<P(#LM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+9LS,S@P(#L@4D5#3U)$(')O=71I;F6;,S,Y," [FS,T,# @.YLS-#$P
M(%)%0T]21)LS-#(P("!03$&;,S0S," @4U1!($)51D%$1"LQ(" [861D<F5S
M<R!O9ILS-#0P("!03$$@(" @(" @(" @("!R96-O<F1I;F<@8G5F9F5RFS,T
M-3 @(%-402!"549!1$2;,S0V," @4$Q!FS,T-S @(%-402!414U03RLQ(" @
M.W)E8V]R9&EN9R!S<&5E9)LS-#@P("!03$$@(" @(" @(" @(" H,#T]9F%S
M=&5S="F;,S0Y," @4U1!(%1%35!/FS,U,# @($I34B!3151424T@(" @(#L@
M<V5T('1I;65R<YLS-3$P("!,1$$@(TE34E-)4B8R-36;,S4R," @4U1!(%93
M15))3B @(" @(#MS971U<"!S97)I86R;,S4S," @3$1!("-)4U)325(O,C4V
M("!I;G!U="!I;G1E<G)U<'1SFS,U-# @(%-402!64T5224XK,9LS-34P("!*
M4U(@4T5424\@(" @(" @.V5N86)L92!S97)I86P@:6YP=72;,S4V," @4E13
M(" @(" @(" @(" @(#L@9&]N92&;,S4W,"!414U03R N0EE412 Q+#";,S4X
M," [+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2V;,S4Y," [FS,V,# @
M.YLS-C$P(#L@4$Q!64)!0TL@<F]U=&EN99LS-C(P(#N;,S8S,"!03$%90D%#
M2YLS-C0P("!03$&;,S8U," @4U1!(%!,05E"548K,2 @(#L@<&QA>6)A8VL@
M8G5F9F5RFS,V-C @(%!,09LS-C<P("!35$$@4$Q!64)51ILS-C@P("!03$&;
M,S8Y," @4U1!($5.1$)51BLQ(" [('!O:6YT97(@=&\@96YD(&]F(&)U9F9E
M<ILS-S P("!03$&;,S<Q," @4U1!($5.1$)51ILS-S(P("!03$&;,S<S," @
M4U1!(%1%35!/*S$@(" [('!L87EB86-K('-P965DFS,W-# @(%!,09LS-S4P
M("!35$$@5$5-4$^;,S<V," [FS,W-S @($Q$02 C,)LS-S@P("!35$$@1$].
M12 @(" @(#L@<F5S970@9FQA9YLS-SDP(#N;,S@P," [FS,X,3 @($Q$02 C
M25-%4D]2)C(U-2 [('-E="!U<)LS.#(P("!35$$@5E-%4D]2(" @(" @("!S
M97)I86P@;W5T<'5TFS,X,S @($Q$02 C25-%4D]2+S(U-B @(')E861YFS,X
M-# @(%-402!64T523U(K,2 @(" @(&EN=&5R<G5P=)LS.#4P(#N;,S@V," @
M3$1!("-)4U)41"8R-34@(#L@<V5T('5PFS,X-S @(%-402!64T523T,@(" @
M(" @('-E<FEA;"!O=71P=72;,S@X," @3$1!("-)4U)41"\R-38@(" @8V]M
M<&QE=&6;,S@Y," @4U1!(%9315)/0RLQ(" @(" @:6YT97)R=7!TFS,Y,# @
M($I34B!3151)3YLS.3$P("!*4U(@4T545$TU(" @.R!S=&%R="!T:6UE<B U
MFS,Y,C @.YLS.3,P(#N;,SDT," [FS,Y-3 @1$5,05F;,SDV," @3$1!($-$
M5$U&-2 @.R!T:6UE<B U(&1O;F4_FS,Y-S @($)%42!24U1-(" @(#L@>65S
M+BYR97-E="!I=)LS.3@P("!,1$$@0T@@(" @(" [(&YO+BZ;,SDY," @0TU0
M(",Q-#8@(" @.R!I9B!C;G1L+6,@=V%SFS0P,# @($)%42!84$Q90DX@(" @
M:&ET('1H96X@<75I=)LT,#$P("!,1$$@1$].19LT,#(P("!#35 @(S";-# S
M," @0D51($1%3$%9(" @.R!N;RXN+FME97 @=V%I=&EN9YLT,#0P("!25%,@
M(" @(" @.R!Y97,N+F5X:72;-# U," [FS0P-C @.YLT,#<P(#N;-# X,"!2
M4U1-FS0P.3 @($I34B!31514334@(#L@<F5S970@=&EM97(@-9LT,3 P("!*
M4U(@4$Q!64).(" [('!L87D@;F]T97.;-#$Q," @2DU0($1%3$%9(" @.R!W
M86ETFS0Q,C @.YLT,3,P(%-%5%1--9LT,30P("!,1$$@(TU)1$E,FS0Q-3 @
M(%-402!!541&,R @(" @(#L@;6ED:2!B875D(')A=&6;-#$V," @3$1!("--
M241)2)LT,3<P("!35$$@055$1C2;-#$X," @3$1!(",D,3";-#$Y," @4U1!
M($-$5$U&-9LT,C P("!,1%D@5$5-4$\@(" @(" [('!L87EB86-K('-P965D
MFS0R,3 @($Q$6"!414U03RLQFS0R,C @($Q$02 C-9LT,C,P("!*4U(@4T54
M5D)6(" @.R!R97-T87)T('1I;65R(#6;-#(T," @4E13FS0R-3 @.RTM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+9LT,C8P(#L@;W5T<'5T(&)U9F9E
M<B!U;G1I;"!N97AT(&UA<FN;-#(W,"!03$%90DZ;-#(X," @0TQ#FS0R.3 @
M($Q$02!03$%90E5&(" @(#L@:6YC<F5M96YTFS0S,# @($%$0R C,2 @(" @
M(" @(" @8G5F9F5R('!O:6YT97*;-#,Q," @4U1!(%!,05E"54:;-#,R," @
M3$1!(%!,05E"548K,9LT,S,P("!!1$,@(S";-#,T," @4U1!(%!,05E"548K
M,9LT,S4P(#N;-#,V," @0TU0($5.1$)51BLQ(" @.R!E;F0@;V8@<V]N9S^;
M-#,W," @0D-#($Y/5$5.1)LT,S@P("!,1$$@4$Q!64)51ILT,SDP("!#35 @
M14Y$0E5&FS0T,# @($)#0R!.3U1%3D0@(" @(#L@;F\N+ILT-#$P("!,1$$@
M(S$@(" @(" @(" [('EE<RXN+ILT-#(P("!35$$@1$].12 @(" @(" @('-E
M="!D;VYE(&9L86>;-#0S,"!84$Q90DX@4E13FS0T-# @.YLT-#4P($Y/5$5.
M1)LT-#8P("!,1%D@(S";-#0W," @3$1!("A03$%90E5&*2Q9(" [(&=E="!N
M;W1EFS0T.# @($--4" C)$9&(" @(#L@:7,@:70@82!M87)K/YLT-#DP("!"
M15$@6%!,64).(" [('EE<RXN;&5A=F6;-#4P," @2E-2(%90550@(" @.R!O
M=&AE<G=I<V4@<V5N9"!I=)LT-3$P("!*35 @4$Q!64).(" [(&%N9"!P;&%Y
M(&UO<F6;-#4R," [FS0U,S @.YLT-30P(#N;-#4U,"!%3D1"548@+D)95$4@
M,"PPFS0U-C @1$].12 N0EE412 P+#";-#4W," [FS0U.# @.YLT-3DP(#N;
M-#8P," [FS0V,3 @.RTM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TMFS0V
M,C @.R!S97)I86P@;W5T<'5T(')E861YFS0V,S @.R!I;G1E<G)U<'0@<V5R
M=FEC92!R;W5T:6YEFS0V-# @.YLT-C4P($E315)/4ILT-C8P(#N;-#8W," @
M3$1!(%!/2TU32R [(&5N86)L99LT-C@P("!/4D$@(R0P." @(" @=&AE('1R
M86YS;6ET(&1O;F6;-#8Y," @4U1!(%!/2TU32R @(&EN=&5R<G5P=)LT-S P
M("!35$$@25)114Z;-#<Q," @4$Q!(" @(" @(" [('!O<"!A8V-U;75L871O
M<ILT-S(P("!25$F;-#<S," [FS0W-# @.RTM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+9LT-S4P(#L@5')A;G-M:70@1&]N92!);G1E<G)U<'2;-#<V," [
MFS0W-S @25-25$2;-#<X," @3$1!(",D1D8@(" @(" [<V5T('1R86YS;6ET
MFS0W.3 @(%-402!8351$3TX@(" @(&1O;F4@9FQA9YLT.# P("!,1$$@4$]+
M35-+FS0X,3 @($%.1" C)$8W(" @(" @.V1I<V%B;&4@=&1IFS0X,C @(%-4
M02!03TM-4TN;-#@S," @4U1!($E2445.FS0X-# @(%!,02 @(" @(" @(" @
M.W)E<W1O<F4@86-C=6TNFS0X-3 @(%)429LT.#8P(#LM+2TM+2TM+2TM+2TM
?+2TM+2TM+2TM+2TM+2TMFW%Q<7%Q<7%Q<7%Q<7%Q<3LM
 
end