[comp.binaries.mac] Macintosh Technical Notes - 221 NuBus Interrupt Latency

bytebug@dhw68k.cts.com (Roger L. Long) (01/10/89)

[221 NuBus Interrupt Latency (12/88)]

This Technical Notes discusses NuBus interrupt latency and why, contrary
to popular belief, the Macintosh is not a real-time machine.

---
(This file must be converted with BinHex 4.0)

:#P41)$)b-5jcDA3!8dP8)90*9#%!N!3Fc`#3"2T$8dP8)3!"!!!Fch*-BA8"!*!
)!KXb-M%J6R9#GA-J5@jdCA*bGA"d)%aKG'9ZBhPc)%F*MFi!!2cS!!NGVJ!$A0i
!#BGD!eS"&J!S!!%!N!-*(FKA6e*%68&$33!!Rm#+(Tr#d1F!N!Bb[!#3"Ka*!!!
64!#3"U!H!!`!)!3J!)!"!",qq`IJ(lq##@@`!3#&BN3V!""N6-Ja)F+%5!#%j#K
!Q`!8rm,p%bFJR`!M!ii83$(JS3#1)8FQ,(N5BN)b(!d''"Vda!1)"MXU*3NJ3`"
)5S%XR8TekFd1!+iZ0D%1!)b%*VJ"F!#!"i"irq3"S*FfJ$"rB43fA-J`UFqP*c3
!J*!!-%")!@N"Q!M-9TjEZ"hT-K`8J!8!aSk9UQ#"3#U!%bS'!&Bl@'eKYiN"-%K
BB5F(c38E(!QBF$5!dJ%D*"3SQV65f,-6+V#YSek3!'8hM)'L9bl%Ja(cAXLBpb'
"1AYa1(Cj-!2H*bIh[JLjKq9"%KN8RY34pi#*Q!R2mZ3'X2XeJ#-UiXZI6lqqrIJ
JQZ5a)S3*P6"cV!(#I33@'&m$XY'@3%)@!0"F!JP)NFBBD)!`a"YXX*&('A*!5%3
CBj64KKJFJK"$$MMJJ#"VBj''!9q`04!AE@5jYm-)-XJ3J`i*1&'(%(A-!8)5EY$
"S4ae`%%(#%b%BD3EBq3"!JT*J(!(J##%!B+4CEJ4aKPPJ%"%%d'!S%BGEUb44KN
T0+!4MEEKaQ+0T583J$N$d!E!JMS!)!J!TJ6J3!"aZ#@!#BG@PF-8CB3C"KYc[-%
MNA1N38DB6B3a4KT&[M%('Lb!B!@'GE34TK@K8S&'Q"rD-5'QBAJ*TKbb!5""3R5
bjm"0T@Q3!1ZNEP4kDAkDFNU(Tk#+5UUTSUDkUUJFdM(KSb")83BGFQJ+Uk`FbRC
VLqi*bLX!%H4U3J+CEYVTTb#!B%3BED5K)3K)K#%('9I+%DDeCR$BCBJ*iMUZ#`P
m@1NCER"kKSAfNL&NV'5)+8FDGR!ST"&[b%'XZXHbQd35XVQ@UlMZ63!Ka"XELb`
)8a44+ihMfSQRRJYUi5HJJK*U++)Q9#9!!J'20Hi+9da-aj-JL*%(Md2!bq%EES!
J4"Tbc&&'U*R+)D!3BC4k4aNCJQ$#blMDCX-AD+HYpYTXYqhfffi(25J!$6C34*&
b50NZQ8Nid8")#M+BfRUj'U*U'N*5!5)D#Bp"V40['#NN'BL2%D693[S)T*!!aKk
Cj**X12Q[P#MIJ8BHSBi"0EEf5RNX#(#m!8FGS@Y-)KYVQK%U(FqQUc+lL)2J4Z4
CJU$[Sbe)bf`EQU,"D4NZH&ZfHfh-A4SF)j0G@lMDZeC"!*+S#L[(+`Frr**D(Xp
'mQNXhrcc,V3VIXVV9NM''f8)H6i)Fb3CZaa,'P-3iJF#mHNV5`GNRKZNC!GlT5%
-BQ"$rN$!U5heVPMeXk#63-#m0B3T$8YUAqcQ8+N)KZPePc+5(1+9X$P)bh%CNT)
CdR#'1Kc`$A9B8KR`S#Nkc-YdAE+J`Kjf`$1m3@&EHJ-)d"!'1-#K5`3d'"a!H-*
9@3d%CZMK((DhUJ2DUiUH#T2TP0L')#eTGZcLACLk9$%fb!jklF+BaY4i4GACm%Y
P`1($b&#a)YR3BU(k'ZcNm!CA$8Z0@-53!"[[J%41Q5&Mc*-@e#JB085LiBdD$1'
5'"Qf16ba$"(,!`ieTSC4ZU%-HBJH!$c3'YY%J!%'+3d&[!F!(m$528'JTCaSild
!m#%)Be$G[C!!q$S46A&L-!4"'3cjVc#G`8PG"'A5T"3%*dT3Q@ii`r-iT,$Gj@'
+bG4FN!#55,q19BKe`HTK'LDT[!PQ-@`94#31B!!$i3RTG6(Ji)3)D6A9Z5&LfFS
Q(%%3"$E`$SGR11Hca#NN6i)S$60dR#5M&MYMh91*@A4KL639)K,Q,e5LV!2r,NQ
lL2P6@#@Li`RE0d(e)Hk&r108L#cS,b[*L`eCBX19mL!N%[([$F`U*)G@&3Bb%(!
+HB!5'JLC-$d3Fk%r'LI+I*I"-EKa$'[BBL)eYN0i`8'#UBX9#&6R`Z)aG+ajX#V
dJUE,lT%Q!$4i`LQhY,L%aD%19GbJik+f+ME!!35b8eiDp"#QXk*c$[fU'J8jeiD
[LUK,dXTQdXCj969PNi$c%m-ipjUd-&9@QSr8Q*EQ`,a1AJZ`CYK531HJ6UJ*#3@
#e*IUfQ#UIaD2HAKSAkP3QdJEUMC@L,9B#VJB4$4p0Q+K09iCl#8'%'CVSJ3N%Q$
[P9)P2QU4@!`$e8j*`P#"F,%8E'c'k"#V*EfZXM5GV*!!NSZP6ifhH1h-NT!!4PK
##DU5Ph&bkfX#N!#)JZ)8$S6XD+3deMNj)%P*$l2Y(0`B`L*j$X%F$)18I0VAL,h
"$+P0EJ-RTXFXY3'(44,5KEI%dQQ#J()BpPH4B'F[1SJiYBLF!dq0e)C343S%)H@
J'B@hc",CFF@6j*3,bdY*&4ji5IVbT'X(5J8Pp[@[Pk)@)hP(dbYH+R3m"5N14iT
$0TM8YCBU88Je4JBRT8pd@E+Y60P3Kf&jpCUD6I(%*$[*-BqeB9[&m5K2E'E-2ZZ
4'AS$)bAl462Y@%[pZJ0[%DP!+FPBSfd!`BBID%)KQ@j#&3T$LXI3B#0r$J5KHe+
8G+$I'+f(PM,,%dIiG,0!$DT3`MK8SUB5!"'8)J&'F+-6T85j!'8TQ2R$h*CX',8
,TlE!4ej[aN!JMB-P,+,PRFD8MKFaDF3V3iJ$%G3F0Sd8H"M%,Pid5`NS4dS1'8T
AqbQcHLdJMJClJLK)J`ZJ&kS)[J'VbLhU(,c0f9j$m*V)rTbb45ZN-P*)[LDUJ6k
ahFpYcb'k`BS@%V88`9J*b!bkKJ1[%5FJ1K$laFGfX)%&RZFNN9-'#VmflKVqciH
hLkhj2A8X!H#%@mXaNT&G'+)c[R&IHe`1`8*Yb$d0iH5Dr(8cS1I#9klYPK-`C+f
CH3$DHQVE)1(@6,MhSrl$KRB$fk0#kMILr[e"N5Hlj(ppABk@RQer1Laq-1FH3r$
V(RcF1JJN,"85l4a`*5d4BK)NX*!!M%K-*9jTaDpc0`Rel&[(h5ZmTU+Fk$4%h!-
'le%h4L4cRHZNG8BYZFc6D0@FppF4)e+c@Vhd`HhSjFj5%J4"FT4jRpA18*8ZBf9
eR09#KGl6"bP8Pr6bhVGXE#`5-Y++Vj4NlHaiSmEGe#cUC5EZhNN'&rR",[BZP0K
-1FNZQ(MmBF,e4ijJi'2)`KJ'V"Sep[e1BprPmR0H`CFEp&K&VSYh[PFe1'If6a-
bKmmc*8*'AKNL6DkL*9m`"84#"j4#J'cJEFXf@YBAIZ0hC-D$3j%9*[%@,!jSJ!m
%!JR)B&E3J0IPECb%8dK558Sd@iie86C&CAdAEUEh,1d(DMf'8bKc1i*fBQ0R3NE
9,K4)AJ&5F",QHL1fBAQ!4"+86EaMBc,P+0Bd,41P99Mb0@'$*@3`-4960@%905K
c2pShC'%6K!#59A#A%+bd2D8a#Dl4)*p!5p$3KJ$3$93AIEB4$VFf"$BdB,!("f@
@Fe2b4()3@T&hBMD%4$8BK#cPEI%98'#bAXH(3#!@-5"`!r48#i`b"L$3!L#3!!1
AQ)Pj"M9Pd!,0C9j+9!BdK!Cd3)VIG5P+JJC(pB4#a$Q6)iTCXL5*f"mNCLVHY56
"jc"#Pe-iGAmP8S-a+#4S)Ldip9h"-d-YY#V10hHY*(GfZ&p2N!!!m`0SLi4%UM-
X*fL$5j*MPj*Bk@8j9E0X5I+(524r'@KL613UN[9G+AL,k580F'!eEIB',D#)TZ)
#dPC!mMG@6#43pr3XjXL(kBKQL3GUJPBL!,C14L-P-4K)cR0`DK3ehhKG1fL-r3G
KVh0[jKJr5B#,*09k2R8qdX3l'l4q(r3`r)-l#H9$$)3iD@"#@)3l@-90G!CM"VQ
(%HL558Bl5c*L3I*8`@-N&'*AH+9+e3KpG2Fp,&!2)@!2d@!2hb!'&#!!95!2`(!
)2!!"+`!"%h!#3B!!pi!*8`N0H)!!8"!,KD3(p`!*Fa!#4(!2A[!#,8!*If!(%m#
9FR!!J(!2BI!%HI!!GG!$4c!"QK#Ae3!%Bh!2P4!$!J!&Pf!)pU!#%$#AGHN&+'!
!15!!El!'%2!&GT!!PE(`!'h!"VF3!`e!"3S`"IB!"q&`"&N!#&dJ!(r3"KrJ!QY
4"(-3QiA`!(HJ"k!!(6&J"+S3Pd(`#(8J#JF!!f#J#0Pa"[C`"iYJQ)%!"(2C"'c
`!C6a"@dJ!EI`!fFJR,H`$)$*(IGJ"FN*#3Th$h'J#J6!!4FJQ*!!B!m[N!!(!K!
,!C!!!pMj",cCP!'!"Npa'k@f*hFb!1fa*`!3!`"J-hpL#J$`$!"`$`%!!RkK-jN
JDch6"!EbS5!DSL*U)0Uc)(5c*r,4,LTDSS*6!5QUSQ*5"Z5SKqG)+p,)S#GU"#q
USSFcAi4d"YN5DH0S-HASNaU6N!#!U**,-M`VG&e5`N41e#9c%$3QfL"%X+2Y3JD
(k(d6U)[Y&$p6))Z)G*!!k1L(R5GCR%9H(L4I9#Si9iSI-1T'K#BNRJJ$Q!JLYQG
E[`KbkSGr(%Pdf8G")65P,&+P!*!!"&MkGrrN1NVN8f4(6N-k4mq#T)9h@aN6*T[
L+VK$@"(cT5akSKi+Tc`DN!!!pJC!#Lr+p9AD8T!!BF+NT@8Q3e!eF[!I[MCPQ4B
e8N!&8j!!Ta%cJ0G&U)8U1$Z3!+KD3SBqad4,!N13!!+VXNUV!X+1!GKMH5-UrF'
8JA1L#C!!U*rD)2!KUZd5TZL@AUj+,H&(4)jLJfh%@c()N!"I)kPLeAlE#J",N!#
SadKFBf@NIDL1N[@0qr1,`ILRlfHY#@'SfHUY)"#[hDS#-!U3!-&cHB!e9c[&2pM
5+(332f@L2Z(P@,9&ALlSAL@PA#jdUI(kTJS,SiLN,c981m`k"l0DKPDb+T88N!"
c3#'2"9l$`j!!!U8aT`4+S(4I!bXi"#!IE3UU)eUd4RZdp4'[Zr5c*aS##rZd82Z
Y9#!&IA-%l4)%#MJ&m4UeA!ZM8%#e6N!&+[S%4Q!%3pXJ*Y#eAGXh3m!%98!%43!
#*d!&fA+2,K!'*h#fPk'fA-ZfEJZhFSY8Fe!%Gh@hHEXHK[S"I"ZeApXhBYXZ6q!
hL#Xi5iZM$4+U5&XJ)(!hf#)PQ6ZL5KZ[,H!@!f#L!,!"$pTU%eUK&jUKKE+K%#!
!XFXA$3)"84X%6*!!"%IJ"#!J!hUVZ&!V"YRL!N,5YCbE0lilZ5GD#29J"d2`Qhq
J!pC""E%`!0R4"[B3!NM!!(+3!!%'B!mP)*J'%!32)!CSN!!""3!$Ae!(32!-G8!
%%`!#ZDN1(p!'%f!#*c!&Mm!#RMQq!b!&$h!'kfN%-K!"N!"3!Z8,PK"JQG(`R0p
3"bp3"q5EQU[j##i!$p#`2EG8'JK!5aj!$pC`$$+!"E$J'm!K(-34!Sq3!!$@N3$
rm!#emLh@da5j`J%[mKU'@VQ'UJ$1+J4PS%eZS,F+S"rKjkakQ`"4'kmN%,8I9M%
ZS'J,1`)a`!*f%%%ANS`S%!B`d#E"HU,!ql40$$diYE$1HMGN`!*Dh!!hDUJC%,9
Ud&KFQm9E(,V+bkfIDarjN3GU%+XXkk`$FXIc3FGGh#!-S"plh+aPU,F-%,8!4+M
AfL!)8-ErT,Fk,$J*#mMdXEPiN`Fbm-HB,,4e2$L$,"M1'UD%"D0&%!993-CPD-B
Yd--rc#Pkb`AKGlakdbkT[-S`@XU$93BV3!1,Zl!li%&PN!"fch*q+pZb[PC4)YG
CG2!e3D4'HVX%`9c0eUbL1l!PCCKJ%92%,LYE'8-'J[c)!(!!YTbmSh`&6#a8,M$
'-$S#[%aB+a!$1-!#C&"2I,X$p$a0NJ-#2@!L)!!&4p6-+d#Yr[(0fRB[m4S&8IX
&6P!'G`!&f,+`,$!&@E#VE9X%35!&e``#1p""jfT[q"C20$KM)V*%b`8(mDS"85X
'Td5m8"X%BM"HHLX%kqc%lUbL@Sc'RGc4-,S$V&8akFA-+U5h6h$6B[bd1ad'qH6
6f+c&r[a60K3LYTG2rh`T,X3TR3FemGS%85Y"@K+e40`IcSV'q"c-1c!mLUBk'TG
Hcka%3TK9J,@&mHUd8"['6rbdm&b'TR`epab[m3ZefP&C65"8mBV%8"Z[FA[Al*c
6l4)'-Q$@6Sh05ABX"i4)40dYSC`&50h16h[)I9b',"$2C5$(hLE-Xc0lBI*S0*E
-ITcCYL1M)K[+C6,CY[h6k8@"i+c3SFc38&Y8CHEC8@c)I+c-Dr$+CHM$3#cClI,
4BE#Q@J,Ej,4RS'hFm9VEB0cB5Jd$,&$GIPc0fB`b[JT2G($B5GcE83[FB5$Flec
,Qmc6eTc@1dM8j)4)hZaVeL*-iKc+8p$C82c1GN!&hh3eF5$J6j6&-R$DAEX$EK5
DH9EJ!aiUec)'m90"38!N9Y9Qq41[3p$CMTdP8ec&E"!%C*!!K3LZi'Ul!r6pNEi
9er%+"IkYeb&ZaH"fiSZl!rFMU!ml8p)U*6(`!MB!!e6'F[Y0cMS3ie(-h5)1"8a
N06DHccF,"deH"RV,dBb0ddSGf9"YfcX!e@989LZZ4-EkV!PGj%cE)",3d#2)JGG
ea1FpbNN!3Hr9,SemffKpA5GJD@#$8dU+6@rR!J*VZD)4Y8AJ"%4!b3H+"+5V%6m
ESDYVS4LUk+mE!2j!kCEZ$b*aDj!!Bb5fPf$b&@CFY%'AGNe&+9RT-JG!FJED"kM
QbS1XjB-qUiB)LLF,ZL!1#U'!mZLY+qN"X+%m)mT2'3"L)&hp3eZYSf8LY9IliiT
GBQ&4SclX`bb#5)La-P0!9%QVP9KcYM"r5((A!Xe4FeBSJdK8C8l40DJC1ej%pMU
PbNcm8`FB0L&VXQ*aPPK)a%i'L@H*&fL+PPb)0'R9ARB9q'QK0MT4T)8qpUYh&M8
q&AZGUN3Ta#%X9%@1mQ(*b&[GRL80*#q2qMSqG9MD$NUmqP["NPKK*eBqa6c$-NR
4c8e[3$QD+!B!JMLaASG2#3"R!cFk[r-mccCbBa!0-VV#8,SFJEUi,U%8#ZQZfqX
"`!j0hr5cVU#VeU#TkqK*[qXDbU'f%J!f`4%5`26Q8"9L2l!*HK-rL`f%)VZb1rC
8-A@MiIC9B30H-3+#S3X!)!)Fi4SiR`$)32F"`!5LS33'-4UMB3-4`!)V8""B!!!
k)2K+832r!!SJ)"LBF2Hhm3"(%3!GJ"8"J2N&iIQGRrQJ2rULArUIErUKIrUURrU
T,`!2m#HXl`"N)3!18!J&)IYC8IZh2rX13"##`[ZfrrXNdIZlArc#Irbi6rZqRr`
1B!M&6rZ$m2bk,r`li3#`MrYpX3!,8"$DcrhE(`$G$rlI(rlN2rlQlrhS,rlTArl
VIrlUrrlX$rrZ(rrd2rrfhrli,rrjArrlIrrkrrrm$`$k[`")!!HJ!5aqI3(l5Er
Jar`)!YYlJ"!`!NV!#8J"+k!&[)!B-!0U3!eS!b!!,U"l!J!1@,k%F"353JHN"T2
2"&!!N!-%D)"@1!TbM`)N2JeJ"!#!#aJ*4m%af)$G!!*["30J!JEK+1`!R1F!X!!
)C#9'!!J#J+1J"($H!U!#)"!Sr%#lN!!&F*i#i!"dE`$iJK'i"!&!&Hb!q!!%5J+
+!2Lk)"V!H4#!%S"!F8!'55!!Z!01X1mG""RJ&CJ!!HL#cUm$SS)X+!CU54Nm#TA
!#8+",!J+9SNGj!LN!1Hp%VUh!1`!&c`+LG!',!"@N!!&`B&S1)4(B4Bi3@+3!!A
C!Fj6JNG"'$M"$eJ3b!%!8!&+-#&%!c4)#qMH"*!!"Bm3!+c#$NJ*!3!"d!1Ad##
`%NYS!a)!)U"l"-$jFB)r#!!`RH&$!*12!1#p&RJ6"S9XN!"l3-$[I38'X!3-JK%
)!+LV&j)#ZPF!G%!!S!9,!&F%J,M3!EGK3(!(SU%D!S"Vq!DF)$@JH`C!(`3!3k!
1"d8Y3)0SJ1iK!%#3!!i0!Ji)!--!$E)"IFJ)!S!2U)F"B"qJ36K!pa+!-ZL(kr"
R1%&Hd"#Y33#J"293!$b"[3F)'+%DJ)KCS3ZJ39K!pc+!(1##1%!!L%6$a`3B)5C
S$"Na%(C!2%$h'!!a5)I08!#-!N8)!QTL"[-#i9"Sa!)V5!ISAJ2J6G63)1b+Ai!
'qB"4l"05S"k1K3#`!iQ!8@3%%"%(!!!1%!"U`"KJ"%Ea*3S!U8J&U1)#!!Cdc`&
S!SK)"3#!'+#+#J!*T-9!`3X'J&)%!,D!+NB!&%$h)%!I6)UR%!!3!l2)"IUL'`!
!l%!UZJ1U#!"B!0f,!$B$-0C!IY!9rm&!*"GQ)!"S!B3S"+JL"-!%G%m#!!13!"J
!S)"Rr)8!B!6S!bl)&8fMiH-!L5m$D!-!`!D#iU"J!jk4(EK##38B#i)Hd)XiJ1k
4J-1)pa,#!JJ![p(`m3"A5!d!!"D)!3EK1"B#UTJ!Q!(GS`#1J3*!4`"`(#'"@33
$ee%UQ)MS'!!fJ@G%L`#!!S!"LV!GMf1Jk)"J-6h#!TV6(J-!Ij+%0$%pBMSR8"p
jJ@H8Ja8!m&'"qRJ-U')!S!GdV`)8`ZG)(U@"ANb0V`%IV-2kf!hJSQkN'ciJ2GC
(G+!AV5,GN!!#!%!+e-Gjd"A(!(Ud!)R3#Y6(5LF*S3(GX`#V86Y'ajp"(G(M"5!
,)R*'8J#ik"J"`!9BMraa4Ri!c`J2k0i&F!9MS6d+!"93'BZLMq3&cP&*eJ#p1!J
"!!CBJ3a!53)"c`J*k"i'Q(`X3%P@3dRS)6%!i&-"5Y)+k%8)i#8G)3a3NQ&!,dC
$+bQKG-5-a)dlF$PD5@a`#TAN(I#-6M)$h)3X15-&J9iN!5@4,$")lLJ!'S&C9)0
0`3b)"LAj%MXJ0J#'I4!$+-P4B"D0B&1`"!"!!bK*9q!C38&*R)pSFNEQ!Xr)$Ic
H'-b4h*&4pN*b32Fd!"kBP0'4EJJ!`dF$DL9"N!#4X6)%l-S)J!&UCH8$PYZ2"Ha
+#)!J3b8Vd*!!ZI)'l%S&3!"Uj@Kd!Hd4!!L"ACN!hQ'S4)HT-PBfJ9dC!0!"hGX
!'!!!N!#!E)N&GL8!k)QRbb`3bPJj"TBP46aG)3&@EMmhX#XA3$imA@YaAQirr@6
ij1,TNP!@)&X5!J%!q6VLkB+5#60A2S*T@4K2Pc5`&GP5%da,"R!Z6D(!"!#PB&V
baG-&$d*NYS3&bj)Id$d1)!4`CDcF"F[54@j&*q!9XU8a@*DdFL[k!3"J"V*P0&L
@$T-$Q%)9Q5Zj3EmNL3#J!r5*MhN1PL8RS(XGS!C+J'`T$kDPTq`!Ldm-C-Yqd#m
GCJH`HebJ2L)!K[N24UB(D"$VNMa1J(l*%&G*Rf!#pG%$6-[mk!'FRaDSMbQJAqT
*$f!*&q9aG)&Hd93k#+dB*XRM$jL@#)$ZI3#Ji!(USa,JPM,c!r`*C"N!UJ$Cl*%
I!&4#JIS)"[UP`I`!BBm-e-Fed#p4)`KSJR#620U"IKNI33#S$*[N-4!-5bMi,Y9
#kZ51!B!4,%Yc#3"#3)DNR*GJ@VE+hJNLB5IZ&!AN%Kc3[4#!*,e!I@`&$(--1%`
4-"U#*1l%"Ieb$pipQh%hbH-`k*IQ8!63!J"!"1UM-qLAAI,Z58MMH4bc!EHmPr"
X+pC(FX!Y"HF)%)'8maf3!-d,13))`S!NMrU!E$V&e-JR)kE3+!$pdNN@!+5S$V2
#f[5+R*!!P(("AE%fGq#F*!%F)%3f8!%J,$XJ)D"l*X!4&NHK)5`KAh`X!(K2-JU
!&m!Y55%*i!3"S$BU43&3"iDPT``!mP)GTX4"-#e*31+6!-`!!%L$"KS!9!"(S!d
"S!RZK1V(%HiJ!*J!RS!M-,S-3!QB3ULN!ddd)B`!G$L05!"8Q%BQJ0&Y$aN!*B@
!2A!'qQ8!!!:
---

bytebug@dhw68k.cts.com (Roger L. Long) (10/22/89)

[10/89 Macintosh Technical Notes - 221 NuBus Interrupt Latency]

Revised by:	Cameron Birse				    October 1989
Written by:	Cameron Birse, Mark Baumwell, Rich Collyer December 1988

This Technical Note discusses NuBus interrupt latency, and why, contrary
to popular belief, the Macintosh is not a real-time machine.

Changes since December  1988:   Changed  sample  code  to  defer  cursor
rendering to a deferred task rather than a `pseudo-VBL' task.

---
(This file must be converted with BinHex 4.0)

:#941-M)a,R0TG!"6593K8dP8)3#3"#"Z!*!%K+e6593K!!%!!#"ZFNaKG3%!N!J
#(P41,M)b-5j1G8*eFb"*ER4PFR*eF(3J6'&dC@jMH3!!2XlX!!%!4$I#!%&Hh!"
%S@i$EJ%-!#3!!3#3!d3hh&G28N40380"!3#JjYa[S99#l`#3"M2f!*!'(qJ!!1'
+!*!'RMF!$!"S"#!!!!)!%[jEq)pI`B3cR!"!06'K$(B!B'9-'!-*!$3!"L3%i0(
M5!(D"+$i&qkI1!(j""JCF+3!LJ%1"B`X14)!5T82%j)CD6#!8D)R(M`d@%B*&3"
0`3%D-9)"J!`")28%!'4V6i0H`jiFqc8K#&"FcI)!3!%!KJ#lrXN$3%pZ!'(rZLP
NZ$#SA`"p!A3!"J"#`J#UI-S&B'*aAAPhmilNq`q!L*'Ab`*3i3F"Y)3Ra!cJX,M
ah-GhHeEQQe!!K`&&'aJ8#)""`VB"'L5NECYY3GN"%eVeA5#"($TcG!F(N!!JS38
!3H6pN!!ald@-HD!H1,Rh4FJp,!q5b+$`T)ki"dc%6(L@j`%+HT!!kYN""+CHN!!
*Emj!S2HN#EhpVp6a`aTab20*!J9!-`m-b`hA9P@h!8#%2PmN3%m3KpJcaacf`%'
2$8N!-JBNp"$aKad8!&)0%#[XCmda-Q!"#cfI*'&!$Jmd`FBF*5cb`"6dI+&FElf
e*3!$1V89!i8@6R*)*$RZf+-m`0464S$f421!&96@Xm4q3Gac4M!jMT%I"I"m"S!
%#4AT%j+q5H!Q%Nc58di)9+*K!!aSj2%"#`,B!X)pHqJ"`AFFHQJ0-[5m8)FpIl"
``(MPL3-)'4"FBSJp+Q3Jcc[+m4BK%LU8DZUTU+DUkUUXYZSUUVV4eK`!cj(kkUf
ijUTVV!R0qPaZ1SRUQ`V`I0,'&hCmi-)V#45V"Mdd%&+2%BqX)Fmc+,`"Ji(0IV+
$!eH-Yi!@N6`4DUr1r6BEZV65QN!EEpK44KXZX*&!!LM-!8F++l!3"J`[N!!"!kr
-TC[EEQe'Q"X#blRTeF%04jK!!0f!eDX!*Q#XFFBFEq`aa`#F)%8CGU3a4aPNJ#"
'(MSN-%3BEC3KaaYZJ#"%'R+FR-!6Bp$aKKJbJa"$$MMNd!!G%IXQ6Tdre)%%&3r
8NBiBLFVM#!A920&'"JRF3d@LLNLaCD0-#2"('aqNB(BE%"Ma`aNB0&#%2G#3!2&
&(6MH--m$-$a35cda!#12JTr!-!m!qh`a"3F08&&!$2*m)iBF!N"aJ6el[0##25H
!%)Ni[lJ!3$dhm!$"#RJF!%JP-4J!3YKM[e$ffAmH!%)YU3$5"64UJ#*&,%#%25P
jjJ&bca3RJ#+(kYIFX)LRS#*F@i3h*2#&%fAF!38GFYc,`K4C6-(#%%`8%B38pql
34KKVP!&#'#UcmFBBDi#3!%E0G+$KrKajc%(([#$3AaMJF+k#YFX#liVA[1TeVhm
&$!BXD%'qpN8`Ac(RAN3BJJZBN!#!J8R2JS#a"J"U-!"I!+!"63M#%C)`"#L`-!)
"U!`!@N#a!FaUKL3"!"X!S"9D!!!E!1"(!%!3!#)%!!d#1%!5-DE$!14#*#1Ki6J
#-)k2@E&M)*X!2Gj3"b%!VaiKL%B3H2!"(D4*HJ``#!AFG)4kF#m%-,$(#r)`$fC
p+%Y&J!%p6S#%2q@)$2DBN3QidiCla%%99**(I8k`M!F-33Z[b!1D2N%%$RbJ$IB
)!4$QmB%Fc1-41$KMdR$6J'!Pc$F3NjA"#QK"#J6!%963(`LD%)Bah-pRFd#$rHB
!!MHmJ3l[!i%FbK!'0V5!$QQ)'3M@0`Bdh+m-,J!"#',T2PVDdJfie#8ChP!'A[S
5Q(1S!acJm)EMJ)!)+BcQ028hc2HeFheZb!-)l"!'1D3K$'*J3cIYKcpC@[1@EmJ
P#2)A"Q#ZVhhf!fBbbEQK0166I6i$!4R+m$mjY1&q*N2Q')V*"RQD)3eRU%-lZ3M
--Z#KPR6S+!MZS,pqhZm-[+bRqml`KTF1p!d"(#!FbZ!'G4+KQh")`rm'UVq6JF!
-+*d$#iJU-rI*P+J"G4p,FGU'1[J2"(#`ULlcjckHbNYq1e@R%FV*9+1D5D4K1%-
CZ"K6-XJ,Qb+9Q9*AkMiic+aN%fAU8Gr!"[RG`DEh-d-jeiG-Q[&6VfKi`dk*@Y#
%JN"IC8!C,r2!46Q!3!f9G8-CmZ!#hAMJP'f*3"TpXmB)q@#dE3Q#Qe)*fJ$m)3K
M-*-Fb'$6L-iVU2EF+"Y!3,)d6030BjKT3GQ*-TA*-`MMe#G[hA#'CmVXT8ZP3ak
#UPX31+',9VhT,'X*8)&b,`aZQ!0+df"BC-D-PdMYkf'j#J)F`!!'[34[9-hNKT4
&0!E,6--BCRBbqUC-$Z"9UcU$`)EmFI%-@jAPGB@3!&h)f[+M'beXcFKj5ej'&+R
q#eSYJlZKELk9XR9iE',V`)D8dAF1[JdD9ieUhRd1XjJCeHpMlaGFTVE6C1pM`ah
#d,r([N'C#T5$!-QJcLRN!EKSQ*NEdU#(fLSBZc'YlhD[Q8d3M%&qp*ZVB#eV8TM
"3Cp,h@M0c(49q#diZf2)`j@K@F$9Y[Nf!D$"%c3ld$)dFmPaU!0%dG"B-3H`$'b
!!`J8DeiQZqr-&JC`H-dJeehDV`eIRKG2NFPFP@8AbfYiU6UTD@PHqKPS)-"dFEF
Fc$QX6ldR!qBEc$"34BZhCq30,`K3F!Ih$G0-EBLCP1'h2M`NX`jY'$5V"5[59S0
h$Sc1@3ULfe)3e-%0SNiCU9mX"c%)&F!59QF5DPE1L9SfSKap`af1'JDFDAC$5a@
USaGD6MU!&jJ4aE4HaC!!A9+(JCHjE(F`@r`qAM)8a3rYl#KrJdBi*i,!ZlAVr,S
j"l,H8QCb%#GbhLIP1FK2SGL%Z-4jZ6jjJPTr*4EfX-P+6hZbpAh`H[E%9ch3C,T
[C4*0JaQ52@QXeR2PV'B[rc,FKU8f(!3JAUC9JDPCH9RfV0JFG-hZjlphml1L%BF
$-)HT,jUGE0-i"EQJ*eV-P3Se`Gedhd6C`11j"MhI*$Dae90X@4"EPJ`&K4qfR5T
P'V1K$RReXR,T2I2R9YU`EVGb2D90eX$$hGfEPU9JqbTZQcj9$8-2*U2(cA,f`P1
H1rpIX%YqciIbNUAke@8BqYkcTfYFkU%Z+%r6V)-hSp,eEIP"$AZ5J#8U%BYAr&J
!2&#+""J"V(#3!#GYje#r$60mRh33+EGRERSj4(hLT*B'LXq`C!LrHaUcIR(+,YT
ANpQCCQ5B3`T3cN9XmV,b,KHV`m2VEZ#@`HFr&V[*LKrEir-5"@P`!65AQXrje8r
liLGi060mq+4F$qGm'lGAPR9[3YG-r5Bd0C!!AphAAq!h"pS@AM*$D@F362N%A[9
M"X!RI2-h8-ThIXahJ-q(AQ3P6YSP!a()I@cJIIjPJ36M*Nc3Hf0P83@PJC)AJM&
(I#3S"l+fDUb'JJP)DL`B862`AK)BJa4BAc3iF%I3Hd``2m9%"F9%Iaaf-Ti'AMp
BJ1jMK&+RJTD9K$JP!c,3K$*BJ3)hF2[3Hd'`)F"Q8i%RKX$%Cr@P6jD&Bc49@cL
eBdN(E[@h)8"A@B)h@im@-l5PHKh&E%hPD-AdFqa96pEfA4+QJ-YdEa@95fNJD*8
R5r3f9k$RJ'F9FU"f2mjQ9)h&ALff91#9-UM)ARG36PHe85Hc92,'AU'i91e6"N&
9D8&R"M-6E-EA8-"SL"Xe@fdS,+id#A#)DKIAI#QBEX"eGl49D4Eh5b"J"8,!"0+
iF8Z9@#&(K)2'9CD9M4J(G4ZAH$J@-mG'FEr%6SG)"YA!5hBS6#6e6,2'G1l@9m9
9-[#M10Y'"p[@G(deIQ3&2qLiMGhiMDJh-h9!DHk$Iqc(8Ipi6b#J1"GR"3ACMf`
`IK%RDa'&Dj&fLAq92`k*FhUeN!$kp&88Pc*!ieGIq&"%*NhFk)hZ4R`Faf-Uici
X9h*jB&2ka&cjih-djP6*T9m&&@YcaB#eTPi-5!EfC(4cj@H[+&&[3)d'Z9Xh19$
hYJC4#!#I06fq)3Qpm4bHi#E2F*B!`!eZ!JMdX!0MB!pa!!L(B$SA%Jcf)$N8m!$
Am3Nim%Nk3"Gb5CH3!,!ThK!+$*!!"4"3!JR3!@[N0B8!"%'3!!-8N!!S*@!!MdN
"33!**P!Y"#!'`,-#Bf!!$b!0k2!"G9!*N@-&C0-2-2#CeK)p4+*'!-!"ER))AS)
($d!&($!,I+!'fL%&QF))ha%)F2N1GG!SGI!)UM!mPD)!kX%H9$)LK()2Rm!#$$!
&*%!'p`!**H!!AR!2@N!'$b!''K!(h`!SX4!P2,))UK1"B"!%DL!2dR!f%'!2eV!
-Fk!XSX3QC0N@ES"D!"!(EZ)"aI)Hm6%IpA%IqE%IrI%Ip"!J!e)JRe"!%Q#E(M!
#D"J$,B0S)$#3!+F(6%bJHX#9"`56SEk4![5JR-`*#(KJ!$)4#IVj"'Z3!#$fF3q
'!*H6)!MPN58b!!J$&`8eC$%6``LfPd4LXD36d`e3G$&+G(ZjKhXJ3d02e"-E3%9
D@N981U8cj%42#J"C1N9N1U9A4($,!8)18c"83$%"S"-(!!"aZJ8"N!!1-)3@JS!
@M"!+!'!*!9%!*`%$I+S*!)!!rd!2)k%"#B%@Q'!39K'RFeUR)N%"ZJ%$+!!!0K!
!XK!!m)!@QB!@Pk#RI1UR"J#SV5'S!%#S$%-E!"!&L`S!Q+!E'(#T(!!!$U!!ri4
0!B8'$H#TJeUSrq!1)q'U!-#S+S!"[@PRD,"NeH8%[p40RJUUSrURJIUVKZS3#E&
$a3UVZL%"+a!2(l!"2r99LK8d9+#Xc0Te8b"1j(3Fd3S!Pa#R1L%!)!!!2P!`2K!
!fB!@MF#[D$%)P9%#2d-&,j!!!%,`#0f5X20J#iM%QhHJ!D#`!Q)3!$R`#-NJ5UT
%+aq$TKRl(-94"%j!"+bd5JAhHZX5S"c,,VmbXV5b3Lhd3M(NTeBDTQ0+4@EDT5E
!(,-h%K06TMMVTEP4'Fci'kD%XM1,T9YkXfHD!+BL68l,XXp4!8hVY1G8"XN'!N-
J8JdR"e!,!%B`Y8iE5cLQF'F!B-%f8FPQBE)d"PUlJR"`H%l@@,kNJhdP6h`f6Mb
9('QD,N3!YY*%"L*P8`[CP5d@690`P(V&YMRMYR"EDAlQEJKeEaA%YhiEDM5cJ3b
B!qp9#e0JCkiSCH)BIL*AM[+iN!"f1&IUCM+6fbj*8,Pi5!Eb&&'J"SEDKEBU*N[
Le,JE#'l,9%lZBdXP%i0k8&b&fl9(8,PLkfmc8lB`)dbq5(BFTPGcHfUA033j)`G
B#)3R+AVi'*(k5&"dd,9!8,Rmb&&UDf[%Y&YUB,ecJ,eIfEd5qB$`Bl[14laI+A!
Gbab9fl8B8,N-PJBKKf[`&(kYYlIY3J#QXVV2m3+9Hfr"pP2*aVjbi!,`d`,b8l8
4I,d8A#pACF&GL`+9'i0Z8$m3,$-5[-%ie3)i9F*b)-%+I"!*E-$2dD4K@RY4UV4
8UV2m!"Xm'`$QX+4!6(Y&fX2#X$&","C"1h#(dE84F#p12!98)!9*i!4(N!!!36!
&56!&AIX!6R`[8#$&6N!&1f-%4Y#e&p$&#6$&j&-&4&!%)(!#9!"JF'#"BA!#r)[
'DX`%E1c'*f"NFe!%H8E"GLc$YSV'Acc&B[`%6[$#V'9!ch'mZT)V)&!%f#3(mK6
*Z0+eM@a"#d$*h*-(#C!!3P1Xb9ZF!*-6"Li`"rILbCBX!k6m3HN#bCMF+V18"a#
F[I8cbkhbbS5X!,JX"'A3A'l``VKUbeD,bicFY5#!34V%36#3!!!l%!G-F$reJ`+
[Udm`+8p2-!8Tm-)YN`!Cj!*Ad%(3(!G8-&d6@3Cj"J)hX&3I*@AjJf2dG(GK@$0
0!!9A!!*"X'eAKRIGe-f%,!2-,-lN[!0N3!HrPeEh4h8b)bpNX&6Ej!BRB&!-jh8
SH3,c!Y$jf`-$lFc3I0""3!C51@X8PR(IKP-S93GG"j(a+lYe*60ETSJ!6FK$d0%
&IG"38%r"PLe5&fYG"`Ie"$-8*62-KQ0G"QR+Y8hG*0(!C&9K5!FcREp"B022E0"
d-$)R)`F12@YSCiVZ-l`cXe6Kl)h`"ERlP)`qQA0m"Y@mR,rEf6m5M-b%R!#XR!F
#R3"GD`*emL)a-L0QB!rA%%N2J!4Nm!PhJ#PJ*%CN0#5Jp5C*XK8J-!$SN!#b!IS
2ILV,ZT`UYEbqei[,)*!!fDV5eLTE'df3!!HFhEjblGE@)`5BeJ3+T-"GQ`-*S%p
KF#qPIFYIk5r2R$iP$@miCBMd1dcfpEk!*QRBe,8lN!"!mX*!#H$(FChE)#h5FS!
#rj)#d*aUcLCS[DeL1-A5cp5e,U$Fd(3(pc)#"ad&jla6,($3k9d'e!d$eRhG&!8
#H9B'HMC3k2c#)Q!p4%!&(FP4D,`$jDYHV2L9,ia!m,,Fj*d!)i$,KcZmkqe"qGX
6C4!%q%!9&d!1PM%5#)$,P%`'b3c,lB,CS+hCGCf'*4lD)Vkb+`i!dr59$ei'G"d
&9A![(PjI,I$,`A`r,b`"D!c00Y2DVbh$&P66#3j0pX,J$QjS%Ciq5ckm)0!$'!a
apJZ%aDeVG,"8-r0M#YLe"4[J`E6GPS8#%991)(8rAAIDlNYmbrD5A9X"2li$KUM
QFNh)+L$Hc2d[,%$RAjNqfMARcdem#Na-"%6)XLd'QTA+pa)%BY"Z6V`$[S52A,k
+XV4YEK#1a%4ihbC,m+4@A0[L!RhNH3j"BA$Ad%a6`!3r028'+52Q["KCJJBrCK*
m,d`$H*lNHKi'-I$Sra,P2LC5`H@+q#AP%q8rD(k*@rE#Km%!YK%!c&i3cqi9qHX
$Xde-YQh,4@!%Z+cEk62VX5Y,1EN'5d94Ba"0!,@5rD0jIcC!bMi5C8!%6%!9'#!
3Q8'@8%&JpDVA(b%+"Q%EYP(Ke&#[!H!4$-$[di-"8!%%@,!#"6%84Q$`cc(9Y(d
[jed%E"$Me#d$brB[d(cNJfC2`TcQJ9irB[jd[be5A8[K3X!-'+lKQE(YlfhG1i"
90@A5!F4AhYDe06ha#9$a&fpS+d!$'Era96e-AeC,lX2R3&Mbfa[Q09p4AIX%Ac$
e9&re9Rre@*re@VreA0re$5!3c,KEi,YFiCF-$5#dSlh*kE)$GH)N8+)MlpNP9r)
S@X)P9I)Pp4!'3K#F$b!&%Q!%C0)%CR)'D2)C!1SQ4r,BFR)Erq1+8GC[[J8!8Yr
eP&rjPRrj@2reSi3!X0$b'ekbVL3'frCB`,BqP[aKA#5!hb44[XK6+@0B,fC-r,C
6FK$6i&9M,-96aVCS%'G6K`Fr3%-(YDEl)(U9l*@VfD4Y#Q@2N!$@ENiA83U(9rY
6"c1RAfP3FhbAE$C9AQXlH0S9EZ0'DZc&HEGIcbQCH[pcSMieP8'M@cXLJ$fCLX5
,8a0984G&Cj1BFNR(FVrr2[3%`,6,THdqC%2P(YT,'S"T#rk"Q[@49``,r+"pj)@
fM!'9F@p-"[jUE)fX5!5!&$!bBNBE!"SR,5[0'2HM9bB0cYJIk3k!i*LI)d##Pcb
a3be!+U@"Yj*ZPYmmN4Rbj0N)SqZAKca+3SSR0!1Ld$q63EY1e`%dDi2'k1J9CZ*
-k!bTN4q9"J+b1K28FQ+'6kPj'qMR&"0i8@Cd60PaAZ'N`0LMQU'3!1l1'@JZ!X@
Tl5'6KP5#RBq*'I'XdS`LAB*MV)T+UeZp4"XpTGebDmV!$#`Z-)HpU-&Pe&V%3,'
J!V'J!@L"8R!2lX$E@%`3)"5JJ!H3!!IZaQB5!,'!!8JQ)(!2[)!P1!&[J`$FM4-
3!ml6Gl)&BZ*Yf)lb`#Fd%f6U6,**(S#$hR3,!-%bQ%Yai!'d!3Z!!`)&#'J4E-"
4U!&05!8Q8f@k6"d#$cJ!V+%e-X!$Z!0b!"E-J4"!"$SK#JJ!0S"6H!TJ3#Mi!#a
3!i`3$f$#!X!-[-BBJ3"GS!#X!!S!RFc$)a!Gp%!5))"D3*iJ35BC!&)J!rM#G3J
"BK3#1!@B3`9m*c'4)93!"0!'I-!Ha))Mm$B54)Yi"Nk$#KJ!qK!%(N%G%!8*!P&
d#06K'QE"(iJ$pb!+I!VBNkVN`a$J%(r!M(`#4,J-XdBE'!2"S!(mJ62J06!!!j!
!!aRJ!-!!e$'F)!#QX!FQ)""!JLP!$)1!$("228)ACJ%0m!Kf!#Em6TJL!N%+[$-
'3S!qK!*"3$r0!8b)!(i-"%J1pd!+H)hmY*rQ!!BBLDH%3#%!0q%&-*pEI)Y`m5d
5$!Ha&CaGEbJ)%f!#i%@pD"H*`V2VLhfa06!!3I!Q##0JI(C(SK"!1pZ3!"JAijX
J")la5%$'`2JB(@0I2"+$!!!8!!E3!!6"B'5-$#!c,M[3Q"NTBf1NM!&J!5b!JU!
D@H0U6)f[X6A#4YG)'fHMEC50Z$%fkXEDQ"YjifkmMEqa0`*(hdJFKk0a&)l)-6J
Uaq+B(*RMFMb1cl%j3NIR5"fRSh@8MUea0$T'l5JC)b-$Q)ar-6`fZfKR'FAMGLb
2Gr')UFIeb"lEShYmMr!a2XV(q8JIkq0m,!0#!!b%J*!!`!SqhcrSM`QK`L%#-,!
Qc%%!'!l6ibRJ4aL`(`H!)kJ0Sm"L%-J+K`hf)`-`!TDK$1J%[6JKK`!!S!S43"m
!!"43#MBN!*J$8'%)-!#'&`'N`BJXNG2$%+4)"%!9"J"DB!!4FL4)!UJJ"#lFQQ!
#Rfpkl%Mmb2*#JM-!!$)J4pS'6m!MB3($+`#B!!!`!58*!"*$'3!#T)!U")#eJ#-
YKLe)H-aJ2dS!0f!CaS""3(KIXJ`-!86!)Vd!!+!$Sb!K),`MqHi!!-2E$`"!$F6
*kI($+K`kU&FK3#0S!5Sj&r!M!DL4K,&,!S#ei!p5*#LJ#JC!!33!@,!RdmKJZT+
BJ#SF!&d!)3d#$`J!'2,GJ3&0D3`#J#*3NJ'!-+T*F%!9%J!8k*3!!!Dm%UK3"0"
!Uq3#!F!(S%S6SLC*!&93!)4+8FT+C3!9EX#("!!+`"3%!%U!+N9N'5J#()!U-)$
"T#KpJN$!MkL!+NJ!V9$[B)!!Z*C#J"9)5c33!&#!NK3!0J!UD$ZUd!#dJK8iPd+
!4i)!G[R$T%#1*!%#3#*81&T!&4`!$JJ!"L"(qJ!")!G5*$@J#JmJApN#(SB[08+
&S`F-$b&8b4bC%%K!!(L@m'!r&J!X8#El(3#`Q-pbAQT'$DFS58#X[*K#!"F`2"-
!'He!T33!E8T08S%DLI!B`"13!*!!+*-)D%YCB"Pbj&S!!aFc#)!"KPF#r*3lS*+
F!'9LJhT&!EJNaC`)&h-)J!#0Q5j&3!J`#+X4&9a-)"$[I))a!!"5)!GJ63!`#k)
Q"U!+&!"483#a#3"@SbqiQ$3!'P#&#X!`3!$EA)h*)'L5JlPjUD$!h33!e'"V(XX
+J!F!J"2iQpm!CF+"ZINe$qIB9!FAm`B`!+TJ!GS#&ILEp3"P8J$+#4,#*YBX#[J
4$e"16UN%lQCU$*Sc%`"F!)5`0MqR"GLDE!$$)6`4B$U[CS@,PUTc-$N!dmN#YLB
Z`(!H33HBcKY`-BX!'F"`K&%'Q%iK%$3lRqVd)E[cFcD"S2NSI3,5m*aY-`"JJBY
T"!K![F)!kC)"Q%icL4m$RPZ)Pac!G,U"V3N0[UHEe!#Q-`p`6`E`23XRlIbFK1"
L%J%Xm$d*eIh-RSp!Iq+!lmN,h),Te!4"%jLi"@T3'daR+8#C31"lJJ1`D6TKJIl
%!28U!mL!"[SjGd(aK!!Cp&jC!00C+Y8N2-LJ6d&mIXjSX$8j3!BPN!$`mh0b!j3
*#M+S(Z#JfI-FS%`%N!""C56fA!!"!$+S5AU3!%'"L!V0R[dJD$+#$+VK@QIE&!!
)!'AZPUZ!$pM#h43!%b"UiS&kT3(mh4Ae!&Y6d!!!$B$`9-!963&4dhZ1dAK*"+i
S$H#HBP3$b%JHF%9PMjS%"Pa8'*!!K#ZU"23R&DKA'm!U1-iR@J@L*LF!T"b6#9a
4S2RZ5!!J*38iG!%)J$@`0D%!)08))a4V#J!lX$ArU'Dd$Dhc(b`$!4!)8#Epe)c
e+T1fcGDJ*QP![4S!9L#52P%e536U&3Ii,$p8Bq((TA+Ei)!X$3%#!$m5dG[%"fM
&h`38&3i5e#X#J"(XjYLm!F&d#%63fm3cfqMB&!,"e!KBdYYN$lc@hf`#dC3Ce+X
1X"D+aYM%!Y%8"Ba6T-%#rZBBL+B8i*@+!4Ih0pe!-"8#b%$J238)m$Ic3$!0!S4
JR"Uq[dN)XZN!C3XTp'mqJQ"D",M!1"9@Z9364&2qb4EUe4&GM5AbhDP6X33NcHM
BK!A4e)@Z#3Ck83(!,VLRKe4-I8dRZKU036!&!X5JARN!2c9)9f-dL+Cr8LaT11%
j0VR"5`fS!1!$I"CRZNV2`6f0U3FK-3L"[bN2lLNLU&FI`!p)L,rC$qiT0i#UHT5
1INi%%%b*!!J0USh5"jM1#I"2!B&-Y31hbA4kJ(Zk4&dFad3#TP0YU%PP+KM3!P%
&SM6JRJ*9$V!M95N3r3%[eD&U4SG`831!%[LRI+"HJ3"a)#90Ca@)TXMJ8Jd!NkN
m2bFBH+Q8!&$1djSD!0E!288#829Hd3$6D3IqU@!Y!2!JNJD!3("2Ca8!Q!#TeD0
Q6b6e,0N"db53!)Ae%[c6%mS@@%"KB*X&344%8eL`(bN!@K8"CV)f"!$KqLc2*PX
JH+M5&Ec8SHN6D!"AS*J"3"IF8`K3A+-NFZehf6@BdJ"NJ$DrTV!-!#le5R)$UL!
#)#FE3*Afi*pQbYYN')5P!,L[cj*'IXb*4321T3ciTj4!hPdU4BNN"QD&mj9XJ9-
5@!&`@2%M#AL50e3$M!+GJ#5X3&FpT5*!UJj+X#!!a-!ra3A&e89qepV3BHmT1f"
i!3"4!B&++3$XDB8M!`a2"2K@)X"LpF!pj3!-E`0S!`$J!PLX)ELR8!$&mN`KX#G
pJL6iTkKJ2ei!26TLNF54VA!L-`!`L!AV#IiT0'"i%Z!bU!$XUJ*'!Qd)!!"b13`
!3L8p#J!P'!N5d`!`M0D3!"!N`!59(K4!@b&,1@PGfHaYUP9fPJ03"1'3!"!k!'-
p*4kJ+`$D(CN3*1B(+*LR"!5mbS5`CN(!Qr8*#5%%L)k%8'G&!),-$#)!L,6CLKP
,6mN-L+q6c33!CVF!!!:
---