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!>!!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$$&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!!!: ---