Path: utzoo!utgpu!news-server.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!snorkelwacker!bloom-beacon!eru!luth!sunic!mcsun!hp4nl!ruuinf!piet From: piet@cs.ruu.nl (Piet van Oostrum) Newsgroups: comp.sys.atari.st.tech Subject: atari st 3 MB memory Message-ID: <3652@ruuinf.cs.ruu.nl> Date: 27 Jul 90 11:43:05 GMT Sender: news@ruuinf.cs.ruu.nl Reply-To: piet@cs.ruu.nl (Piet van Oostrum) Organization: Dept of Computer Science, Utrecht University, The Netherlands Lines: 563 Please note that I am not the author of the following article. The author had some problems posting, so I did it for him. Replies should be made to: jeroen@phil.ruu.nl (Jeroen Scheerder) Due to manifold requests (since my original posting was badly formatted - I usually post things from xrn, which apparently has a weird editor) this articlei is reposted in an edited version. My ST *DEFINITIVELY* has 3.0 Mb. I agree, not long ago I thought this impossible too; however, in the magazine "ST Computer" 3/1990 (a German magazine), the author K. D. Litteck describes how it is done in an article called "Aus zweieinhalb mach drei" (an error correction appeared in ST Computer 4/1990). This magazine is published in Germany by Heim Fachverlag. It is in German, and my German is not too good, but I'll try to describe the article accurately. How does it work? Well after determining memory configuration (see below) TOS starts clearing the amount of memory it thinks is available. Say you've got 3.0 Mb available (like I do); TOS at first thinks 2 banks of 2 Mb are available and sets out to clear 4 Mbytes. It then runs into nonexistent memory when it reaches the end of the three available megabytes. An exception of type buserror occurs, and TOS determines at which adress the error occurred. This adress is then written in the TOS variable 'phystop', thus setting the correct memory size. Now TOS boots on ... This works in all TOS versions known to mankind. This is part 2 of an article about ST memory upgrading (technical part). Before getting into the gruesome details, first some general ST memory theory: ST is equipped with Dynamic RAM, and for every memory location a single transistor is used. This allows for high speed and compact chips. However, the chips need to be refreshed about every 2 millisecs, of which the MMU (among other things) takes care. The DRAMS are accessed bitwise; therefore, the ST adressing in 16 bits, only banks of 16 chips can be used. Now the adressing signal is multiplexed (at one adress line two adresses are located, that are consecutively transferred). In DRAM these adresses are then separated. This keeps the number of pins as small as possible. The multiplexing and sending control signals is catered for by the MMU too. Now the multiplexing is the reason the DRAMS can only be increased in 4-folds; only 16 kBit, 64 kBit, 256 kBit, 1 MBit and 4 MBit chips currently exist. Two control lines (called RAS and CAS) are of interest (both low-active). RAS transfers the low adress of the multiplexed adress line, CAS the high adress. They work too as chip-selectors. The signal WE selects READ or WRITE mode. Furthermore, the ST divides CAS into CASL and CASH. CASL connects to the chips on adress lines 0..7 and CASH to 8..15, so that memory can be byte-accessed too. On WORD-read or write both CASL and CASH are active. The ST's MMU can manage two banks of memory. For bank 0 the control lines RAS0, CAS0L and CAS0H are used, bank 1 uses RAS1, CAS1L and CAS1H. These banks can be equipped with 64, 256 or 1024 kBit chips. On coldstart TOS writes patterns in memory and reads them back (all at well-chosen locations) to determine the memory configuration, and stores in the system variable memconf (adress $424) and the MMU's configuration register ($FF8001) a configuration byte: Bank 0: Bank 1: Value: Total memory: 512 k - $04 0.5 M 512 k 512 k $05 1.0 M 2.0 M - $08 2.0 M 2.0 M 512 k $09 2.5 M 512 k 2.0 M $06 2.5 M 2.0 M 2.0 M $0A 4.0 M (I hope this is right - anyway, it's in all good ST literature) On top of all this, MMU also manages to make memory contiguous: allthough the adress space of each bank is 2.0 Mb, in case your bank 0 is 512 k and 1 is 2.0 M the MMU concatenates the total adressing space to a contiguous one (as TOS expects). Now, that's all very well: now we want to fool the MMU to handle up to 5 (!) memory banks. A scan of the electronics schematic in MacPaint format (you need it!) is posted too (binhexed and stuffed with Stuffit). This schematic is corrected for the error in the original printing. We need adress line A9 (not used on 256 kBit chips). It is multiplexed and contains the real adresses A18 and A19. Both NAND-gates serve as OR-gate and should release the D-Latch 1 and 2 when CAS1L or CAS1H become active. An IC 74LS375 demultiplexes and gets out of A9 the adresses A18 and A19. With the D-Latch 3 A18 is obtained, with D-Latch 1 A19. A18 is also led over D-latch 2, being kept until CAS goes high. The IC 74LS139 (2-bit binary decoder) produces with A18, A19, CAS1L and CAS1H eight new CAS signals, of which we only need four. These four signals are fed to the memory banks (all formerly 0). Now, some things to pay attention to: - the 2.0 Mb should be bank 0; - the RAS0-line must be interrupted; - the assignment of RAS- and CAS-lines MUST be corresponding. MMU pin configuration: 6: CAS0H 7: CAS0L 8: RAS0 18: RAS1 21: CAS1L 22: CAS1H 64: A9 Components: - 1 IC 74LS00 - 1 IC 74LS375 - 1 IC 74LS139 - 4 68 Ohm resistors - 1 Block condensator - 1 microFahrad wire or copper litze I hope this is clear enough to you all (once you've seen the picture accompanying this, I hope). Wish y'all good luck, Jeroen. -------- memory.hqx ---- (This file must be converted with BinHex 4.0) :#NePE@pbH5jcDA3!8dP8)90*9#%!!!!!+$8!!!!!#DG6593K!!%!!#JeFNaKG3% !!!!!!!!!!J)'6@9YEh*jm2$`!$K''%##`BC!JX'3!%##`D!2$`!$$`m2$`m2$`m !1%BZ!$9Y3!!iVpS$fJ%!!"F!!3!!!$K'5&"19%G68%j8!3#LdJ%$SY63(!!!!I8 !!%Lp!!!"HJ!!*M8,aZ3J!!!!!!!!hCS!!!3)+0!63B-"V`3-X!9"Nc"bdS4aikD -R)%%$3388!J8'(NQ4$%EaFj!Nc*YhXM*%d-!35K1U"aT!T-+4S&!#!+JS""!cCN eE`E)#8$'#je)NBU5&Q"!3#1q&YCV9d-8Y'XaG!Ei&k#3!)!j!a)&B,!3J-Yrq2l "5mUf,GX&""N@D*+Qc*Sb0`%m#"J"NUKMND#)SXE,!G*S!Q)%D$5J@&iJCp1ZG8X CJ!F!+!!3#%!Y`$-!#!,X!C!!!%!d!1!%A-!-B(6FF!6aP$2eJiIC&a45(4&baNN V!-)JI$J6N!#DR`"J1-!i-!9)N!"fjR!%ibI!5a"d!Ta)J"(`$)%G4mJ4NR)%6J* B4pKikp&'I$pFam%%a,5mqI2SdkYIclkpZiMkcN%R(A9H$1(12li8J8i!h!3K6d" `l#93A!J"8+&#)2$!6J(L%-3"!%B)")884B3BN!!%)aBa"%'A!F)@#,0J!8!JT"% N!J!`NS)!%@q-!B8FCCJaa`%mqJMN'!!##Ka)X+$"J`J6+Pc)X+($Ka!M5Ta)XD, &LaJcDYc)XD2(KlN!K"`TXL6*N`$X!4MJ!!%F4-K5VSb!)"&-Q3-J8!"d8f91#Lp MqS6J!d(2Q5)3(@8T!XkMQ2)#-NKQXL5qJ!rir3Z`"BBb!&F*)!MiipHpI`$!53- E%-%mX[h3`V['&J##Gf6aS38'VLk#G!!)$2N9PkrIFJ'"p,eU&c%!)1F#JYPh1(& N!$!S-dEJ',*8c@dlAcj!Q9pJ"$MDZS1,&Tqra1B#!M0Y@L`4e3!+J!KSi"qreir lBBd,`"qmJ$"S"kC`fqjU!##%!f!!()M`!Q-",2YR2#!'j35BiiBZRAVLe`%q3"! H3!#)H!%*J+I!SbhH!!5L"fj`r$&k!HX"d"iBm!8'RJm%f#FJ!rS4`1"j!K)3)!) #J",3"rlm!``%M-N(3'dLC(GAK!db!!5%!6J3)!%$l!B!KQMjdb&i)X#J)(iPpZ@ IJ!&!)4b,r8%!h!!cqR9IIMmb!!'+%IJBQ(X"#4N3NI'CYYQ4),a@`!%0,,QM!!j %i-&V"%!*J*3!#&$NC[S%j--p%EV`fJ))-+,ML3!i!-!%%3!R!("SUPPPQQ6YJaB kE3,JJdS!T)!H!UbmTJ!`@!%3334f*5)-Q8XHXe+4!J3%!Q8[fS-@*'d@J!)JEEf 5BA&a&4#2"`"JS-J)'4)!6`!)!$,!D`EJ!%%Fa$4J)+'BNBT!Q`,mF-)I@J%!L*D pYXA)DacJqB'PQ#*`D`(rr!12!,d1%#iq4N5J#!hZH4KUXQdPkJ0PF4R!$a+!*+M !Y3!SJ+HHPpSPK3KN`M#!Tlm#B!!3+3K#``HJZ#ZUX[*HGF!&r`$'!!!(Q1G[I*E 5LX$!"3Z`DX),0ra`[UDp1fUDB`&KQPdU&H"%B!Y+LQH#AL)J!X'"`@!b)(mU$!3 +FV"lV-Z8N3[!E'h4Xe+#GZN-FXmKE"Td!*i@[6!I#Y"JV-6304ecbf-4i"29#'L jmjR5&BfCRm!D8F5kJc,GleK$K&[#L@-aF&8"*e*Y(Z&Aa`dF$(3VM!-4F4c$+YN [1bh%D`MX0KB&2i6VMfN&J)&ceEQp(@#D`-&B(+J6`laMjRB"3)+,(i"HH&YD8ST cJ1hK8b$PCJ0!"1B[!$+@$bi1-,0eZ1HQ1mrX#3$)lbfhlM3"Vb833Zcj6BQ"G%# Jp`%bZ5FZS!$`8)pXjI9K$d!#)R#I[(l"09r!mh$Ej64Q!4dJBpkLdY+lfTHp%m3 11P0LhSi#F)#f1FpmCFS1i`)LU'-93&3"#8#dI[-q%"J2Jb["`k2#*b#MZ!f#!N! %F[a8T!XL8%#[%B!Iq'#H"+`+!4riKii'-$`"BF!*Md,%#AIh)`(!BB88E#%)!r# D"f!!Ck`b)!+@*,U9p$!!+)K#%#Ae[!0iL3"%Z&`!NcJS&lT)J`"S3),kSMNU6JN (k%%#&*U)J%H`Je,23`!NT%)%VA9[$%3$&Ka#%!i%@-##5a41!`*!$!$XXBd!!)- "9X+H2NbKL3TiK!kI"V)p"LD-C0S0)B$J08D)B!))5"[S%TP'!C!!!!!@HS&GU*J !5JSS!9S88!1j'*m!I"%&3mL3!!0f43!JQ1XH`!#%&(Me!d5q%)d0H1@*FQ!m(2J !$!Vi&(S5%!hdm)UA6rUP'2-6J(%%8Q(+C+BccfLD"YcQ4$!!"J,i!!)`*'J!h2# Q%k6M`%R&4d,aJF!i34!!#T!!%PL!L%)K9CQE*ED6%!"J"@E#a3mHf(-PM!!I2m& *J!Gi8N)$,HK"dBN2QKc53fE-S(!QJ"pIBLBB2q#(!,!*M!%mi"qXUKrT$&$6h3@ LFGdcCbN93C-bXK)#!b"(!&J!J"p8FkDB'X$'rU#2eJ!,'!F!4S)Lm&-+!LG,AP8 B(")4MJFBpCRY6*!!-!!JbbQ+!!`5U#NhK(-!22hL(eIjJD%+!!p"j&4ZB%f6%Y% DRqbeN30JB"#40!S!#BaP0eJ&aXCJi&F+fULTVrVI1M-B3`*fF*D4T#$pQ2H!acl Y!2Nkdb&d*`$Q#5!!h#R5!CE)X9Ga%(C6$'fDPLHFdL,39lXE*3@R0kJ&d$C"IRM &E6@A3ad*J,F!H-!#`!(C!33A6qK6Rh'IL622iVDj&)4Z!V+j'q"#lhb)d1ja!C! !'[IK0M(K6Ba`%V!!B*6AZZGY6hU,ZpiPZ9Gcm0fYI0qAZIX5mAa`81m,mAZQ`'! 1`)q*liiHd%!39(Gh&"5"(2V$!00X0hNBrZm"UrKF#*9@%5#`NANEV$!4+),$(JB KJrhli!0LGhPd6!3`9$cM$#X!aJ$im*3`l,pr)+![f5%aHrK!3TUSF%NVpT)!+$! "F89P1UDTjB*hebB$C1F2RK11"BS*!!lB4C23N!"@Mp0%J4(JpFS)b,+-ZG`@1&% !!5FD3Ep8D'!#Z"4Q3ZK2R0mhCjiP#J&`m[+*V,[,IK%Y-$QKi,+!V'83'lV1#S[ !SNZS*H!b`*GaSh5Kcr49i$J`!!'!QJ%d26S(&X$6S+DJS1@mCCi""`bQrJm)6'- !#!$1IV!q(IVD3ZXclUl8EC(1bfc'BPF(1p6%*R5Y56e'Zi#2-J9)3P1ET`"BAd! @,KUfABSpC&YA'`(#U9Cd``81C%bVHDJ0eFBS)!0F"m4hdDjdZDN0R9ac0MF-Z1N rh1h["F$$Z[0@JB[%8U""khXPacihQ3DJ)eIMkd*#r0!r$(!2K3HdiH5'q+AYNLM c!#!*r"51!Z30!!UBB1%3!,Qd,AfQ3jFF1%$8*EVlaA+A,r`pq4ie"'cH[!8D4H8 X[i!SILlcKmqBk+3c1L+3!$iG&K1J#2!!qVKR[ZqKHqI3e3RLI&RZ*3B3J35cjVV )Dak[ST1`Y)jia9qVrN8L%#(Y6UFcbGf158dkYqUA*3!+c)(h1@r-khZI6YKe,T` &X$c`+-!B21!FmUGrRHmmfRN#(KqI#&#Jm00'r,,FR[,hF6i`%#!(k%&mH$KATr4 P!VadG"Ad,4mq8D*rIE+I*2[iV(l)Ylpme2p!(&J8XIH"%EAYf9kV3jYQ!!@i+cc 'A[A13B-CbBp[hS2Ir+MaIQ-I)!irqU-mY51FqD+AQJ"#pCF-9TlZZ$qdqYQ2$YR -&i4NMlrhecqGqT2(r2!A*I+A*[,QIrUaIHJhJ2b(!28R!$N%$'LKCCGeISLAIJ4 S&`fi'd!3J9!()I!J`IaLB*LHbJG)QC4pSJ3[BJ+aLJPU'JYbRJZ`('!-3!)R "J5cfH2TR&b,BIJ2`,LlBJB35J`SiJbZa-Bq"Jc$)I"M3*J(`!2e3$aISJpN4K2` cK%bB+!p3$rm`!-!JEc4BK8VSJ6'i'RlfD&4iJp*f4&KBJHf`%QJBKQViF$SB*@m i!('i%Q)SE55@JRHBK`1`KeV@Kc(iKdBBL(-BB1b(ISCS&h+BK0+'AB#(HifBKT! !U'@51&Q8#)H(+)L+'$X`X)Pif)PU@"YeH#D9q)K@Q)QB)BU!k)N44LKM%BTfb)Q 1U)H*')Z,5)ZSD)Z@Z)SH1)ZiTa,%i4U"%3#[Q)Z5+)a4SK+TYJ-CBR!CK)C0Y3m 3F)H`Z)bYf)cfpci4N!!Jb,L)2b"qai')PrL*c(JQM!))mc8"5%L0p%0ljJL-XVL 0kYL0#I#0!J+2`L%!JJ%)86'21+L0[!J"M!)-mk@2dV+)qZ'2a!!%!CQ0`@L2%!! R!B!$#1Q0i-L2J9&-*r)(YR89!KQ*%eQ3!"C*"1bSNI[)N!!r8N`Y#"`%)*)5@Bm Q+5!SQC!!'mQ5(4N%%")B-UQ-*BPl&YN$ljBL8Z)!m"J316!"K#!%24Q6Z(L1ZJL +3LNJVrBDI1)Pi4Jl,P)%c(%%P%*#2KQ9p,L,94N!#B!,k"%"-0*Y$"N3"F!FC!) %!H!)BcQ5Q"L8!U)"J(!9!3!$T,#@ECQ8GN%+4M#A!S!TlT-!i$!%aa!"'Q"M!kQ A,e+-T#)+DaNJQmH988)+4j!!)4'J9CKb!1%5$KK!"#J3$3NbNl[)''U#&Z+!(K@ JQD'5!"rJ)L"JGkqKD3GJPk6j$r""#JJ3$6m!"+`*LUY4!++`E5T#IBlR)R``")5 `Qd"!!&%`1MBSR-3TQ54*NmP*#MJ$)-HA!%K5@*C5RGG*06Bi#XM`$DX*P0kC'lK `3#Y5Q`i3Mp3j!(DTRJ%!$kNCQFFjLmR*+YP4Rqm6!2J*)@U834P!!DRC&[$*N!! $@QC4-Ti4N!#J1q*Jla-1%r#B%#U9"$QKeT8r"@#I*m!$-!NF))N@r##5AP+@A$Q KHNDLLiJ#Q"NI`M%!h8"4,UU'HM+9XmJaJG"!Er&U&%UMA(QMq"%%m"&TN!$iS`3 C'''!!CM`&Y)L(3&5!!Pb8q'!SK%b$%hkSQJ"T41j'`3J"TMJ&J'4N[QMS3(`-f4 #!$`*!#[k)6hkT1M)2fHDTPCDP$p`1Zi6!#3!0!ibTf)T1#XKTRQ5TcCb!)*`#'T kTFJaHqMa!V`3TiB+NhGUJQ4+NlQ49BJJKH[(!Cb!(XeTRJRJ)MN3!3b3!+RaXDP MbUL"33KB%+TTBJ!LS+34%#!,fKjG13&bqT5`ZUK!LN!%3!C(J!#LZRkJX*B`-&r hC!!Z8J$IZ(KhUDKj@BmJF"cV4`#Qd%34d$Ri%`!+i#))%!VZ8d`$B'D,fCM#!*N X"U12aDhNSU[2qMlJ+!%Z!J'Km!#JU9AamjZQ533QS)rBQUIE5S!3S+39F+rN+5# h+5T"B"kDjM-i%kbNN!#BaDQS)dUA'9*L1%#[2P#U!Z)!$JZ1CX)(%dZG$m#Z'33 !'4ZZmBS@9%1A[m#&B,'1rh'[@RSq*q!qLRHH#,#FkJN!Sb!-(m!cDYLa613k)*! !+!G393!J$F$"T[IUTLJ`R9*"R81,RIdT!["kX)pKJ``T0ASa8jK"U3)#!SS!("3 ,"!IJXJ,5S'!VK#E)Y$(d@(M"-G%bIIf6)3%3$JVJYYDkQ"ckVRBlN!"N'k0V+Ke A@f3")!iBXV8"8DFYQUM+Z,L2p4a@Q`m#3J*p)KAP+,CdU6#-+kQBiEN"m!+4J"i -F!KKQVQQZlQ0LabHqhm#d!#)!*!!Q!ZL0MK*Y)ZkY"J!M`!+rFJ!ZaZ3!&i#JC& SJqm*!TcVZ%d6!)M3N!$)blY1ZSV1HlT@ki52B,h*fl[DLc2"flef!3J@!J"bF!, AUlbbqlc4LaaYJPVTU`JSJ!L`fl[-LiRE@lk1ff@)N!#qjFS)SbXELNZqd"'rpRJ )-43"%e[!6h2!m&ZlUFXa$d!'i"!#3R"6NkHr%XbpMZZjUP)'[NB)$!$"qjXBrC[ !ZF%UAT)C&[`2k%!&(2))L)$#(dbl4RTC-(`!1H3-9'#Z10bm#!bp,3`!80!kAJ3 !5-!%H))!3mbr46bK53`[5pc%13A&(Nc%%fbNR[3b5r`%@0F@8Dc#8bbI(f)p5k* !@ZbN+6bfCe`!i1NPPE2'r&6'6l1p6f6%bXPLG9`rD!N-6ATCEebk%``!SU"X6@2 (!P+Z6CT6KEc#4Sc)LT`QM%bZ)("P#42"A&`Vd(%I!8!+P3`JJ-bB9fCbNB`cHr` F1$$+Pj`j9cC"R+aP`+$(Rm`ME2V(c--V32!@U2CZXb`EYJ`#HiY'C30DH%)1Aj! !!)"JT3FJ(@pFbkTmb`)b-f#maJ*#!8+!!&G'!0#-Jp+F)(YFc0C-'8Z-*mb""'m Bc(NmcF6XIUf6!0J-!#,J#$F&$RXEcF0-cNSmcd)3#!L`c[VXc[amc1FF%)&!%qX -#1#mcr"Xd0JF!2(3%J,Gd!50bkkX8`&Y`0)@cTlmcM$d$`*!+EV-6`YYdH,-`J" !''J"$SX-!("JdQZ+dKmY$TC-Tm9Bd4fp[8X#!MCp*V%K,66Gdcm0!8(0d$Z0B6i G*8Fpe0"4e%fGe%Ule%!pde,GB&4Ye&CY9Zdme3)#$)G!#',JIeSYe0%P'cff'qk "#%``eNbpeF+Xe'N5!%K`TQ3Ge9`0#$b03+p9efjGe@E0e4lGdh0p")6J"hF0eef 0e@P#F86`ef@0e)+pefSY!LM`f)NGf((Ye3%J$#FJeTQ0e,5FeP"YeD1Ye+9YeZr BBjhc$j6J'*%0cUbY&`'!$b#`cM!3eE1ef""!'B,k"l30$mf-(,UpTMaYTHG`&Q# 4+,PYeEXGCIiAYA*4h'Uf1ieNeXmpBpH0e0PYhFkpTYVphGA0-pZ0&Ye0hZ)GCHA 0-H$YhGMGhSF(,!-!$a)`!-%3#)$J$1NpBpF"!6*!!#)J"%!!*`I`!-#!"!r`!Cr `#B#J)pcGhZHP'e*!!!3`1c8$"-J!!B(J50q`h`HQ'j*!i4DH'i'!""$`@K$3iHp GhBGh(8&3hm3`iJ8J##CZ!1Na[`F!$L4`!)(`!*,$ZHB0hb3U"")J1l0$i2L"i1d K,9d'!Q5!!%-!!)J!"%$1hLa1SS23*L4`j"c$+dJJ,B,!j%BMR+L'CeAHh5hH`K) !i!*1i!,`!28(#"!&#&d@"#5!!!%3L&5HhQ4h(B!`!H0`hi$JjN`-!C%J)A5Z-)+ `iaXqj@HqTQ6hKJB3+Nr`#!l38CjV!)6`5M`*PSpqj5RHj3FJ06`*"(ZqiTjf*Ke q!$Cijd(3+i$`kBpfH"eZi`"`!XF`T!G`dPBqkfHbhXp0GX!1kA3hl!YCl(a1Gkp 4JcC)"-[JiI'p%J0JA86!+#"!&kK1J@35!!A`!d3`"V(4@X!3!HS!lG6QCphqlHS h#!!J"#SK!-&J+H@1kQ5R*@J*!#K!#F$J%`-!8HiH'"XF$4J!$1b3!1c4lQF2m!Y C+c8%J!JI)!4Kd*F!r`!#6r!'2cHjJ@TRSZp5f2!2(r&K-36!S!!P!!-&6qq!Yqd f#!&M`2#2)$Z@!!3L+33[S!`KX!lQE[)VJ3MI3!+'!#F%)!3J3!!PIr)2IZ8khr$ !J!%a(aC"S&8$Er4"IZb69I!%F!Le%['h+`#AFI5q$J2'r[8rBZ!F8!c!d!`ARa` V!3aL8!`JJ2BS2eNrNKjJ8!XB%"N$J!-"B!jZJ20aRlE(q!&eM`&51!"`-!$-`!Y `-J"')!!@N!!'*pqd`GjlIJB!CQ$h(Fm)"-!#XL$cJ@%%qP!!D!!)kbcja#lh6r) "BY!)K"mBM8!2#K!,RNm!S#rkT2p[NirkXEIk)0$aVarlXpri06$kTImDZ3riXFF "K3!-(3m("+!'XKm@S%m"k($l-06VMeI`!r$k+4!,Lpri&*!!$T&[r+H2'GU[q5N J#iZ[pq6J"Z12rB#RrBH2$,cJ$EKIrM"3$2H2p2TrrFHIrrZ2'J&!riIrqTrTShU B`3#52`3i!%hI9TT&#K$q3F!!Z)XLi2qcJ-4Z!K,!BkF"$k!!a)!2-!&53&#%!6Q J##5!)E!"NVm8#!)ri2h6A#I3!G)N%$J$Af!04)%Zd2rT!$`d5Ck)#UaFq3!Yl!0 2FIhSP$T!#p$!'[`E1N81rX%fq$HKBJ$F!fq!&XJ"1IJhf33'fSJ-m!HSi)GiIl2 PGh%Pq"!!$-!Ab!BLE8UX`0N&(A!HUYN(fJ!YX$FB5081J$L3!)-fU'Nj$4#3!!d UecU3!)0KN!!0JJ"MF"VZ5T!!%i124@S`%&C!$@`Jm))18S0M9"9Yi!Lj8L3d$kM Q!qJ&!1#hB!XJm$mbm"'#J%YST5CA!2J$Mq!X")"q!!UX9#LdK&)K+K#(4!F!GJ! pf!VT3#`PM%!S#LmK0`J)%d![V-&H+"@Q39J*K-rV%Mk$15J)P5%c6)C5B4NL3eJ i(D5KJ#KLcR!D*X*Sq!bT)31`KT)X'ej$D&J0Zq%f,)I6F)q*`f'f$TXK0q5&hK! FDUYf5!c4i6L-KqB3%Vl$HhJ1[b'K@@%c!"iF!%EK$fX*)P3B$k!2U%*!8"$jB3D ""li0!HL9PVB@,NMrLJS'!!QP,q@a&Bc$,l5)j!XM)U&`)ab8'cZiJL"a0BP%%1) "hS)"D'ec!Kk8Zj4B+eEL#i%"jFKFr!-381iQbIE+&Lja*#)(h$B6lq%$U#S%i"Z -Jh$aEM)L#)%"ki`R3KcR"5F%J!m!!#E!81L+hH"&SQ+jXbl1kcJi44L`'ai!9"3 9Ah%FLXA$XaXB!$M`LP-aqa3!YQJA6Tj8")YbN5ib!,ZB&X-L`$N6)!$amF@i5([ Q)Q!m!(KJ-1*&fZ-J!+-"`(P3!JKS2lA)-GMLL"S!a!%B[!8S`3-QSepN!*-P-,+ +53)!`S9Q6"-f`J0iaZc6-3#MY!J-i'-cFXA95!$DK*MS+,dQ%5!(ZP0HB#1%)!! F!!(J!A2`-PV%fVY$ip!fKJ!*N3JJJ#%)#+BK0-T"ErBE3d3KX!"JE$I80V!!#!j !NaU(`L%%h"6lSJ!J!!5!"!`1!$!#`10"iS-(i!"i)"CP(3S3#,#M1A-4+J'L))$ [k,a-!`M3%##J2*l(jaJ!)%TSc#N-)!+)!SL#*f`EIE3!+1!q9Li!8!Ki3F`KM'f L!B#!#2!!)-!Rd)d"i$R1SLca$aS!2e#3!!a53$!#%%!"mX!&3!F5XU&8b!Zj'$2 NKR3NN!!JTf#Id2JD'J!K3*&d+P``#"p3!#"NM,3Zq%!8I!$q'"KXT&1""$RbhV$ (eh$T2)!(5*%"J!(mM1Z)!J+!S6J!TX%'!3*4!!'`9h*-)b%!"%##jTK6E-5)l*( K33"J58E!!86!F%3"@5D(i"3a55E0T20+&4i!"$b#AT15%"&Ca"`%B-fP5,$!6f) NRh`!6&)H[FRF3!!L!#D)MldX-*b4@%FBbp'Np)f2i5edMhfd'KDMTm3-JF8!a-C U`bP0*5ikP2dM-iV+69NUab'T#!#,Ed4qa61#(2(,UB3"B'"ACK$Nk"F0j9hNP4$ (9ll+BcNXNfAf-C6"FL8J5qZL,"%4#2J$`P*!p-VX)aDJJe2"HFC4@cT,aKLNJ!' iR*BLjcKdbr*b,TXPYH5@TJ83Y-Z9X#h**3,a"20b!04,G@PDlN'qh*HR!B%-J(m j,Sp$!d%JZqfCSBAK&LleCF(N'+EP4`8U$I%@'QDp6"8m!!&i!!)3!L3!A6%YfB% k2Sf+Q6`ZTUABCL'!!D4-+3Nbe58d)jP6`Q4D!#"!!BCH#'JQE-'d2)$je&%FJ"m BQG)bCMD+Y3-!0X#kH3`eNf0ZM!#`(Nh,!(JLBN%eFC*)%KcaJ"%SMZ(Q$D8!SVN 6aL-3%!%Em`F8Z5c*QEM(F)SC!3%HK!K#B!aH"ZaB#4)0!(J!("!9CJZ$D6R[aJ0 m6Ib`24C%fE`Tr1"XTJ8pa#)"`G@N$'rcYBb&%'!%kLE4C'D[`86m!EkC3CVQrh% 3$q!"e)F--4F,jq'd#q%Q!#`!2&!'!a,%-6R[*ZJ&JH8B!XL%DAJX`Z(5+B!P4bQ N#S[%!dF!(+c#Ij!!!2E"c(JYSl0dXVIcBbP5*`m)!KZcG3B0VU4)#-$QF8U8)J" J!"#!)+lQDp!+"S"S5$3L3#iF*mX"!(a*rF$10#)@Q%&pd"eU8`33JXq*!&!!"8% e4%"*B-66'4mfirJ%PF#!604*UqNfhHGF#`"%!!*N-[Ef2Im!)"#Ir`Gr[SA%#6p rJ"r`RPAR-4a3Tc9lAQE36"2E%R8Ld&e$&Pl&D3bA!Z!0cCE[q3!Qk"kN39R6G(e 2#'!rS3-+T5!L&!ZG#42k@&iS"L@J%E5%EP!E'N*a+")UNc[dJ[C3kb*[UKB#r3% m90,*d!G3-FH#8mQ@2A5%4Y#G)$A-%5#!SM(dHe*4ea%!NUJ+MD!,S)9f85'+(1A 0U3`!(!#,IP%Na%5MdK"3Se,dKlkE!T!!-6FQ##!"15Sl#!!i+N2,T*C!Q3cLHd3 P!`!FLJ`!#!)"+B91NJ*k(@MQd!-"IL"('3ld8!$H`DYJQ#4'LAj2jN%iNLB)%+4 5THJ`!1Q!5@%Sa*%hY[&VfY&A`JNMU"DE$U4df3N,H%!)fX3!b+5RG$UN8K'!)c, )9@#M(#D@VS4dN3"Uk8T`,Q98PrB,)$!j4bAe+M00j)P-K`G`k9jM*'%B!-#B8Ka 65N59U3)3!UYc9)C5+H&ETX0`fKLXiQPL8f1+!%M-!&JV1'#!GP28+5Q1jmDmLL@ %fQ41LM+FD-$Je(-SJ*DfLAC+335!M5!#B!##)L%J-1MJ*LBi%j6"3I66i[!2(!3 3i!-)J*eL&`&J!m""IP#S!5%)!)*hGa9k@ji)1!rJ0U46"'!h-LSPiCfRJ0fXRil k8GGS3"!$9XUN0J!'-$Yr*U[S6im$(K`#3*!!CIJ"GRQRN!!!PYR8PT06%5F$f$` *)UIi,AM4@J+#2eJrN!"!J)*8*MC")DTGB!!)J"P%eF6`l[$%948!N!$!`Qa9!aS *65SXA91EdDaL9AUb94PU@m8f$k!ri*5+L9f5k3N63&MKN[*98lT))fJ-b+PiVkr Ld1b!,pTUBM@PF63JS#6(ZK,`K--F#k(LTZ!$)6!)B)%81K14JFb3!-TV+!$B3`J B"%'3!"0LUFXJP[BFf@)8UJ-F!!V@qP9@!pQk-S%&!Y$@+-&V')!-X!X83!%-,`% M,4L$[3'Y2@R3p*VIbJ"XJ!BBVU993"K3aL#@G'Y2'U8F)eMX!8H`!+U!#S#Zl-' $-)E2 fUlA*VMKJZhEAlqU%dN48)!!BUEcfT!"a!15C$)J##)!5+!2SfU4dKhA 082UK[[Uh,i!!JLYi$3K(!1LP'[QDSCL(J*8"8+$!#YIf'PhTQX4M%6RP[iUPP(3 !HSd#F!)&0J%!!`V,([!&X-#S'l2)b3hV1J$`a+iMV5AfhAa6"*!!-MH'!%J0b,A &mSBh4,DN3aj318)JD6B6jG%A@+aL*9YAiCXQcD9j$)i$"!K)'61HfY)MQbBS3i, $+A`!E#E++6%@PJ3mU"RpD33J!#)!$UDX+8@b+`%+m0*!C9-b)j`S!!-!"S`!Jr+ dl-*4A5X3!!j%"63l!*!!3$10)B&)#[*1Ie$&"!!'Q,0!S-lLQB*U)f)!)YLcD8) k0)!F436#UCCiQJd'([b()l"Ar!%'i!%83-VDfB,D852!Si@afHcG$!"`ZM&rK*0 p$#VK!13%&)!JY'09@D3F&4bB@NKEBAH#5L!cDkaQ',j"4338lCh0URS@e8DAc4K X-aim'!%L304@eH+!9AFYDCdC*R50I9BJS")@lC0!UpDfa`S)(AV6J!"Jm,CP!Uh Q@9l,(S"SZD9"1i2(4YSS`@`I!lb9#[+f`V,9GeYCfi+maB`#`Ulb@aeV&rjYZmf fpVEI&YaV#(#E5VdeY`ThSpQJKXY#"bkHB!$r0MR0-aMa*aKU3)Uhec!!V)D$KKN '`#qJEG!!"(JZJNX!j+h)c3hc$!DS,Jd!h2j"!HJ,)$F2DYaB"!2J!`,S!1(L114 F!5%GfQJ"`'CH*$RCL+'l#J@%Zcfk%FBX+YeBe(*$lX'9'P$h4,M&UFYdVblUL6! EV3!XhIMJFS[Z@cKS2`S+r31X1hB$3pPeZK2dS)dS"b)Jf#l9IEY0j6TXc!I3Dc` Qam"QFjH85L'aHhHYES@b&-X4!M6(KGTJ6X3if$h5B[#fhDUE"kr#K4+3!*!!B-M DL+@lVRB2DT%0`L)H%!23-ARr,@@!!*d$%!4)m`J*E1b5@'0&!kcbJ(Mk'ZGEZP! !*#$,60i$d%Mi!4N8,'PN3hC)5&$N$!!(H`ba&`'-!$*EHf%!`h!PZTIUGJm#m(X &KBE%&JLb!&b"dIm8r%"c,YcF#L1HEHpr(j#8!,3!Fl%I5HK8baj2d*200pf` !j9YXAk-$`!"(3akm%R2K$`M!q8frkrGhYGmdZ5DeNUBG-,+A"iKIA`-f5-#3!0! +&i3!()"L!!%#X-))#i&b8%kZ"LXF`#S+k"lT&!EB$G`EICm(!6Lk2AFFRMcQd3! 3`*dM+$m9($b1H(!-M*IjPEiSq2F5J"9m(C3[@84'8LK9i@!)N!##R4F2,MS"!1Y U),+VJJG-4p%G56Jh,''hfi4eLYT9`SAA##F'R+FEXR"J@-&FH!T6hLqmKD@`&pl "CEJ,$eddr"M#m"N'`fCi$F0K0Fb%YA#S"!"ImML)BAR,KM1PY$!0"h-29f%r6&3 K*J+4`iQK6`&Ldi+)(i-Lj!'&1"#riF33#FH!16-Yci-2Vq")1"N--@5T`f1*!+" B"L!"%J83L)3Zc402c6%-PB)HMC8!$-!84d*!F)N45#BHKqdhb)+!QjP"C+YXQ-@ eq"06BHH9Lf[QbP`*X!!i-,r!m!M``,$`aC)iTl"LbV!!1JF!b,)HS'0D&Q8XE0Q "%B!!LN"+4'03A"YcJeP4X`&!HCC"eE([FN2H-`)S3"#)ihK*MN@5Rdh(r`%#5#% m4e%`!$b@amD2(JrMZe4T1bCkL,05``)N!0q!!I!!dPJ5r2Hha!II!Jjdm-a$RTL 3!1,863-!!k!!f)$)KS+3!*k'@SB"G("ri&dP#JBJ!5)3MZG%[!`9BQ%E")+52!i l(!%`R*!!`aI6#BPm'Q3b6ACHG'%RpmE!m!$m488HKd&C))X&"4!%IR*J5-SmH5N hC4d-PBIb8PB-9&N95f-q6"I'mF)&bPUj&S(PeYJEN4&A9KJ*3[`@2,"X!#C*Epb ,5&PKK)VHU22!FSRk,3-c,XHHmP,Z`2*HPKEP,P4N&@c!HrJbX[J$mQ!Vp!0"!"M qmK8&!'43!Ab$66J2i!-"F-Z!'3$iRjS,!)5"jk*`[kAFkBKI%!6Y"Fi`c(6"!#5 )Y*bC8r0U$Xd!`$@IjYD-PUX1DUl0mE,FbHEF(*YVmakMcDUC-chQhF`rKV0[EM$ '16Jr%5LMQimcFql0bKNj0qIJr(U"Xp*kcV+j1LIRkfbG'`afVXhDZ6Q$jYGEIe+ c8l%455`jr`!)T$cbkR4f+Pf)(lKRk1a8r!'4Q-qTH9[`JIk8ikDcIZD%AQJkkiR 8F(#!JB"Q,fNKeC3lP-#JUd+$IS)-J%U)$KQ-!rU#MF!!"3p##`!NJ+"m#4%BH!d '!43m5VJ!KX!J`!8EJJK8!#0!!cK!'9J%)cV)90S5B'&8G"*!!K*!%LL"',d!CM3 i!!*%3!)m!4`Y"jJ!Mjl4dL*))`%BN!#MGc3!)0%c1J4!J!#D")"!MNi#-CS"Q"0 h%!c%!3l!!HB!"c#!0l!(EYpD%"k!i8cM!-$3S0ZdJhl6EMT1`qNj,DIV0*fqdhB k6q2T2DfRqc5IrY0q1P#rDHPL!!!: -------- end of memory.hqx ----