-not a Macintosh disk-3@F$h t@ 3p # @@%b@-NF,  8!"@$|Gn"`I N.@A,H<( F<B<H111Bx<kNNF`, 8! "NH@"|J(g g`LNu"_ |a||a0@||9݁g|w|a||NH瀀 |(_@"g2<@gBA?N`Fa`||aPLNu  fBR$N"NBH@&|݁ |B$<0HN~NL@dBgg>N&|)`RNuBBBA*2h/ BBB N _"_$_"H&|݁ |B$<0NNd 0<`L$|J HA H  2I<FFI<<FFfHHFFfHHH?B@L"_2N _0H 2<@I6@o Az:<2`6@oJA~:<26" @n2BDBB(`EB@nAJEkz`z2<HAIL0.NL0.N  / p? O@ 0  0  XO _,_2_!.NBBB/ BBBN08 @ gNu@ f"_E!NH\O/ ?`@&x|N _!@"|xEx En"`CE"|xN"Ҹ< A  33"|@E E4n"`C&E"|@.N _LHNFLN*8&E@CJJKK f`  f `><$CS*<F|4>BRIBC Gff&<CBSC`D GnKG45BQf` f `Ns |0< BXHQ!4 _$_"_!XOHH/8/ $ f0<? QN ! N.x $_$ g ! N.x !C !!LLyp!N\OFN  l0P߀ Aǀ`  6lo6@ 0_an*>]> j 56, l602  ۰Poo A` &ll6p@ 0?۷a?^ ꭕ 5o6, l602 8!ED91kE"0369? CoNGNOS BOOT FAILED TRY A NEWER MACHINE AND BOOT PROM _"_NN o0<BAN o0 _PON _"_$|0<J"PJQN _"_$|0<"PJQNHL$ orD?|?@?e\SFk!!QSWk:CL<HL|hH>L|4H>L|H>SWjTO>SGk\!Q`TSFk QSWk8L|H|L|H|4L|H|hL|H|LSGkQLx _O NNVH8=| f=|G* G, &N(N n"n$n 0.  S@ZeJ S@BBDBG S@gg.BC CJDg720faL`fa:` 320f8<S@`JDg  fa$` fa`  U@o$SBjt`(N&N><`JGg (Ev#$#$QNukJDg`g 3$f(N`BnLN^ _NUNPACK NV;n N^.NuEVINIT NVH,. ^J]g n0`4B?N. f n0`/.//. /.N(n)FLN^ _NEAD_BLONV/ (n Jno./.?././ /.Nj nJPg`RSn`(_N^ _NEAD_SEQHNT"|E.|r |BBByBygRBf~NuLHPPNqNqpS_n.0<QLHPPNqNqpS_n|~By&JM*Np|azJGfb|a|,Mpa`JGfH|a<<AaJGf0Avtp BQvr BQH@02N\LhL"4NtB@6Kd a"JDf`02IP g a JDf`Nub SBg pxNuBDNu><Nu4< vB@bp2IPSCfSBfNuppB@(4<dBC(4< CBC(C"H4<BACSBf(CAg><NuJoNV?-Nh.H|)?NpN^ _TONRAP NV.HgVS@g`J.f& -XмS//<N(/<N+_X-mX . ѭX -Xo<Np`B . TJ.f/-T/<N/<N+_T-mT -Tl<N,N^ _PONGETSPACNV .мS//<N/<NJ-_ .=@ N^.NuINDSPARNVH.. Bg/N0Hހ m0.@I/./<N( 8//<N @n ?.Bg?<BgN(LN^ _ NETMMU NV0. S@g S@gS@g`=|`=|` =|`BnN^ _\ONONV_DEVNVH nCJp"S@n2BgHnNE g BgNN=_   nV@g8B. Bmh|` @BvRF Fo mXf=|;|@`Bm@`|BgN;_hBgN> Ggd G] G^g$ GdfBgN;_@BgN>`<ND`.BgN8JD] D^g<N$ @=BgN>`|`.H@ABpR. .oBg?./N;_"Bg?./Nz;_,Bg?./Nj;_.Bg?./NZ;_0-| nBPLN^.NuEAD_CONNVH nCJp"S@n~`LH6p@J@^H6pA A_gH6p@H"AA1`H @ABpR o;nh0.H@;@@A r<Ё(@&|H@6LN^.NuROCESS_NVLH nCJp"S@n2BgHnNAx/NAx/HndNJndV nxVgB-e`|e  gHnxNA&HA(AL,*<Hnf?-Z E0-NPH///NJnfg<N(A(H/ HndN.JndV TVg B-fmeg`l-eg*0.zlW"-BWD@f-f @g` B-g -Bf|f/ N`B-f  -e -fg/ NLN^.NuNIT_CONNVH+| \+|l+|(|+|t+|+|l+|(|;TN(|;TZ(|;TX&| n!SLN^.NuETVARS NVH/Nt;| ./+@ .м/м+@+|X*<(< E"D +@T&|?-Z0-NS?NHnHmBNJngp+@BAC6 0HnNBBg/-BgN+_ -Э+@PBB<0<H/BgNZN<+_H+mHBG` m @I G~V GTVgd Gl|p@ @8`$ Gf|p@BT`| p@BT H< @"@=A?.??<BgNJRG Gox mI|p@BT mIP|p@/-H/<N 8LN^NuOOTINIT system.configNVH(nB BgN@BgN8HH,BgNp0HѬ f,/, NBgNBgNHH,BgN>0HѬ f,/, NZBgNBgNHH,BgN 0HѬ f:J`f< N/, NBgNBgNHH,BgN0HѬ g<NHBN,BN+_ n/BN  _r Ё0p//-XN /-/-XN&mX:=E E0o<N0<H+@d+| -dЭ\ n2HҀ -Ё"-Ҁ(Bg Э/N0Hѭ -Є+@B</-BgN+_+m` -\Э`+@h -dЭh, n0HІ+@ -Э+@ -Э+@?<f/-/-?<N^-m/ /./-N n LN^ _ NUILD_SYNVH(nBGBF. gB `P-n n0. PoB."` n0. A-H&n/+/<N&  n0>+<+/, N$BgNBgNHH-@BgN0H(٬ JVJ_gB."`4JGW WJGV WgJFf n `H n n/B."n/BgN.  _ BN-_JGf n Q/ n P/N` Q@H/ n P/N|B. n=h-nA-H n-P/./.p/NJGgR-m`Bg n/( n r Ё/ n P/ nP/ | ? Q@?N9_Jlg< N( nQ f|"LN^ _NOADSEG NV/ BBg/-lBgN+_p -p"-Ҁ+Al(|`p}//<N -Пp((|p}//<N -Пp(?<}/-p/-l?<N(_N^.NuLLOC_SCNVHAC 0BgHnN __m_^+m-^gBBg/-BgNX+_`+m-_gBBg/<BgN4 м,BgBgBHnBgHnHnBg/.N g<NACD 0BgHnN p g B-n`.BgBgBHnBgHnHnBg/.N g<Nn .@+@n -Эn+@j` B -@+@n -м@+@j?</-n/-j?<NH <逐n.JfB` .ЇP-@JfB` .ЇP-@-_g -Ї/ -Ї//./.N\`/-/-BBNJ(|p((|t(LN^.NuOAD_DEB SYSTEM.DEBUG2 SYSTEM.DEBUGNVH nCJp"S@n2&n (nBBgHnN gZB /, N BgN FBgN >HH(BgN v0H* f&.B</BgN&B /, N ~//N LN^ _ NOAD_UNPNVBgBgBHn</. /.Bg/.N g<NN^ _ NOAD_LLDNVH(n 0-F|>Jg,, .* Ю(H//<N ( Д-@`,.(.H//<N p-_?//?<N6 .P/N LN^ _NNSTALL_NVH(n=n ~`/, N dBgN _BgN HH(BgN 0H-@Jg .Ѭ `<N .fBN 4(BN ,( GfAqB0pB5pB`ACZ 0z`BgN f_ .ARE EoHn?<?<HnN AC 0HnHzNdg(AqB0pp @A^B @AB`2HnHzN,gAqB0pB5pB`Aqpp| 5pgnBg?/.Hn @AHp @A^Hp</.Nd g<NN?. @A^/0 @A"0Ҽ/?<NPRGinoLLN^ _ NOADCODEkrni NVBBg/-BgN +_?<e/-/-?<NN^.NuAKESUPSNVH(m . R A T&@-kLN^ _ NINDMAINNVBg/-|NN0Hѭ|B</-|BgN+_?<g/-/-|?<NdBg/-tN0HѭtB</-tBgNF+_x?<{/-x/-t?<N*N^.NuREATEOPNV/Jmho@ mFhomFh0-hH.//<N .0<AHЭX"-ToT.N^.NuONFIG_DNV A0C ArC 0AC 0/NHnHm`/NBgHn0N g< N0HnHn/NfBgHnrN g<N/NBg/.Hn$/N;_F/./.Hm`/Nh-MgN/.$?-F/N/N n /B/.$0-FH//N  _ /N&/NN^ _PONOADSYS $ SYSTEM.UNPACK SYSTEM.OS SYSTEM.LLDN NV,_NUTN z+|T mT PVD@MN0HmHmNHm?- -tЭx//-NNިNRN]N (NuN^NuOADER NVHAT(HA<&HHn?-0-H".Ҁ// / N Jng<NLN^.NuEAD_PAGNV0.H H"-"Ҁ-A0.H H@J@=@/.NvAT0.HЈ-@ N^ _TONIND_SENNVH n-h .S/0-H/N ;@8-n p+@4;m:BF` ATIBBlRF Fo=mA-HA<-HBE n0-HА(BnJf<NHn?-0-HЄ//./.NJng<NxBGA0.HЈ&@Bn=knnZ Eo<NJ ATI ( 9s Jlf<N0,n0.ްm8o`RERG`(-L`HLN^.NuPEN_FILNVH(n| @=@~`84p@k|nAP2IDA0 <f 4pAFRGinoLN^.NuHIFTNAMNVH(n @:JEnBn`pp4A4P@R@H. Eo U@<`BFJFo$ R@4A T@4BRBHށSF`Jl D./0.H/N =@LN^ _\ONDHASH NV~H n CJp"S@n2BA&/Nb 8<-HnNBgHn?-N>H/p6/NNBp6/A/NdACp S@n0HnN^J.gHHnHnN .Wgz n/B?.N~  _ `SFRGmfBGBNJFfELN^ _PONOOKUP_ENVH;n ;m?.?-N;nBNAT(HJg<N;l~+l";l ;l;l;lB?,N&_+S&+k*+k.LN^.NuNITMEDINVBg/.HnNr_n .gB/.N-_N^.NuPENINPUNVH(.BGBF Go<N AT:0JEf<N EHl@ ATH"Ұ n n Jf<NHH " n ``RGE`LN^ _ NIND_POSNV-m4/.0-H/N+_4J4]2-8H4]g<N&0-H/-4/Nl .;@: -4g/-4HnHnN/.NN^.NuILLBUF NV0-:mf -4R2-H//NNT0-:ATpRm:N^NuETBYTE NVHBgNHH<BgNH>JGl H м> G=@LN^NuETWORD NVHBgN0H//<N~,BgN0H.Jl޼ Ї-@LN^NuETLONG NVH,. 0-m:>HǼl>JGo0-:ATA//.H/N$H߮Hǜm:0-HnJ4]2-8H4]g<N -4R/HnHnNn-nA<(H/0-H/N*l-EJoZHn?-0-H".Ҁ/?././ NJng<N0-H/./NV(ٮ .Ѯ .ѭ4`:Jo -4R2-H//N"NhJfLN^ _PONOVEMULT//0/2/ AH@B@2/Ё/@" /WXNu// /"/ N2/A" /WXNu// /"/ N/@" /WXNuH>*jD,jD$&BBx㉰mRSDlJjDjDL|NuH0/ oC"4JBAR`$aJBBB`QQ oC"0/H#//IL._NuH oJB@BA"o JBBBlBA`$HR` fQ`RS@`?A"/oL\NuH o0/2/SA"o JBBA@m`Q/o L NuB`$_02 _ @o0 Ao*BBAm"6@SCBoSA`@"H`RCoN$_0"_ _J/ S@m*BABB@m6B$I”@`!Q`QNuHr`HBA oJ"oJB@f`fQ AA/oL\NuH"o J oJv`:H"o J oJBC`&H o J"oJv`H o J"oJBCB@BA@m4`4`fQ@n C`cC"/oL\NuNuNuJoNu r , PASCAL 5 2.0&;f/Nt0. @ g0@#g2S@g6U@g:_@ , *`$ kTk , f${%?7LJ*;8WZcjnr 0!" #2$ % &P'@(K )PR*y~+:,D- rootcatalogːp8 .[,] ,tZ   QD/BOXES.OBJEXTJ| N@Bg/N SYSCALL.OBJ.OBJJ| N@Bg/NQD/M/BOXES.TEXTJ| N@Bg/NQD/HARDWARE.OBJJ| N@Bg/N UXREF.OBJR@g| N@Bg/N QD/BOXES.TEXTXTJ| N@Bg/NQD/QDSTUFF.TEXTJ| N@Bg/N SEGMAP.OBJ.TEXTJ| N@Bg/NQD/FONTMGR.OBJTEXT| N@Bg/N SYSTEM.DEBUG"hDEBUGhQD/STORAGE.OBJEXTT| N@Bg/NQD/GRAFLIB.OBJEXTT| N@Bg/N QD/QDSAMPLE.OBJTTT| N@Bg/NQD/UNIT68K.OBJJTTT| N@Bg/N QD/HWINTL.OBJJJTTT| N@Bg/NQD/M/QDSAMPLE.TEXT| N@Bg/NUXREF.UMAP.TEXTEXT| N@Bg/N QD/GRAF3D.OBJg| N@Bg/N QD/GRAFUTIL.OBJg| N@Bg/N QD/GRAFTYPES.TEXTT| N@Bg/N QD/QUICKDRAW.OBJ| N@Bg/N QD/FM68K.OBJ.OBJ| N@Bg/NQD/QDSAMPLE.TEXTTT| N@Bg/NQD/QDSUPPORT.OBJ| N@Bg/NQD/UNITSTD.OBJBJ| N@Bg/N SYSTEM.DEBUG2"hDEBUG2 QD/UNITHZ.OBJXTJ| N@Bg/N QD/BOXES.OBJEXTJ| N@Bg/N r ,&jg,j C A_ L_ QD/BOXES.TEXTXTJ| N@Bg/N r ,&Vj,Vl C @  QD/FM68K.OBJ.OBJ| N@Bg/N r ,&, C @ QD/FONTMGR.OBJTEXT| N@Bg/N r ,&A|,X C @% % QD/GRAF3D.OBJg| N@Bg/N r ,&A, X C @*} QD/GRAFLIB.OBJEXTT| N@Bg/N r ,&A,Wt C @UNG GQD/GRAFTYPES.TEXTT| N@Bg/N r ,&p{,p C @N ;ns the source and object files of eight QuickDraw demo programs written by Bill Atkinson and updated by me and Dana Tom to run uQD/GRAFUTIL.OBJg| N@Bg/N r ,&A, WLJ C @  WQD/HARDWARE.OBJJ| N@Bg/N r ,&A,A C @;D Z QD/HWINTL.OBJJJTTT| N@Bg/N r ,&WǑ,Wǔ C @ I cN^NuXORRGN NVH8:$n&n (nB'/ / N0JgEf / / N `/ NV` R"S EnJm 0)ilHhHi?<HnNLfJEg`QD/M/BOXES.TEXTJ| N@Bg/N r ,&q<,q< C @ jINITICONINITICONDRAWSTUFDRAWSTUFTONE TONE ޺'r кQD/M/QDSAMPLE.TEXT| N@Bg/N r ,&q0lJoNV n CJp@"S@n n|3/- Hz0BgN/- HnBgN/- NN^ _PONRROR EQD/QUICKDRAW.OBJ| N@Bg/N r ,&AМ, A C @ QD/STORAGE.OBJEXTT| N@Bg/N r ,&A؜,X C @:   QD/UNIT68K.OBJJTTT| N@Bg/N r ,&," C @  QD/UNITHZ.OBJXTJ| N@Bg/N r ,&Aݜ,X C @ ( (QD/UNITSTD.OBJBJ| N@Bg/N r ,&A,X C @B @ SEGMAP.OBJ.TEXTJ| N@Bg/N r ,&,  C @ K SYSCALL.OBJ.OBJJ| N@Bg/N r ,&o,Ά C @) P)ORI.B #$1C,DDRB(A1) (ANDI.B #$FB,ORB(A1) ;ENABLE OUTPUT BUFFERS (ORI.B #$08,ORB(A1) ;DIR = IN (MOVE.B #$FF,T2CL(A SYSTEM.DEBUG"hDEBUGhΜ r ,&" ؛N E D? y? SYSTEM.DEBUG2"hDEBUG2Μ r ,&( R E D  UXREF.OBJR@g| N@Bg/N r ,&,  C @" "UXREF.UMAP.TEXTEXT| N@Bg/N r ,&Z՜,Z C @ end of file. *) .movedown; .if not erasemsg then {not end of file.} 0begin 2wdnr:=wdnr-7; 2if x=hexright then 4x:=hexleft DhPASLIB FPLIB BLKIOINTfBLOCKIO gPASHEAP h2B($ r&~9 (,*;N$N& N&oN&oN&GN&GDN&#N&FN&rN&oN&plN&r`N&ZN&N&N&o0N& N&oN&bN&GN&N&GjN&ZN&2N&N&&TN&%N&oN&pN&qN&nNN&n4N(!N(/N(7\N(/N( N(!N(N(!N(ZN(N(!fN(N( N( 0N(!N(N("N(N("N*NN*N*`N*N*N*N*lN*F"X/Nњ PASLIB1 initfp Sfplib2 Tfpmodes Uf32 Vx80 Wx80elem Xfptrap YPASIOLIB`MainProg Bԅ$JoNV/- Hz&Bg/-  "N^ _\ONEAPERRO43The heap is full. The program must now terminate! JoNVH n CJ""" nCJ"""/./.L././.L,/./.L*B//://://:-_LN^ _PONISTANCEJoNVHBgNd0HFH@J@|H/X-_BgNd0HFH@J@| H/X-_B/.p /XBgNd0jD@HH@J@H/X-_/.p /XBgNd0jD@H-H@J@H/X-_/.p /XBgNd0jD@H#H@J@H/X-_Hn/.Ġ ?/.Ƞ ?/.Р ?/.Ԡ ?Np0-.S@=@BG`fO A0IHn/ ?/, ?/,  ?/, ?NpBgHnHnHnNjg`:RGinoAC AC /./.Р/<@-_/./.Ԡ/<@-_/./.ؠ/<@-_HnHnNBHn mHh4N<-_BG0-.AAH!/.O AH/0(gRG` R@=@<-.`2M "SACC0AE0Cp S@nSFinlO C0ACp S@nRm.LN^NuAKEBOX JoNV/ n CJ""" nCJ"""BNF(_NR/././.N/././.N/././.N/././.N/././.N/ N/ Hm NNR/././.N/././.N/././.N/././.N/././.N/ N/ HmNNR/././.N/././.N/././.N/././.N/././.N/ N/ HmNHm N^/././.N/././.N/././.NNX/ N(_N^ _PONRAWBOX "NV,_NU,"A/A/AB/NA+H/-NLA+H/-N mHhNp/XpK/Xpd/Xp/XNp/XNNp/XNpF/XNHm N^HmN mHhN;|,`Dp ,H/Xp/XBXNp ,H/Xpd/XBXNRm, m ,o;|,`Dp/Xp ,H/XBXNpd/Xp ,H/XBXNRm, m ,oBm.N m.f0-.S@;@,`00-,AA0Hp0-,AAxBN>r o !_!_ m4"o BYA"2""""//N@"o m4/(~/)N?,"oC BBp""B"2""BYB2BYB"!"BBBBB.NuNV,_ o/(N> o/(N=.NuN^NuCLOSEPOR"oAP"A"Ab"A(`"A)"A,H"A8,"A;"AJ"AU"A"AVP"AV".NuNV,_H m4 P"o0(Y0( YL.NuN^NuLOCALTOGNV,_H m4 P"o0(Y0( YL.NuN^NuGLOBALTONV,_pNN^NuGRAFDEVINV,_ m4 .NuN^NuSETPORT NV,_ m4"o".NuN^NuGETPORT NV,_ m4 PA"o 0 .NuN^NuSETPORTBNV,_ m4 P0(o1@0(o1@.NuN^NuPORTSIZENV,_ m4 P0(h o2(hoh hhh .NuN^NuMOVEPORTNV,_ m4 P /g<0/h2/hh hhh hhhh/(??N=.NuN^NuSETORIGINV,_ _"m4"Q/)/N+Dlg<N]?N]4(k\(T9G+F,g<N\N\(k\(TG>+Hlg<N\?N\(k\(T9G>+Jlg< N\?N\(k\(T9G.+Lg<N\/N\(k\(T)G.. *.f"g"<N\b/N\/N\(k\(T)G)E"*+0& g<(N\./+0N\n`8 f <)N\`Jf <*N\`<+N[N[HEN[N[/.?N[(k\(T)k0&?/./. /.NLN^ _NSTDTEXT NV,_ _/</</ m4 P (hA@g @ PNN^NuCALLTEXTNV,_pDN(N^NuTEXTFONTNV,_ m4 PoF _TONN^NuTEXTFACENV,_pHNN^NuTEXTMODENV,_pJNN^NuTEXTSIZENV,_ m4 P!oL.NuN^NuSPACEEXTNV,_?<HoN* _TONN^NuDRAWCHARNV,_ oB@?/N.NuN^NuDRAWSTRINV,_ o0/?/N _PONN^NuDRAWTEXTNV,_Bg/?<?<N>?_ _TONN^NuCHARWIDTNV,_"_ _B@/Bg?/ NN^NuSTRINGWINVBnBg?.oN n /-|-|HnHnHn m4 P (hfN*` @ h(N2=AN^ _PONTEXTWIDTNVH8Bn(m4&T)kLTC2D2JFJkBZ2 n" n "BHnN)WP(_ nBBJgl ll,H1@ n  n *+Lg4BBB?.?.NB?,?,NN/N* m4!ET4.ox$l$R, HJf0@ g j`TB n"J6*8*B@`* fۮDo0R@Cm@01 @g@@Qn=ALN^ _NSTDTXMEANVH8 m4I6-L n"20-A)X)XBHn/ N&_J\(g6(XK8880B'HnG/ HnNJLN^.NuQDSWAPFONV-|-|BBHnHn/. m4 P (hAg @ h(NJ_ m4 hP"n( HiB@( gRQi .g002020202N^.NuGETFONTIJoTNVTHx-O(m4&TBg?.o^/.Hn HnHnXND2(lPJg<=A-k0 k2JkBm$l$R0.j=@j=@0.=@@ n-n-n +TFP2+XV . VgHB. .-@xn=@~H@n =@| .-@n =@H@n=@HnHnHnxNZ&HnHk k PHh k PHh?<HnNgRA-H2*A=A=jJ.gJlfJl f kHfx k P P fl k P P gB'/+HnN8zJgN0.noѮ0.no=@0.kЫ-@=k=k Hn/+N`TB.0.k @@ k =@2.@ITA6.=CI=A0HD@JwSCB-OBQ-OBC0*0*@A-HT0< jo0*R@jm@ nT:0 EgE, HEBE m4ڨT-Ed0.j=@`=|bSn n-H f ".dӮ``D@jo0*R@jm@ nT:0 Eg2141Ao6Kn`CJ.g*nonlno4.nl 0.C@@n֔nH|:AE(nEAAUA*n20AN6<0N84n6n>.FAg`SFg E, n`Snn>.`jJ.gN`bBn`BB,` n2.ڐ@ ␁QQBB,g<"n6.ؒKSC<.BDB0H:EH IYH2 UH3QQJ, g n2.0*4*"H$H Bmfg0D@Jw/ GISA4@ &␁Q I@ #㐀FQ&_0.Hn֐GS@H`B`Q0k N`=| -k-k A-HA 000 EA 0 BC, g0.HD@Jw0.S@B-OBQ0.S@ n/ Q-OBC4 n2.ڐ@ ␁QQ$n"n I nQ-JXn-np-ntXnt-nph-ntlSnhSnjSnlSnnJ.gHnhHnHnxNUHnHnHnpHnh0+H@?/+/+HnN?r-nYnHnHnHnHn0+HJ, gD@@?/+/+HnN?6.nLN^ _NDRTEXT NVHNRoxB'NQ~ (k\(T +0*fRG<. @0HFf:.k00HEfTGNP<f/+0NPvf /.NPh` NPNP(k\(T)n*/.NLN^.NuSTDLINE NV,_ m4 P (hANg @ hNN^NuLINETO NV,_ m4 P0(2o0(0oNN^NuLINE NV,_ _"m4"Q#_0NN^NuMOVETO NV,_ _02"m4"Qi0i2NN^NuMOVE NV,_H(m4&T./,+0Jdg4"l^ Q0 @ f!X@!X@0l\ml\/ ?,\N`J`g///,lHljHlhN//Np'G0L.NuN^NuDOLINE NV,_ m4 PShBNuN^NuHIDEPEN NV,_ m4 PRhBNuN^NuSHOWPEN NV,_ m4 PA0"o""2"".NuN^NuGETPENSTNV,_ m4 PA0"o 0 .NuN^NuSETPENSTNV,_ m4 P"o"0.NuN^NuGETPEN NV,_ m4 P1o61o4.NuN^NuPENSIZE NV,_p8NN^NuPENMODE NV,_ m4 PA:"o .NuN^NuPENPAT NV,_ m4 P!|41|8p!@:!@>NuN^NuPENNORMAJo@NV@H|-O-MJ m4&PJkBmp-KF0+8@ @f\?+8Hk:Nj-_@=_D*K$m$R&m&S2. 4.6.8. CoCDoDm6m4=A=B=C=DHnHmHjHk?<Hn|N XgHn|/-*nJN@*nF2. 4.6.8. BgAnpmj 4f" n@ g ff R f S gHmHmHn|Hn|?-8Hm:/-/-=| zAz-HvHnv*nJND`FCD0m4jo4jl,=Bp=|r-npl0-6onl<-4oB?W?WN.-GhBBg?/N, ѮpѮlJkp l߮p`Snl`l m߮l`Rnp2.|4.~6.8.ng0n*HEHEBE,چۮpۮl=|=|=|=|4.~m Bm =BZ0.BH=@XHD@Jw0.XBQ-O\Bnt R gTnt JC0.~2.4.ZN/ S gXnt KC0.~2.4.ZN.Jntf n\6.~nZ8.nZN>2.|mҭm JH҂-ATB4.DgFN\-HN4- n@C*nJN*nF>.|OG?,6p2.Znpnln~n=n|RNl2.p4.l nN"nT$n\G|NXGG?,6p0-HѮT .hѮpѮlRnR0.Rnm*nJNV.nL>N^ _PONDRAWLINE0.t0;N 2Nu0.RCN.-i\Nu0.RCN.-i\Nu0.RCN-CN- n"n$n\2.X $QNu:.DJ@f E E n`AfaN<4.m 0N 6J E mVg,FFFCAg\BSBgJd8SB`((UBngCT` Ag\|SBgJd\SB`FFUBngCT`Ag\|SBgJd8SB`((UBngCT`Ba>N2.n|SA E mgF@TQ`TQ`TQ`x2.|4.~(m0m>-0m 2INuNVH84.8.Bg0DjD@2.njDAAo0R@H&n(n T nPo@0/ ?N4.&S2.6.Af 6666`tnCD<B?W?WN.=B=| ѮJk l߮` lRn:ng 66:.66RF߮FfDg6666 n8LN^ _NPUTLINE NVH. NIDoNH&p0G/.NG/.Jf J`g/./,lHljHlhNNt`NN LN^ _\ONSTDRECT NV,_ _ o& m g?<Hk(`?<Hk `?< Hl`?+8Hk:NN^NuPUSHVERBNV,_ _"_/ / m4 P (hA.g @ hNN^NuCALLRECTNV,_pNN^NuFRAMERECNV,_pNN^NuPAINTRECNV,_pNN^NuERASERECNV,_pNzN^NuINVERTRENV,_ _"_/ m4 PA( pNNN^NuFILLRECTNV m4"PJiBm(HiHi/./.?. /./)/)/(~NN^ _ NDRAWRECTNV m4 PJhBm"n-Y-YC4(60)=@B=@2)=AB=AAl4(40=@B=@2)=AB=AAl=n=n=n=na>=n=n=na*=n=n=na=n=n=na`2 m4"PHiHiHnHn?)8Hi:/)/)/(~NNuaN^.NuFRRECT NV,_ _" "_""NN^NuSETRECT NV,_ "_ _f f`B/NuN^NuEQUALRECNV,_"_ _02XlXlB`NN^NuEMPTYRECNV,_ _20"_YYYYNN^NuOFFSETRENV,_ _20"_YYYYNN^NuINSETRECNV|/./. ?</.afB.N^ _ NSECTRECTNV,_NVHx@C 0o> Y2468S@`" YXl2(Xl4(Xo6(Xo8(Ao BoQ`BABBBCBD n00000. H\@ALN^ _NN^NuRSECT NV,_ o "o0Qo0H@0(io0)2(il2)HA2(il2) o _ NN^NuUNIONRECNV,_ o0/2/ @lA1@1A0/ 2/@lA01A _ NN^NuPT2RECT NV nB.0.hmhl0. Pm hl|N^ _PONPTINRECTNV n "n0@QoQH /.?NL n "n"QP n"2222"N^ _NPUTRECT JoNVH|-M$n&n(n*n0+So=@v0l=@0m=@=l=mBG0. gFGg&4- nC*nN|*n>OG?,6p`p f:0.nn0m0*l2+mAlDC`0.S@nnDnDn<+m2*lAF0.(TFAA-L2+m0.*U0AA-M2N88A0+koA2ND:A=AJCjA-L-ME0. fJFfJnoCJCj$C`@ 2@@JnfACN24.N(n-L` XGG?,6p*n-MSnfL>N^ _NBITBLT |&^pz\0AFAUA:rSBgDÚJd;$SB`+$+$UBng`&0AFAUA:rSBgJd:SB`**UBngE ,쨿@AFAUA:rSBng`$E ,쨿@AUrSBng`E ,쨿@AUrSBng`E ,쨿@AF@UrSBng`E:FE6.4.A0EF:XGG?<6pSBf`0AFAUA:rSBgJd:SB`**UBngEAFAUA:`tE0A]rSBng``0A]rSBgJd]SB`UBngEA]`6E0AF@]rSBng` Copyright 1983 Apple Computer Inc.Jo2NV2H|-Ot-M4?./.N -_=_"n"Q$n $R&n&S(n*n"/ HmHiHjHk?<HnlNgHnl/-*n4N*n"0<QRSfB$nA80.lTR00.nlj1@/.&/ /Hnl?./.*n4N`2.nmAm=A`0.rAH=@^HD@Jw0.^BQ-Of=|=|=|=|=|=|Bnj Q gTnj IC0.n2.r4.`N R gXnj JC0.n2.r4.`N S gPnj KCx0.n2.r4.`N njf-nf` njf-nf` njf-nf=nlT=npR=|P=|N0-H-@F-nfbB4.kgFB0@@A -H@g*4- nC*n4N**n">.lOG?,6p`$n&n&0+H-@J fL0m2mAmN^ _"NRGNBLT 0.j0;N:,t0.DCNNu0.DCNNu0.DCxNNu0.DCN=A2CNxn2g n"n$nf2.^ $QNu0.DCNJ=A2CxN>n2g n"n$nf2.^ $QNu0.DCN=A2CxNn2g n"n$nf2.^ $QNu0.DCN=A2CNʃn2CxNn2g n"n$n&nf2.^ &QNu@h +H@"N0"NF•*NQ`2 +H@"N0NNQ` +H@"N0NNQ` +H@"N0NFNQ` "F•*Q` Q` Q` FQ`NVH.N:@o8N9" k\ P .Lg!@L/< N7N80p@G/. N8b/. Jf$J`g/. /./,lHljHlhNH<`B'/.NBg?<hNLN^ _ NSTDRRECTNV,_ _""_/ // m4 P (hA@g @ h NN^NuCALLRRECNV,_pNN^NuFRAMEROUNV,_pNN^NuPAINTROUNV,_pNN^NuERASEROUNV,_pNvN^NuINVERTRONV,_ _"_/ m4 PA( pNJN^NuFILLROUNNVH. N8oN7pPG/.N7 n0(h=@0(P=@/Jf"J`g//./,lHljHlhN<`B'/.NBg?<hNbLN^ _\ONSTDOVAL NV,_ _"_/ / m4 P (hARg @ hNN^NuCALLOVALNV,_pNN^NuFRAMEOVANV,_pNN^NuPAINTOVANV,_pNN^NuERASEOVANV,_pNzN^NuINVERTOVNV,_ _"_/ m4 PA( pNNN^NuFILLOVALNVH|&n&S$K n "J n/.Hn?.?.N=n=n0.@n=@ nhPn=@<.:.N:.NnmnmBHn?N d:.ܺngNb:.NZ=n:.ngNF:.N>=nRFnm:.N(:.N n 0L>N^ _NPUTOVAL m*ʓH n0/.? NL$n$Rʷgkf kfYKNu66NuNVH .N6Lo&N5.p`G/. N4?. N4$?.N4 n 0(h=@0(P=@/Jf<`B'/.N?. ?.NLN^ _ NSTDARC NV,_ _""_/ // m4 P (hAVg @ hNN^NuCALLARC NV,_pNN^NuFRAMEARCNV,_pNN^NuPAINTARCNV,_pNN^NuERASEARCNV,_pNvN^NuINVERTARNV,_ _"_/ m4 PA( pNJN^NuFILLARC JoNVH|-O-M m4&PJkBm-K0.gj n D@=@ @h]0.@ @f?./. N-_ =_*n$m$R&m&S/.HmHjHk?<HnNgxB.J.gD0. HhH@J@j@h=@ n @hm@h=@ n0h@=@0(h@=@0(h=@0(P=@B?.?.N.B?. N B//NΌ-_B?.N B//Nr-_<.HFBF>.O0.-@0.n -@0.-@0.nޜ-F0. @l@Z`@D@=@0. @l@Z`@D@=@0. @nm nZ W` 0.܀nZ/.Hn(?.?.N0.@n(=@ nhPn=@=|RJ.gb n4m46(m4ClL0(m62(m6Al8=@~=A=B|=CHn|HnR0.m6m6?0.m4m4?NHn/-*nN*n2.4.6.8.=|=|=|=|4.m Bm =B0.BH=@HD@Jw0.BQ-OBn R gTn JC0.2.4.N S gXn KC0.2.4.NJn f n6.n8.nN#2.mҭm JH҂-A B4.gFN<-H4- n C*nNȜ*n>.OG?,6p2.nnn.n2nXn\nn=n( 0. nmnmHn(?NfHnR?N\nfdJ.g^DnDnB.0. @nm n f`0.܀nj0.=n=@ .-n-@ .-n-@0. nmrJ.fVNJ.f0. nRm6nTl.`2..Jnj nl2.=A4.2Jnj no4.=B0. nRmnTl0.XJnj no0.=@0.\Jnj nl0.=@ҲBl4.aX2.4.`0.nj nonf4.X`0.ذnf 2.\4.a2..4.a 2.4.2`Z n"n $nGNBmB0.nj: no02..a2.4.2`2..4.Xa2.\4.2a` 2..4.2aXGG?,6p0-HѮ .Ѯ .ѮRn 0. nm*nNN.nL>N^ _NDRAWARC 0. 0;N 2Nu0. CN-iNu0. CN-iNu0. CNCN n"n$n2. $QNuNVH n"n 23h4. lBB2.lBA0(h@o40(P@o23h Bi 3hBi0H@B@ѩ  pA3@0HЀS#@BBB??Nȴ/HiN )Ѐ#@& )р#@"L?N^ _ NINITOVALNVH$n 0.Rmjl~&<$* "*(*` ԃA"C@ӈӈA*C"@ӈӈn` ҃A*C"@A"C@m%B %A0*R@H們TjL?N^ _\ONBUMPOVALNV,_ _0HH@J@j@H @ho @D@.N.DNN^NuSLOPEFROx kfo#(-$16j;?DIhNDS.X&]-bEgnlqw`|p@ANފ7 Q&1<"GS`[m{5hwn $>[y[zEV|hTb%PQ$ nL9J0NV,_ /[jDA2<_0<AJk0.?@NuN^NuANGFROMSNVH(n0,T@2. @0,l@>.@f JAoP0<`LB??NŠ,B0,T?0,l?Nņ B//NP Bg/NN0JGj @ @hfB@ n0LN^ _ NPTTOANGLNVH8. N*boN)DppGN("/.N($nJf/ N`2 RHh k PHh k PHh?<HnNxg / N"NLN^ _\ONSTDPOLY NV,_ _"_/ / m4 P (hAbg @ hNN^NuCALLPOLYNV,_pNN^NuFRAMEPOLNV,_pNN^NuPAINTPOLNV,_pNN^NuERASEPOLNV,_pNzN^NuINVERTPONV,_ _"_/ m4 PA( pNNN^NuFILLPOLYNV,_N:B?<N"_/I m4!I^1|\ P!|d"Q2 BBNuN^NuOPENPOLYNV,_H(m4 TBd(l^ T>BB<F Ng:2468SF`0Al2Bo40Cl6Do8Q TA0000/ ?NNרLNuN^NuCLOSEPOLNV,_N|N^NuKILLPOLYNV,_ _02"_"Q4UBJSBYYQNN^NuOFFSETPONVH8$n &n f *g0(n(THl/ / N)>G O ` / / / N)2XLQLN^ _ NMAPPOLY NVH(n T>G Og/( N|SG` T/0`XFNQLN^.NuFRPOLY NV/ m4 PJhBk:N/.N n P/( NBN,(WN/ ?. /.NP/ NHLN^ _ NDRAWPOLYNVH8. N'oN%0<GN$/.N%/.NJf J`g/./,lHljHlhNlN&`NLN^ _\ONSTDRGN NV,_ _"_/ / m4 P (hArg @ hNN^NuCALLRGN NV,_pNN^NuFRAMERGNNV,_pNN^NuPAINTRGNNV,_pNN^NuERASERGNNV,_pNzN^NuINVERTRGNV,_ _"_/ m4 PA( pNNN^NuFILLRGN NV m4 PJhBk(HhHhHhHh?. /./(/(/.NN^ _ NDRAWRGN NVH(m4&TJkBkT n P P f HhN` G f$/ /Nܺ0+kl 0kmdBB`\GB?N&_aHFa`@Bg/ / / ??<?<N: S2` H@ Q/?N/ ?/ N Nu/ NLN^ _PONINSETRGNNV,_ _"_"QHi/NN^NuEMPTYRGNNV,_ o"og" P"Q02ISAVf@gf S@f| `B/ _PONN^NuEQUALRGNNV,_pNVN^NuSECTRGN NV,_pN>N^NuUNIONRGNNV,_pN&N^NuDIFFRGN NV,_pNN^NuXORRGN NVH8:$n&n (nB'/ / N0JgEf / / N `/ NV` R"S EnJm 0)ilHhHi?<HnNLfJEg` R"SJEf4 P f. Q f(/ HnN`X0)il0(hm$K`~8QDB?N&_Bg/./. / ??Bg<N</ ?/ N>/ NLN^ _ NDORGNOP NV/2.4. BC n Phm4hl.hm(hl" P fFC`A Xm0 @gAnFC`DC&N^ _PONPTINRGN JoNVH|-OB."n"Q/. Hi?<HnN gR Q gD IC0.2.4N:)M0.N<. i0JVf0)@o N`|.nL>N^ _PONRECTINRGJoNVHxA-HC-I2 n""Bg/. HnHn?<BB'N2 n _nm |`BB|`B.LN^ _PONTRIMRECTNVH8 n "nfg(n T P fHh/. /.N l`nB?<N&_Bn=|/ / HnHnN>.O<$S`/ /. /.NXQ/?N/=GHnN/ ?./ N/ NLN^ _ NMAPRGN NV,_3@3A3B"3|3hA #H _BI3A IDAJw2) BQ#ONN^NuINITRGN NV,_il6imBANu i2) BQ Q3h3|A #HimH04$i3Z6 Cgb8ioilil6)io8)ii0N:0N<K&iLCnES`[`FUDnmF[S`#J3RilL 2<NuN^NuSEEKRGN JoNVH8EAa|&HAar(HA0. gAU@gAU@g AU@gA-H n P-Hn-HA(0A8*0A,0Ap.=[ =\ n f=|0. ngna` @gaa D"E$G4. Hz/.Nu G"FE NFA "n$n .`0"0"eNJ.g" n n nЕH/? NL n n n-J A Pf-I`D=n  K"D$GN&H=[ GNu=n L"E$GNp(H=\ENu"P"Q Q f* A$$4444444"HA Nu-I . nH=@LN^ _NRGNOP ` @g02Agm42`40`4NuBBBC`BB`tv02Amn" @g(Cf40FB2FC`JCg40FB`JBg42FC`4NuJBm Pg402BBAl44`2|`02BBInUJ`442A Pf4NuNVH|(n * > GB0.o *LYMaL>N^ _\ONSORTPOIN$L&M Ѝ@G @2(4`XJRnm jn`YKSmnkmn $&XJYKoҷo H<*KaL<l H<(JaL<NuNVH| n0o6"n &IHYK* $I` XI` g$mn$ H n0L>N^ _PONCULLPOINNVHx(n&n<. "S: T>< BB Fnm-P-h `r=P2(46SCm Al2`Bo4`=A=B=h:ME / ?N T"S SF0` Xg 20(22Q22 S> S0 Gg/ ?NLN^ _ NPACKRGN NVH8(n&n$n S>GR"nQoG2/ ?N S$n "T P fTH""`A .">"> Gf Pf4LN^ _NPUTRGN NVH8No: nC&P8(#h#h n0ioi0(i l3@ 0(io HHi0(i^@HHii l3@ :) iEMoE3E<Jg EmPNHn?< N/.?<N/.?<N?. NJg/.NE>* j EmH`6-KA-HHnHn?N8,.ANHn?NNQ`/ ?N>Q&TJkBm*/.Hk/./.?. /+/+/.f.~NLN^ _NSTDBITS NVH8(m4&T$n.,,f /./*N"n +f +g(/ / /./.?. /,~/,~/.f.~NF`$/ /./.?. /. +hAg @ h NfNLN^ _NCOPYBITSNVH(m4&TJkBmJ gBNf.BN^,//.N0//+/N//+/N//N4//. N( n-X-X . nnH@nn///.N/./+NfHkHkHn/.BgB///,~NHkHk/./.?<Hk /./,~/,~NԦN/N/N`/.NLN^ _ NSCROLLRECNV/ n P"n "Q2.SAm^` (HRB4$IBf(f`*f(gQHDB`$JAgHFB$$IBVgSAlHRBB0. nѐ$n $$_N^ _ NNV n P"n "Q4.Hԉ`HQdjDiHQ`  n n N^ _ NJolNVlHx-O n0(PH@0(h n2(PHA2(hf,/."/././.?./.l/./. /.N&Nj?./.lN>-_l46Cf=B-@-A&n/.Hk n PHh n PHh n PHh?<HnNBg Hn/+N. n0(h=@0(P=@ n0(h=@0(P=@0.S@H=@HD@Jw0.BBQ-O0.S@H=@HD@Jw0.BBBQ-O n2(kAk=A0.AH=@HD@Jw0.BQ-O=|=|=|=|=|=|Bn n P P gTnC0.2.4.N n P P gXnC0.2.4.N n P P gPnC0.2.4.NrJnf n6.n8.nNrB4.kgF Bnv0@@A -Hp$n"0*H-@~2* jҒT-Av n2(j:DEE0j REA-H0+H-@z n=Pt2(k<F0.k SA-H0.HD@=@ nvd"n2. (2 2Q$.~ծ0.nn4 nvd*"n2. (ꨁY ꨁYQծ0.no/./.?.?.?.Nr0.tnm"NZ&n(n$n4. npN .zѮRnt0.tng0.nl`6N.nLN^ _NSTRETCHB0.0;N&N:Nu0.tC#nNNu0.tC#nNNu0.tC#nNNu0.tCN?CN_g n"n$n2. $QNu0.tCNb?CNX_g n"n$n2. $QNu0.tCN,?CN"_g n"n$n2. $QNu0.tCN?CNWCN_g n"n$n&n2. &QNu,Hd +H@"0"F”(Q`R +H@"0Q`6 +H@"0Q` +H@"0FQ`NV,_0Nz:0N<CDCnEPNuX`FUDnmFXPNuN^NuXORSLAB NVHx6. g8.g n"n0. R@H&I0Df ""سe`n4CCg`^.<tЇAQe`Dg`,2 @ e`\ 03. n<N P?N n`0<N @?N ^?N X/.N n/?N /.NLN^ _PONSTDCOMMENV,_ _2"_/ m40(bhb hd P`QNuN^NuSTDGETPINVH"m4"QJ\gR"i\"Q&Q S<.0k@Fj0/ ?< N`,io@k3@/ ?N S0P"n `QLN^ _\ONSTDPUTPI m4 P (hAg @ h$NNVHB (m4&TJ\fN\B?<\N(_'L\BNB?<N"_-I (T("Q2 n""8(BBB8B\B <((BB(8p((((BBB((!(?<NLN^.NuOPENPICTNV,_H(m4&T.+\g4<Nd G P,("P Q0k/ ?N/N/NB\NLNuN^NuCLOSEPICNV,_NN^NuKILLPICTJo`NV`H8(m4&T n0(ho=@0(Po=@C"" n PA0(ho=@0(Po=@C"" KC`p52QBX)n d9| bABBBBB-kBN-_BNz'_A BBp B"< 0 THB0BXB ! B'HnNBf/.N^/+NVA`p56QBXBdBlbLN^ _PONDRAWPICTJoNVH8(m4&Ta> fB. `P| G e@@VGH0;N$$ H|$$$$$$GG0;pN@&.Naf$n/./*,N"$n/.HjHjNX$n/./*0/+N``n|`|`|`GP`GT`G `GD`GF|`lGH`GJ`GL`N'@4Hk4$nHjHjN`&nNr'@$Nj'@(Hk$HkHkNh`a`G8`pG:`\G(`TN.$n%@HjHjHjN(`N$njjlXH@jjlZ/*,BN-W`J.f$n *fa'@0-@$nHk0HjHjN,f a-@`arnajn$n%nHnHjHjN/.A +hg @ h`Gg&g a$njga$nj ` a$$n%@ a<Hn?N$n'j 0Hk0HjHjNv?Hn$n/*$/*(A +hgR @ P`JaA +hg8 @ h`.a$n/*Ax +hg @ h ` aA +hg @ h`azaV?aP?A( +hg @ h`a/.$nHjHjN:/.A +hg @ h`aZ/.$nHjHjN\/.A +hgl @ h`bHn?<N|$nHnHjHjNHnHnHna?JGfB`a/.-n<.n:B?N-WN nJ.g.-P`"a2Hn-W?NHnHn?.NQ`/?N n-PA +hg @ h N/.NJGg`a?JfBgBA +hgp @ h$`fa?BDa*/.A\ +hgN @ h$`D m4"h0(Ar"Q`~Dt0t`@wtCXEWwUOFTOEtOwtUTwtTDTGwEEmUJEUnEELwEz/ ?N`B'/?<NB@NuB'/?<NHNuBg/?<N0NuB/?<N NuJ.f$nHR?<N$n-R-jHnHjHjN _HnNxa:B?N-WN n P0DHp@?N6/.NNuN`N`/.N/.NLN^.NuPICITEM NV,_ m4 P (hfN> @ h,NN^NuGETPICDANV,_ m4 P (hfNL @ h0NN^NuPUTPICDANV,_Ho?<N _JNN^NuPUTPICBYNV,_Ho?<N _J_NN^NuPUTPICWONV,_Ho?<N~.NuN^NuPUTPICLONV,_ _?</N\N^NuPUTPICPANV,_ _"_/ ") m4 P h\ PDfHf PBNFNu!@D!AH/ ?<N0NNuN^NuPUTPICRENV,_//N o P/?N//N.NuN^NuPUTPICRGNVH(m4&T(k\(T. mpg gm2*+(,+,4f8g)E4)F8< NHk:NVLN^ _TONPUTPICVERBNV,_H(m4&TJ\g kBm(k\(T.+PTg<N/N(k\(T)GT.+TXg<Nz/N(k\(T)GX +Pg.>+lRlRHG>+lPlP< N>/N(k\(TB'/+/,NRJf/+/,<N/+NN(m4pLNuN^NuCHECKPICNVH n"n $na$THTITJaLN^ _ NSCALEPT NV,_6)Q4*RBg2IH0nBPNuЁfp0NuN^NuSCALE1 NVH n"n $na$THTITJaLN^ _ NMAPPT NV,_46)B8:*D0BCg2IH4jD@ЁJBjD@D0NuN^NuMAP1 NV,_// // // NpX NhN^NuMAPRECT /WTOA?HNu _>FWN _02@>N _.N _02A>N _02BWAgN _02i>N _02i>N _0"_""N _02i42_0BA2N _20F@2_Qh>N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.NNVH` n B6($."HAAYƒ "h g$qg RACgX`=ALN^ _PONNVH|BA6. "n 8.4CBAg0@qm2`6`0@qm =C` =A`L>N^ _PON B2 _"_/JAg(?04 BJd4m SAQNuSA QNu4 Amܱm0HdSA0HS@"QAfNu0Hd SA0HS@# QAg`NV/ $n $R J0*R@j@40"n"Q2*`Q2*j0 @f0Q2<j`Q$_N^ _PONGETWIDTHNV,_ _$ "_"$A0<!Hg dB"`!`Qn$BNN^NuUNCOMPRENVH ".$n "n$ 8<WgRKQKQn攊DLN^ _ .NFMCOMPRENVH n"H6(hg$B0(gЀ2$I0"aSnLN^ _XNVXORFONTNVH n"H6(hgB0(gSC$I0ZSnLN^ _XNUNVXORFONVH n"H6(hSC0(S@2BBJ4RYQQLN^ _XNHXORFONTNV n 4.2YAYA0@6CC$n Rf4"P qg61CgRAAg@ `N^ _ RA>NHASHOFID _0X>NЁr̀MainProgQDMisc 9 (JoNV/ +n n ( m(HhN m(I0,H/X0H/X0,H/X0,H/XNBXN`N BXBXBXN(_N^.NuPEN3DPOJoNV/ (mAC( )n)n )n$HlHl(NBgHnHl(HnHnN.g ?.?.N@(_N^ _ NOVETO3DJoNV/ (mAC( )n)n )n$HlHl(N>BgHnHl(HnHnNg?.?.N@?.?.N4(_N^ _ NINETO3DJoNVH(mG0+kH/X/<@)_@0+SH/X/<)_D0+H/X/,@)_H0H/X/,DL)_LLN^NuIEWLOOKJoNV nCJ"" mXC NLN^.NuIEWPORTJoNV/ (m)n )n )n)n/./. /<@)_4/././<@)_8N(_N^ _NOOKAT JoNVH..(m//<=͠4g.<=//<@/+ =GBE k @(p g@,f8Bg+$H,HA??<N0<_=@no8<.RE EgBg R@??+N>ng`=D 7G LN^.NuPNCHOOSJoNV/ n h/Bg/./. N.0 _@(p g.H LX@HPP(_N^ _ NETFDIRTJoNV/ n0-8H"(AJll-mJ `0,H".-A (_N^.NuZFROMH JoNV/ (n l!l l!l n f n !l(_N^ _PONELETEBKJoNVH(n ../.p/"( G)h G h&h)K'L G h!L G!LLN^ _ NAKEBKF JoNVH,. F(h . Ї&@ FlH@J@f*// N Д(` F]\g-L``(l Ff-mF``LN^ _PONKFINDCBJoNVH n (h&L(l n g\^g&L`-KLN^ _PONKFLOW JoNVH,. F(PB// N(_&LBl0@?@H*H@g S@gS@gD`f *ޅ// N`h`TJkl F0+jD@HШ (` 0+HІ( LX"D"`& F h/Bg//+N.0 _@"LT!``/ / ?Nž l`ZJg // /N`6Jg // /NҾ m-L`-mFLN^ _ NKCOMPACJoNVH(n >. Gg l @&p g+g K\*///,2Nv l @ p(f/ l @A/<N l @B0,"R@9@"Bg R@??,N> l @&p g< l @BBg/ /N.< l @Jg?<N l @!`LN^ _\ONREEIPN JoNVH(n , lhBg/ N> GfN.gFBg . ??<N<Bg/ ?/,&N:/ H/NB/ /`>Bg??<N>Bg/ ?/,&N:/ H/NB/ H/N-_LN^ _\ONBKNRELGJoNVH&n>. ,. BgBg.HA>@20GRA?? | Ho/ | H/<NB/ H/N (_Ff@B/ H//+N(_FW .Wg B/ ?N(_Ff F N` .f@\]g 8`, \"+ Ҽ^g + 8` F N`/ / N * | HnH Ї-@/ /.H /N`>H +'@ H@?TT.H@H?.HS@gS@gS@g` LT"F"` LX"F"9D` LT"F"LN^ _ NLLOCBK JoNVH>. GwlBg |S@?Bg?<NN>Hn/. Hn"Jnf>Hn?.Hn"Jnf(JfBF`<Hn?.H/HnH/Hn"$JngBn` .=@LN^ _\ONBMOREGRJoNVH(n .. @gS m2/p/" l Ь)@/ /,p /N` Ь)@LN^ _PONNLARGEHJoNVH,.//.<N| F-h(n B-Tع]]gB0@?@H.H@gS@g S@gS@g``` .ڇ``(.-T(` o&L.H@J@f..` 0.@?H. .((-DH@J@f // N$`ǹg~0@?@H.H@S@gS@g6`VJll F0,jD@HШ -@` 0,HІ-@ KX"n"`" F h/Bg//,N.0 _@"KT!/ / ?N: f,Jo .g?<N//. /N-ELN^ _ NBMAKEBKJoNVH(nB/ /0-4| H/N:,0,| @_2-4| H_gv/ /N0-4HД(/ /0-4H"/N00,|S@=@>,` @): @A:)HRGino0,|9@0-4H",)A-l LN^.NuMAKEMORJoNVH&nBg/ /. N<0.F>/ H/<NJG^HǾ_g n (PB/ / n Y( D"D0@?"H@A?PPH +'@LN^ _ NROWHINPJoNVH(n0,R@@</ A/ @?N S@9@9F"=lBG` l @BRGino&TlR0@?@H*H@gU@g `2 *`* l/Bg/ /+N.0 _@"KT!0,"S@9@"`LN^.NuNCLOGIPJoNVH&n (kRf B/ NR(_Rg('T/ / ?.<N Nf ('L(mR-LLN^ _\ONALLOCATJoNV n Y-@ n0@?@Y@=@N^ _PONBDATAOFJoNVH(n&n .HA6@20H , F0@?@>H Ь)@/ /H/NA:\]g&)KLN^ _ NREEBK JoNV/. /.<NjN^ _PONREEH JoNVH&n>.Bg/ /. N8BgBg R@?? X@=@ | @mH n Y(@0.H@?TT/ 0.HЌ/ GH/N< GHЫ'@`0.Ho/ /. ?NN`B/ ?N,Rgt F Y* E=h n Y(@Bg E0@??0@??N>0@U@=@ ET/ LT/?.N9n n "F" EX"n "/ /<NLN^ _ NHANGESIJoNVH(n0.@H",/r/""Ҁ.o / /BgN l"n/ NP0,"S@9@"/ A/?.<N n nl$ nh nhBg/ /. N.< l @Jg?<N l @!,$HR@@$ n\-HLN^ _ NCREATENJoNVH&n ,. k/Bg/ /N.0 _@(p fB/ /Bg//+*NN. k/Bg/ /N.0 _@(p* LXPP@Bg///+.N  gBl/ Bg/ /N.N8`& k/Bg/ /N.0 _@(p L\.l` k$ L\.-GLN^ _PONMAPN JoNVH;| >;|D;|@;|B;|6;|<;|8;|:p+@RBFp+@Np+@J.'@gR$.#@gS (n$0.@A:&H f A)H&`)n&)n*)n .)n2Bl )n ( . r &@p HH&'K'K)K)K/ / /N )@9n)mR0.S@=@BF` @): @A:)HRFinop;@4~=nx` @>RDino/ A/ @?<N S@9@9G"=lBE` l @BREinoB,$B,%-L(LN^ _ NZINIT JoNVB/./. /.?<Bg/.BBBN +_Z+mZVN^ _ NNITHEAPJoNVB/-Z?.Nj-_ N^ _TONEWHANDLJoNVB/.N/.<NN^.NuISPOSEHJoNVB/. N/. ?.NVN^ _\ONETSIZE JoNVN^.NuOCKHANDJoNVN^.NuNLOCKHAJoNV=| N^.NuMCBOFN JoVNVV0.H@gS@g@S@gRFinoBnBg?/- HnN: m P  pf2 m P  "n" m P  "n" n ` n BLN^ _NOCATEFOJo&NV& nCJp@"S@n/. Hn/.?:NHn" n JPn(/. n?Hn&" n JPn nB n RN^ _NZOPENFOJoNVH nCJp@"S@n(n BBBnHnHnHnHn/N~.g0Hn?-A/BHnBg0-H".Ҁ/"=m`,HnHnHnHnHn/NJno 8 `D`~Hn?.A/p/Hn<B"Jng8g Hn?.ڠ"8`.gBHn?.A/p/Hn<B"Hn?.A/p/Hn<B"` .Y-@-nB/- .TT?N-_Jg\ n&P6Hn?. n T/ .T/Hn<B"g Hn?.ڠ"8Jng/-/.NL8`*`8 .gHn/././N~8-nLN^ _ NEADFONTJoNVH(. /HnHn/NbJngB.;nʼ`BHnHn/N&_ f ;nʼB.`l|B/-?<Nv. m h/Bg/-/N.0 _@,0 F\(H()G T* E0@ @g //,N/-/<NRFinoBnBg?/- HnN: m P  I8)n)n LN^ _NASHENTRJoNV nCJp@"S@n/. HnHm?:fHn" n JPo`> n JPl6/. ?-Hn " n JPg`B.B.B./. ?-Hn "N^ _ NPENLIB JoNV/Hn?-/. p/Hn<B" n p0A> @ gRGHn?- . R/H/Hn<B".N^ _PONEADNAMEJoNV/Hn ?-A/p/Hn<B"0.T@@;@Jn g`Hn ?-A/p/Hn<B"=n~`lHn/.NHn ?-A/p/Hn<B"Hn ?-A/p/Hn<B"Hn ./ .//.NRGino.N^ _\ONILLLIBTJoNVH(nB/-?<N+_ ~` m P  BpRG GoHz4/,/N lJPn l?/NLN^.NuNITLIBR FONT.LIBJoNV nCJp@"S@n/. HnHn?:Hn" n JPo`Hn?.Hn "Jng n 0`d n JPlB.B.B./. ?.Hn "/. ?."nAt//.LHn<B" n JPg`/. ?."8 n JPN^ _ NETFILE JotNVlHHzD n/(/N "n iJPg`BGAtppRGns|`|AtppRGB`, m P.HIAt0pHH"A9RGR oAtppRGnq|` B/-?<0N.-_~ n~(P m P.HG)k,'n~AtppRGA-Hz nzAtppRGAtppRGAtppRGAtppRGAtppRGAtppRG.H9@AtppRGA-Hv nvP At0pRGpH Fo|`.HAt0pH RGR.i ..ooR.i ..qoR.i ..so|B`bAt0pRG m PH @rH@Fm|`* m PH @.HCt1pH@RGR.i ..moR oLN^.NuEADHEUR FONT.HEURJoNVHp+@,BmIBTB,B,ACz 0/.HnHmHn?<"p nJPnh nJPlD/.?-Hn "/.?- </Hnp/Hn"$ nJPg`/.?-Bg" nJPg``<hNE. _XON o/><jNE. _XON _/><lNE.N/><NE.Nu/><NE.Nu/><NE.Nu/><NE.L2"_2N _ /><NE.N _/><NE.N _0/><NE.N/><NE./@NuL20/>< NE.N _/>< NE.N0/2/4/ o"oH 0$|&|@SB46Q |"|@L /><NE. _N/><NE.Nu/6/4/ 2/ 0//><NE.& _PON/><NE.Nu/><nNE.Nu/><pNE.Nu/><NE.Nu0/2/4/ o"oH 0$|&|@SB46Q |"|@L /><NE. _N _ /><NE.N/><NE./@Nu/><NE.L2"_2N/><NE./HNu/><NE./HNu/><NE.@Nu _/><NE.N/><NE.?@Nu _0/><NE.N _0/>< NE.N/><NE.?@Nu _0/><NE.N/><"NE./@Nu _ /><$NE.N/><&NE.Nu _ /><(NE.N/><*NE.?@Nu _0/><,NE.N _ /><.NE.N/><0NE.Nu _" /><2NE.N/><8NE.?@Nu/><NE.?@Nu _0/><NE.N _B@/><4NE.NL//><6NE.""""&NL2H/><<NE.222"LxNLH/><:NE.`LH/><NE.222"LxN/><>NE.L""_"N _" /><@NE.N _B@/><BNE.N/><rNE.@Nu _B@/><tNE.N/><NE.@Nu _B@/><NE.N/><NE./@Nu/><DNE./@Nu o/><FNE. _XO"_2N _0/><HNE.N _"0/><JNE.N _"0/><LNE.N _0/><NNE.NLH/><PNE.22222LNLH02468/><RNE.LN"oH02468/><TNE.LL"XON/><XNE./@Nu _ /><ZNE.NL H/><\NE.22222LNN^NuHWINTL 5RӦ^ ( (֛VkPROGRAM Boxes; {Sample program illustrating use of the Graf3D unit by drawing random 3D boxes on a grid. } USES {$U-} %{$U QD/QuickDraw.OBJ } QuickDraw, %{$U QD/Graf3D.OBJ } Graf3D, %{$U QD/QDSupport.OBJ } QDSupport; {$U+} CONST boxCount = 15; TYPE Box3D=RECORD ,pt1: Point3D; ,pt2: Point3D; ,dist: REAL; +END; VAR #heapBuf: ARRAY[0..8192] OF INTEGER; {16k bytes} #GPort1: GrafPort; #GPort2: Port3d; #myPort: GrafPtr; #myPort3D: Port3DPtr; #boxArray: ARRAY[0..boxCount] OF Box3D; #nBoxes: INTEGER; #i: INTEGER; FUNCTION HeapError(hz: QDPtr; bytesNeeded: INTEGER): INTEGER; { this procedure gets called when the heap zone is full } BEGIN "WRITELN('The heap is full. The program must now terminate! '); "Halt; END; FUNCTION Distance(pt1,pt2: POINT3D): REAL; VAR dx,dy,dz: REAL; BEGIN "dx:=pt2.X - pt1.X; "dy:=pt2.Y - pt1.Y; "dz:=pt2.Z - pt1.Z; "Distance:=SQRT(dx*dx + dy*dy + dz*dz); END; PROCEDURE MakeBox; VAR myBox: Box3D; $i,j,h,v: INTEGER; $p1,p2: Point3D; $myRect: Rect; $testRect: Rect; BEGIN "p1.x:=Random mod 70-15; "p1.y:=Random mod 70 -10; "p1.z:=0.0; "p2.x:=p1.x + 10 + ABS(Random) MOD 30; "p2.y:=p1.y + 10 + ABS(Random) MOD 45; "p2.z:=p1.z + 10 + ABS(Random) MOD 35; "{ reject box if it intersects one already in list } "SetRect(myRect,ROUND(p1.x),ROUND(p1.y),ROUND(p2.x),ROUND(p2.y)); "FOR i:=0 TO nBoxes-1 DO $BEGIN &WITH boxArray[i] DO (SetRect(testRect,ROUND(pt1.x),ROUND(pt1.y), 8ROUND(pt2.x),ROUND(pt2.y)); &IF SectRect(myRect,testRect,testRect) THEN EXIT(MakeBox); $END; "myBox.pt1:=p1; "myBox.pt2:=p2; "{ calc midpoint of box and its distance from the eye } "p1.x:=(p1.x + p2.x)/2.0; "p1.y:=(p1.y + p2.y)/2.0; "p1.z:=(p1.z + p2.z)/2.0; "Transform(p1,p2); "myBox.dist:=Distance(p2,myPort3D^.eye); { distance to eye } "i:=0; "boxArray[nBoxes].dist:=myBox.dist; { sentinel } "WHILE myBox.dist > boxArray[i].dist DO i:=i+1; { insert in order of dist } "FOR j:=nBoxes DOWNTO i+1 DO boxArray[j]:=boxArray[j-1]; "boxArray[i]:=myBox; "nBoxes:=nBoxes+1; END; PROCEDURE DrawBox(pt1,pt2: Point3D); { draws a 3D box with shaded faces. } { only shades correctly in one direction } VAR tempRgn: RgnHandle; BEGIN "tempRgn:=NewRgn; "OpenRgn; $MoveTo3D(pt1.x,pt1.y,pt1.z); { front face, y=y1 } $LineTo3D(pt1.x,pt1.y,pt2.z); $LineTo3D(pt2.x,pt1.y,pt2.z); $LineTo3D(pt2.x,pt1.y,pt1.z); $LineTo3D(pt1.x,pt1.y,pt1.z); "CloseRgn(tempRgn); "FillRgn(tempRgn,white); "OpenRgn; $MoveTo3D(pt1.x,pt1.y,pt2.z); { top face, z=z2 } $LineTo3D(pt1.x,pt2.y,pt2.z); $LineTo3D(pt2.x,pt2.y,pt2.z); $LineTo3D(pt2.x,pt1.y,pt2.z); $LineTo3D(pt1.x,pt1.y,pt2.z); "CloseRgn(tempRgn); "FillRgn(tempRgn,gray); "OpenRgn; "MoveTo3D(pt2.x,pt1.y,pt1.z); { right face, x=x2 } $LineTo3D(pt2.x,pt1.y,pt2.z); $LineTo3D(pt2.x,pt2.y,pt2.z); $LineTo3D(pt2.x,pt2.y,pt1.z); $LineTo3D(pt2.x,pt1.y,pt1.z); "CloseRgn(tempRgn); "FillRgn(tempRgn,black); "PenPat(white); "MoveTo3D(pt2.x,pt2.y,pt2.z); { outline right } "LineTo3D(pt2.x,pt2.y,pt1.z); "LineTo3D(pt2.x,pt1.y,pt1.z); "PenNormal; "DisposeRgn(tempRgn); END; BEGIN { main program } "{----- Initialization - Generic to all applications using QuickDraw -----} "QDInit(@heapBuf, @heapBuf[8192], @heapError); { Must do this once at beginning } "myPort := @GPort1; "OpenPort(myPort); "myPort3D := @GPort2; "Open3DPort(myPort3D); "ViewPort(myPort^.portRect); { put the image in this rect } "LookAt(-100,75,100,-75); { aim the camera into 3D sapce } "ViewAngle(30); { choose lens focal length } "Identity; Roll(20); Pitch(70); { roll and pitch the plane } "PenPat(white); "BackPat(black); "EraseRect(myPort^.portRect); "FOR i:=-10 TO 10 DO $BEGIN &MoveTo3D(i*10,-100,0); &LineTo3D(i*10,+100,0); $END; "FOR i:=-10 TO 10 DO $BEGIN &MoveTo3D(-100,i*10,0); &LineTo3D(+100,i*10,0); $END; "nBoxes:=0; "REPEAT MakeBox; UNTIL nBoxes=boxCount; "FOR i:=nBoxes-1 DOWNTO 0 DO $DrawBox(boxArray[i].pt1,boxArray[i].pt2); "Tone(2000, 500); { Beep tone of (1/2000)*10^6 == 500 cycles/sec for 6500 milliseconds } "ReadLn; { Wait until RETURN entered before terminating program } END. GETWIDTHFontMgr GETWIDTHGETWIDTH~NV/ $n $R J0*R@j@40"n"Q2*`Q2*j0 @f0Q2<j`Q$_N^ _PONGETWIDTHvUNCOMPREFontMgr UNCOMPREUNCOMPREFNV,_ _$ "_"$A0<!Hg dB"`!`Qn$BNN^NuUNCOMPRE>FMCOMPREFontMgr FMCOMPREFMCOMPREVNVH ".$n "n$ 8<WgRKQKQn攊DLN^ _ .NFMCOMPRENVXORFONTFontMgr VXORFONTVXORFONT^NVH n"H6(hg$B0(gЀ2$I0"aSnLN^ _XNVXORFONTVUNVXORFOFontMgr UNVXORFOUNVXORFOXNVH n"H6(hgB0(gSC$I0ZSnLN^ _XNUNVXORFOPHXORFONTFontMgr HXORFONTHXORFONTTNVH n"H6(hSC0(S@2BBJ4RYQQLN^ _XNHXORFONTLHASHOFIDFontMgr HASHOFIDHASHOFIDrNV n 4.2YAYA0@6CC$n Rf4"P qg61CgRAAg@ `N^ _ RA>NHASHOFIDjFMROR FontMgr FMROR FMROR  _0X>NЁ FONTMGR .6FMLOCKFOQDMisc FMLOCKFOFMLOCKFOUNLOCKN UNLOCKN HHLOCKN HLOCKN 6FMSWAPFOFMSWAPFOFONTMGR D@0,fJoNVB/./.N-_ nJPn(. gB/-/-BgN-_` /-/-NN^ _ NMLOCKFO^FMCBOFN QDMisc $6000000FMCBOFN &JoNV=| N^.NuMCBOFN CHECKSUMQDMisc $7000000CHECKSUMhJoNVH&n BG .-@|`HGHH@J@>RRio(KTWD@LN^ _PONHECKSUM`ASSIGNDEQDMisc $9000000ASSIGNDE%_CAT %_CAT  DTJoVNVV0.H@gS@g@S@gRFinoBnBg?/-HnN: m P  pf2 m P  "n" m P  "n" n ` n BLN^ _NOCATEFOʀZZOPENFOQDMisc $5100000ZZOPENFOINFO INFO JPOPEN POPEN 0Jo&NV& nCJp@"S@n/. Hn/.?:NHnN n JPn(/. n?Hn&N n JPn nB n RN^ _NZOPENFOxREADFONTQDMisc $2100000READFONT$3100000DECODEFO։FREEH FREEH HALLOCATHALLOCATRCLOSE_OBCLOSE_OB܉$5100000ZZOPENFOREAD_DATREAD_DAT(n$4100000LOCATEFO@ FONTMGR Dr`NJoNVH nCJp@"S@n(n BBBnHnHnHnHn/N.g0Hn?-A/BHnBg0-H".Ҁ/N=m`,HnHnHnHnHn/NJno 8 `D`~Hn?.A/p/Hn<BNJng8g Hn?.N`.gBHn?.A/p/Hn<BNHn?.A/p/Hn<BN` .Y-@-nB/- .TT?N-_Jg\ n&P6Hn?. n T/ .T/Hn<BNg Hn?.NJng/-/.N8`*`8 .gHn/././N8-nLN^ _ NEADFONTFMSWAPNIQDMisc $8000000FMSWAPNISETFDIRTSETFDIRTGETWIDTHGETWIDTHIPNMAPN IPNMAPN HALLOCATHALLOCATh$2100000READFONTB$1100000NTOFILEN$FONTMGR zn`N.JoNVH(. /HnHn/NJngB.;n`BHnHn/N&_ f ;nB.`l|B/-?<N. m h/Bg/-/N0 _@,0 F\(H()G T* E0@ @g //,N/-/<NLN^ _PONMSWAPNI؀FMSWAPOUQDMisc $6100000FMSWAPOUFREEH FREEH PFIPNMAPN IPNMAPN "FONTMGR J@pJoNVH m h/Bg/-/. N0 _@&p K\(H g.,,/-/N/-/NLN^ _PONMSWAPOUhFMMAPFONQDMisc FMMAPFONFMMAPFONFONTMGR 2JoNVH.. GBP(n ,f|0,H@ @fl m P0GJgP0,@@2sg0,@@80< D@ G00,@ @f p,@` p,@` G0 LN^ _PONMMAPFONCHECKCHSQDMisc $9100000CHECKCHSRJoNVH&n.. (n0.H@k S|nA 2IDA0 <f G S.FfB,B, B, B, pk|nA2IDA0 <f Shpk|nA2IDA0 <f Sh pk|nA2IDA0 <f Sh pk|nA2IDA0 <f Sh pk|nA2IDA0 <f Sh ` GB` GBLN^ _NHECKCHSJEVALENTRQDMisc $8100000EVALENTR$9100000CHECKCHS`FONTMGR JoNVH.. B. m P0.&p.g APP GB V. g2/./ /.Hn/N. g S&h, GHR@ G`.gF S"n3h .V2.IA AW.Wg n0( S@ n1@ ` GB(nB,B, B, B, Bl LN^ _NVALENTREVALSPOKQDMisc $0200000EVALSPOKJoNV/ 0.@ @Wrk|nA4JDB0 <Wg n ` n B(nB,B, B, B, Bl (_N^ _NVALSPOKxNTONAME QDMisc $7100000NTONAME $8100000EVALENTR~$0200000EVALSPOK>FONTMGR LJoNVH|0.H@ @W.Vg/./.Hn/N`N n2n8 m P0.Jf n 0 B.`:`/./.Hn/N` n 0 B.`A(HTA&H n LN^ _NTONAME LASTDITCQDMisc $1200000LASTDITCPMAPN PMAPN <$7100000NTONAME * FONTMGR ztb4JoNV/ (nB.Bg/-HnHn/,/.NgFB/-/.N)_Jg.| l-P l-hAC 0+np+@ l0 (_N^ _\ONASTDITCFMSWAPFOQDMisc FMSWAPFOFMSWAPFO$1200000LASTDITCjPMAPN PMAPN T$7100000NTONAME BFMMAPFONFMMAPFON(FONTMGR dL$JoNV/ nBP/. /.N(n gBg n /HnHn/./NgbB/-/.N-_JfBg?-/N gB`T`, n-P n-hAC 0+T+n`Bg n?/N gB`A-H(_N^ _PONMSWAPFOFMFONTMEQDMisc FMFONTMEFMFONTMEFMSWAPFOFMSWAPFO&JoNVH.. B/./.N,JfB.`| F P*(E G0 G1l F0( l G1@pk n|nV2IDA0 <f( G0R@ G0 G0(T@ G1@ G0(T@ G1@`Fpk n|nV2IDA0 <f& G0R@ G0 G0(R@ G1@ G0(R@ G1@ G1l(n0,H@J@f&GBkLN^ _ NMFONTMEFMFONTWIQDMisc FMFONTWIFMFONTWIFMSWAPFOFMSWAPFO"JoNVH&n |B/./.N(_ fB.`d n  pk n|nV2IDA0 <f HT@`(pk n|nV2IDA0 <fHR@|LN^ _NMFONTWIFMCACHESQDMisc FMCACHESFMCACHES"JoNVN^ _PONMCACHESFMADDFONQDMisc FMADDFONFMADDFON%_ADJ %_ADJ %_SING %_SING HALLOCATHALLOCAThFONTMGR n`J6JoNVH nCJp"S@n nCJ""BGB nBP G2_" g m P JfB/-?<0N( m P G'D k(PB, LTC 0Bln 0.H@?N?<N?<T0@ A Cp S@nB` H @7R o||=G`RG`6  g Bn n0 LN^ _NMADDFON.FMDELFONQDMisc FMDELFONFMDELFONFREEN FREEN zFREEH FREEH L(FONTMGR tP:6"JoNVH m P0.JV m P2.0gN/- m P0./0N m P0.IBB,B. A&H/-/Np+@LN^.NuMDELFONFMCLOSELQDMisc FMCLOSELFMCLOSELCLOSE_OBCLOSE_OBFONTMGR 2JoNV/.?-N nJPN^.NuMCLOSEL*FMOPEN QDMisc FMOPEN FMOPEN SETACCESSETACCESFOPEN_DATOPEN_DAT,FONTMGR @ pJoNVACP 0/.HnHmHn?<N nJPg``/.?-BgN nJPN^.NuMOPEN QDFMDATAhHASHENTRQDMisc $3200000HASHENTRHASHOFIDHASHOFIDdFMROR FMROR DFONTMGR j\JoNVH nCJp@"S@nBG.@=@|`BgA0`@G?N>RFinoBnBg?/-HnN: m P  I8)n)n LN^ _NASHENTROPENLIB QDMisc $4200000OPENLIB SET_FILESET_FILExINFO INFO RPOPEN POPEN 0FONTMGR pJ$JoNV nCJp@"S@n/. HnHm?:fHnN n JPo`> n JPl6/. ?-Hn N n JPg`B.B.B./. ?-Hn NN^ _ NPENLIB READNAMEQDMisc $5200000READNAMEREAD_DATREAD_DATf&FONTMGR LJoNV/Hn?-/. p/Hn<BN n p0A> @ gRGHn?- . R/H/Hn<BN.N^ _PONEADNAME|FILLLIBTQDMisc $6200000FILLLIBT$3200000HASHENTRЉ$5200000READNAMEtREAD_DATREAD_DAT^( FONTMGR |F4JoNV/Hn ?-A/p/Hn<BN0.T@@;@Jn g`Hn ?-A/p/Hn<BN=n~`lHn/.NHn ?-A/p/Hn<BNHn ?-A/p/Hn<BNHn ./ .//.NRGino.N^ _\ONILLLIBTINITLIBRQDMisc $2200000INITLIBR$6200000FILLLIBT^$4200000OPENLIB JHALLOCATHALLOCATFONTMGR ( JoNVH(nB/-?<N+_~` m P  BpRG GoHz4/,/N lJPn l?/NLN^.NuNITLIBR FONT.LIB~GETFILE QDMisc $8200000GETFILE CLOSE_OBCLOSE_OBREAD_DATREAD_DATSET_FILESET_FILEINFO INFO LPOPEN POPEN 0JoNV nCJp@"S@n/. HnHn?:HnN n JPo`Hn?.Hn NJng n 0`d n JPlB.B.B./. ?.Hn N/. ?."nAt//.LHn<BN n JPg`/. ?.N n JPN^ _ NETFILE ؀READHEURQDMisc $7200000READHEURHALLOCATHALLOCAT$8200000GETFILE  FONTMGR ^dJotNVlHHzD n/(/N"n iJPg`BGAtppRGns|`|AtppRGB`, m P.HIAt0pHH"A9RGR oAtppRGnq|` B/-?<0N-_~ n~(P m P.HG)k,'n~AtppRGA-Hz nzAtppRGAtppRGAtppRGAtppRGAtppRGAtppRG.H9@AtppRGA-Hv nvP At0pRGpH Fo|`.HAt0pH RGR.i ..ooR.i ..qoR.i ..so|B`bAt0pRG m PH @rH@Fm|`* m PH @.HCt1pH@RGR.i ..moR oLN^.NuEADHEUR FONT.HEUR\FMINIT QDMisc FMINIT FMINIT $2200000INITLIBR$7200000READHEURHALLOCATHALLOCATZHHZINIT HZINIT .$6100000FMSWAPOU($8000000FMSWAPNI"$6000000FMCBOFN MAKE_DATMAKE_DATKILL_DATKILL_DATĉSETACCESSETACCESSIZE_DATSIZE_DATINFO_DATINFO_DAThOPEN_DATOPEN_DATHHFONTMGR f^RL@:2p`<JoNVHp+@BmIBTB,B,ACz 0/.HnHmHn?<N nJPnh nJPlD/.?-HnN/.?- </Hnp/HnN nJPg`/.?-BgN nJPg`` ASCII} #ccPara = 166; {paragraph symbol} #ccSec = 164; {section symbol} #ccCopy = 169; {copyright} #ccReg = 168; {registrata} #ccTM = 170; {trademark} #ccDeg = 161; {degree e.g. Celsius} #ccDag = 160; {dagger} #ccBul = 165; {bullet} #ccPound = 163; {pound (currency)} #ccElip = 201; {ellipsis} #ccSysApple = 202; {apple for Logo} #ccLisaLogo = 0; {apple Logo} #{Current standard Icons in wmfont} #ccCheck = 142; #ccApple = 143; #{Current standared Patterns in sysPat} #ccLreg = 0; #ccLalt = 1; #ccLdash = 2; #ccRreg = 3; #ccRalt = 4; #ccRdash = 5; #ccHreg = 6; #ccHalt = 7; #ccHdash = 8; #ccVreg = 9; #ccValt = 10; #ccVdash = 11; #ccG90f = 12; #ccG90c = 13; #ccG45f = 14; #ccG45c = 15; #ccWhite = 16; #ccXLtGray = 17; #ccLtGray = 18; #ccMedGray = 19; #ccGray = 20; #ccDkGray = 21; #ccBlack = 22; #ccNil = 255; {A non-existant pattern -> generates the missing char pattern} #ccWhiteMask = 255; {Special code for the white mask of a cursor} #{System text families} #sysText = 0; {System text font - TEXT ONLY!} #wmfont = 1; {System icon font -- primarily WM} #sysPat = 2; {system pattern font} #sysCursor = 3; {System cursor font - not character compatible} #tile12 = 4; {proportional} #tile18 = 5; {proportional} #tile24 = 6; {proportional} #p15Tile = 7; {monospaced - 8 lines/inch & 15 characters/inch} #p12Tile = 8; {monospaced - 6 lines/inch & 12 characters/inch} #p10Tile = 9; {monospaced - 6 lines/inch & 10 characters/inch} #cent12 = 10; {proportional} #cent18 = 11; {proportional} #cent24 = 12; {proportional} #p12cent = 13; {monospaced - 6 lines/inch & 12 characters/inch} #p10cent = 14; {monospaced - 6 lines/inch & 10 characters/inch} #elite = 15; {monospaced - 6 lines/inch & 12 characters/inch} #courier = 16; {monospaced - 6 lines/inch & 10 characters/inch} #boldface = 17; {proportional} #calcFont = 18; {calculator font} #p20Tile = 19; {monospaced} #marker = 20; {BG icon font -- for scatter plots} #tile7 = 21; {Filer proportional font} #fIconFont = 22; {Filer icon font} #sysLogo = 23; {system logo font} #devScreen = 0; #famLst = 23; #substitution = -3024; {Font Manager warning that a substitution has occurred} #maxCache = $18000; {maximum # of bytes for fonts. = 96k (hzFM)} #regCache = $9000; {average # of bytes for fonts. = 32k (hzFM)} #minCache = $3000; {minimum # of bytes for fonts. = 12k (hzFM)} {$IFC NOT fmdebug} #fdebug = FALSE; {$ENDC} TYPE #TCc = 0..255; #TStr30 = STRING [30]; #TFam = TC; #TEface = (efaceBold, -efaceItalic, -efaceUnderLined, -efaceOutlined, -efaceShadow); #TSeteface = SET OF TEface; #TDev = -128..127; #TEdev = (edevScreen, ,edevDotMx, ,edevHDotMx, ,edevTyper, ,edevLaser); #TEwhcl = (ewhcl20, -ewhcl15, -ewhcl12, -ewhcl10, -ewhclPS, -ewhclMF, -ewhclMP, -ewhclLCS); #TEskcl = (eskclMPPS, -eskclMPFP, -eskclMFR, -eskclMFI, -eskclApple, {jwp 3/16/83}eskclFQume, {jwp 3/16/83}eskclPQume); #TAdev = PACKED RECORD {Type declaration for "Print Style"} &CASE BOOLEAN OF )TRUE: (dev: TDev); )FALSE: (fOffline: TF; 1CASE edev: TEdev OF 4edevScreen, 4edevLaser: (); 4edevDotMx, 4edevHDotMx: (fHiRes: TF; @fPortrait: TF); 4edevTyper: (fSpoke: TF; @ewhcl: TEwhcl) 0); #END; {TAdev} #TFntid = PACKED RECORD &fam: TFam; &seteface: TSeteface; #END; #TLfntid = PACKED RECORD &fam: TFam; &seteface: TSeteface; &CASE BOOLEAN OF )TRUE: (dev: TDev); )FALSE: (fOffline: TF; 1CASE edev: TEdev OF 4edevScreen, 4edevLaser: (); 4edevDotMx, 4edevHDotMx: (fHiRes: TF; @fPortrait: TF); 4edevTyper: (fSpoke: TF; @ewhcl: TEwhcl) 0); #END; {TLfntid} #TFinfo = RECORD 'ascent, {Distance from baseline to top of font bounding box} 'descent, {Distance from baseline to bottom of font bounding box} 'widMax, {Width of widest character in font} 'leading: TC; {White space between two adjacent lines of text} #END; #TWid = 0..255; #TMpccwid = PACKED ARRAY [TCc] OF TWid; #TPmpccwid = ^TMpccwid; #THmpccwid = ^TPmpccwid; #TPcharStyle = ^TCharStyle; #TCharstyle = PACKED RECORD &hks: TH; &hmpccwid: THmpccwid; &bBold: TB; &bItalic: TB; &bUnderline: TB; &bShadow: TB; &cExtra: TC; #END; #TMpefaceb = ARRAY [TEface] OF TB; #TModifier = RECORD &seteface: TSeteface; &mpefaceb: TMpefaceb; $END; {$IFC fmdebug} VAR #fdebug: TF; {$ENDC} {*******************************************************************************} {Procedures inside Segment "FMInit"} PROCEDURE FMinit #(VAR cError: TC); PROCEDURE FMOpen #(VAR cError: TC); PROCEDURE FMCloseLib #(VAR cError: TC); PROCEDURE FMCacheSize #( lCacheSize: TL; $VAR cError: TC); FUNCTION FMAddFont #( str30: TStr30; (modifier: TModifier; (dev: TDev; %VAR cError: TC) #: TFam; PROCEDURE FMDelfont #( lfntid: TLfntid); {Procedures inside Segment "FontMgr"} FUNCTION FMSwapFont #(VAR lfntid: TLfntid; $VAR cError: TC) #: TPcharstyle; PROCEDURE FMLockFont #(VAR lfntid: TLfntid; (flock: TF; $VAR cError: TC); FUNCTION FMFontMetrics #(VAR lfntid: TLfntid; $VAR finfo: TFinfo; $VAR cError: TC) #: TF; FUNCTION FMFontWidths #(VAR lfntid: TLfntid; $VAR hmpccwid: THmpccwid; $VAR dExtra: TB; $VAR cError: TC) #: TF; PROCEDURE FMMapFont #(VAR lfntid: TLfntid; $VAR cError: TC); {$IFC fmdebug} PROCEDURE FMDebug #( fdbg: TF); PROCEDURE FMDumpHeurTable; {$ENDC} {*******************************************************************************} >IMPLEMENTATION {*******************************************************************************} GRAF3D "OPEN3DPOQDMisc OPEN3DPOOPEN3DPO$%I_FLT %I_FLT |vpbXL@6MOVETO3DMOVETO3DIDENTITYIDENTITYjVIEWANGLVIEWANGLfLOOKAT LOOKAT \VIEWPORTVIEWPORT"QUICKDRA&GRAF3D JoNV/ +n n mHhN mI0,H/N0H/N0,H/N0,H/NNBNNNBNBNBNN(_N^.NuPEN3DPOSETPORT3QDMisc SETPORT3SETPORT3SETPORT SETPORT GRAF3D 0JoNV+n n/NN^.NuETPORT3(GETPORT3QDMisc GETPORT3GETPORT3GRAF3D (JoNV n N^.NuETPORT3 MOVETO3DQDMisc MOVETO3DMOVETO3DMOVETO MOVETO ^CLIP3D CLIP3D NTRANSFORTRANSFOR8GRAF3D ~JoNV/ (mAC( )n)n )n$HlHl(NBgHnHl(HnHnNg ?.?.N(_N^ _ NOVETO3DvLINETO3DQDMisc LINETO3DLINETO3DLINETO LINETO jMOVETO MOVETO ^CLIP3D CLIP3D NTRANSFORTRANSFOR8GRAF3D JoNV/ (mAC( )n)n )n$HlHl(NBgHnHl(HnHnNg?.?.N?.?.N(_N^ _ NINETO3DMOVE3D QDMisc MOVE3D MOVE3D %F_ADD %F_ADD 0$MOVETO3DMOVETO3D4GRAF3D TJoNV/ (m/,/.N/, /. N/,$/.NN(_N^ _ NOVE3D LLINE3D QDMisc LINE3D LINE3D %F_ADD %F_ADD 0$LINETO3DLINETO3D4GRAF3D TJoNV/ (m/,/.N/, /. N/,$/.NN(_N^ _ NINE3D LMOVETO2DQDMisc MOVETO2DMOVETO2DMOVETO3DMOVETO3DGRAF3D 6JoNV/. /. m/($NN^ _PONOVETO2D.MOVE2D QDMisc MOVE2D MOVE2D MOVE3D MOVE3D 0JoNV/. /.BNN^ _PONOVE2D (LINETO2DQDMisc LINETO2DLINETO2DLINETO3DLINETO3DGRAF3D 6JoNV/. /. m/($NN^ _PONINETO2D.LINE2D QDMisc LINE2D LINE2D LINE3D LINE3D 0JoNV/. /.BNN^ _PONINE2D (VIEWLOOKQDMisc $0000000VIEWLOOK%F_SUB %F_SUB v%F_ADD %F_ADD `%F_DIV %F_DIV H,%I_FLT %I_FLT nX>"GRAF3D JoNVH(mG0+kH/N/<@N)_@0+SH/N/<N)_D0+H/N/,@N)_H0H/N/,DN)_LLN^NuIEWLOOKVIEWPORTQDMisc VIEWPORTVIEWPORT$0000000VIEWLOOK&GRAF3D @JoNV nCJ"" mXC NN^.NuIEWPORT8LOOKAT QDMisc LOOKAT LOOKAT %F_DIV %F_DIV T:%F_ADD %F_ADD J0$0000000VIEWLOOK\GRAF3D |JoNV/ (m)n )n )n)n/./. N/<@N)_4/./.N/<@N)_8N(_N^ _NOOKAT tVIEWANGLQDMisc VIEWANGLVIEWANGL%I_FLT %I_FLT %F_SUB %F_SUB xh%_SIN %_SIN P%_COS %_COS H%F_DIV %F_DIV |T>%F_MUL %F_MUL l:%F_LT %F_LT GRAF3D JoNVH..(m//<=Ng.<=//<@/  tpd^JF:~nV>$1000000CODE |GRAF3D 2tJoNVH nCJ""" nCJ"""B.(m/./,4N/,PN-_/./,8N/,TN-_/,JoNVH(.//JoNVH(.//JoNVH(.//lCALLARC CALLARC 6JCALLCBMOCALLCBMOnCALLCHECCALLCHEC"CALLCHOOCALLCHOO"CALLDRAWCALLDRAW"CALLERR CALLERR o CALLERS CALLERS "CALLFINDCALLFINDnЂCALLFREECALLFREEnCALLFSELCALLFSELnCALLGENCCALLGENCn؂CALLGENICALLGENInCALLHEURCALLHEURoCALLHILICALLHILInCALLKEYTCALLKEYT"CALLOVALCALLOVAL3‚CALLPOLYCALLPOLYB,CALLRECTCALLRECT#~CALLRGN CALLRGN E~CALLRRECCALLRREC2lCALLSEQ CALLSEQ nCALLTEXTCALLTEXTHCALLWINDCALLWIND"CBOFN CBOFN oCHARWIDTCHARWIDTCHECKPICCHECKPIClCLIPRECTCLIPRECT CLOSEPICCLOSEPICanCLOSEPOLCLOSEPOLC6CLOSEPORCLOSEPOR &CLOSERGNCLOSERGNGCOLORBITCOLORBITCOLORMAPCOLORMAP.COPYBITSCOPYBITSUւCOPYRGN COPYRGN HCULLPOINCULLPOINRCURSORDICURSORDIpCURSORHICURSORHIZCURSORIMCURSORIM@CURSORINCURSORINCURSOROBCURSOROBЉCURSORSHCURSORSHDIFFRGN DIFFRGN JDIFFSCANDIFFSCANQb&DISPOSEHDISPOSEHi~iaaMKIGGNDISPOSERDISPOSERG<DOLINE DOLINE DORGNOP DORGNOP J΂DRAWARC DRAWARC 7DRAWCHARDRAWCHARDRAWLINEDRAWLINEDRAWPICTDRAWPICTaDRAWPOLYDRAWPOLYDDRAWRECTDRAWRECT$>DRAWRGN DRAWRGN F>DRAWSLABDRAWSLABDRAWSTRIDRAWSTRI2DRAWTEXTDRAWTEXTXDRTEXT DRTEXT ΂DSHRT DSHRT n~EMPTYRECEMPTYREC%؂EMPTYRGNEMPTYRGNIEQUALPT EQUALPT EQUALRECEQUALREC%EQUALRGNEQUALRGNJERASEARCERASEARC6ERASEOVAERASEOVA4&ERASEPOLERASEPOLBERASERECERASEREC#ERASERGNERASERGNEERASEROUERASEROU2ԂFILLARC FILLARC 6FILLOVALFILLOVAL4VFILLPOLYFILLPOLYBFILLRECTFILLRECT$FILLRGN FILLRGN FFILLROUNFILLROUN3FINSET FINSET nRFIXMUL FIXMUL FIXRATIOFIXRATIOFIXROUNDFIXROUNDvFMCOMPREFMCOMPREqFMFONTMEFMFONTMEFMROR FMROR r‰FMSWAPFOFMSWAPFO҂FORECOLOFORECOLOPFRAMEARCFRAMEARC6FRAMEOVAFRAMEOVA3FRAMEPOLFRAMEPOLB`FRAMERECFRAMEREC#FRAMERGNFRAMERGNEFRAMEROUFRAMEROU2FRPOLY FRPOLY DbFRRECT FRRECT $FRRGN FRRGN FFSWAPINNFSWAPINNoGETCLIP GETCLIP GETFONTIGETFONTI$GETPEN GETPEN ƂGETPENSTGETPENSTjGETPICDAGETPICDAiGETPIXELGETPIXEL҂GETPORT GETPORT HGETWIDTHGETWIDTHpdGLOBALTOGLOBALTO ނGRAFDEVIGRAFDEVI HASHOFIDHASHOFIDrXHIDECURSHIDECURSRHIDEPEN HIDEPEN .HIWORD HIWORD >HXORFONTHXORFONTr IBINSEARIBINSEARoINITCURSINITCURSINITGRAFINITGRAFINITOVALINITOVAL=INITPORTINITPORTINITRGN INITRGN NINSETRECINSETREC&(INSETRGNINSETRGNIJINSETSCAINSETSCAQINVERTARINVERTAR6ʂINVERTOVINVERTOV4>INVERTPOINVERTPOBINVERTREINVERTRE#INVERTRGINVERTRGEINVERTROINVERTRO2IPNMAPN IPNMAPN o(KILLPICTKILLPICTaʂKILLPOLYKILLPOLYCLEFTMASKLEFTMASKLINE LINE .LINETO LINETO LOCALTOGLOCALTOG LOCKHANDLOCKHANDjgxiP_‚LONGMUL LONGMUL >LOWORD LOWORD ZMAPPOLY MAPPOLY CMAPPT MAPPT mvMAPRECT MAPRECT mMAPRGN MAPRGN MRMOOV MOOV zMOVE MOVE zMOVEOVRGMOVEOVRGoނMOVEPORTMOVEPORT ȂMOVETO MOVETO Z(NEWHANDLNEWHANDLgpiH``MKIGGBNEWRGN NEWRGN GOBSCURECOBSCURECȂOFFSETPOOFFSETPOC΂OFFSETREOFFSETRE&OFFSETRGOFFSETRGIOPENPICTOPENPICT`OPENPOLYOPENPOLYBOPENPORTOPENPORTOPENRGN OPENRGN GbPACKBITSPACKBITSWPACKRGN PACKRGN RPAINTARCPAINTARC6PAINTOVAPAINTOVA4PAINTPOLPAINTPOLBxPAINTRECPAINTREC#ʂPAINTRGNPAINTRGNEʂPAINTROUPAINTROU2PATEXPANPATEXPANLPENMODE PENMODE PENNORMAPENNORMARPENPAT PENPAT *PENSIZE PENSIZE PICCOMMEPICCOMME`PICITEM PICITEM cPORTSIZEPORTSIZE PORTWORDPORTWORDPREGGLOBPREGGLOBn@PT2RECT PT2RECT 'lPTINRECTPTINRECT'PTINRGN PTINRGN K΂PTTOANGLPTTOANGLA PUSHVERBPUSHVERB#4PUTLINE PUTLINE !PUTOVAL PUTOVAL 4PUTPICBYPUTPICBYiPUTPICDAPUTPICDAiĂPUTPICLOPUTPICLOj6PUTPICPAPUTPICPAjXPUTPICREPUTPICREjvPUTPICRGPUTPICRGj҂PUTPICVEPUTPICVEkPUTPICWOPUTPICWOjPUTRECT PUTRECT 'PUTRGN PUTRGN SʂPXHCS PXHCS nȂQDSWAPFOQDSWAPFORANDOM RANDOM RECTINRGRECTINRGL6RECTRGN RECTRGN HRGNBLT RGNBLT ,RGNOP RGNOP OBRIGHTMASRIGHTMASւRSECT RSECT &SCALEPT SCALEPT mSCREENADSCREENADSCROLLRESCROLLREV~SECTRECTSECTRECT&LSECTRGN SECTRGN JnSECTSCANSECTSCANQ\SEEKRGN SEEKRGN NdSETCLIP SETCLIP nSETCURSOSETCURSO"SETEMPTYSETEMPTYH^SETORIGISETORIGI SETPENSTSETPENSTSETPORT SETPORT *SETPORTBSETPORTB hSETPT SETPT lSETRECT SETRECT %SETRECTRSETRECTRH~0SETSIZE SETSIZE a`Z`tSSjSPrHH.C5("SETSTDPRSETSTDPR TSHIELDCUSHIELDCU~SHOWCURSSHOWCURShSHOWPEN SHOWPEN LSLABMODESLABMODEԂSLOPEFROSLOPEFRO?SLOPES SLOPES ?\SORTPOINSORTPOINQSPACEEXTSPACEEXTSTDARC STDARC 5STDBITS STDBITS THSTDCOMMESTDCOMME_zSTDGETPISTDGETPI_STDLINE STDLINE dSTDOVAL STDOVAL 30STDPOLY STDPOLY ASTDPUTPISTDPUTPI`$STDRECT STDRECT "ȂSTDRGN STDRGN E STDRRECTSTDRRECT1̂STDTEXT STDTEXT STDTXMEASTDTXMEADSTRETCHBSTRETCHBX~STRETCHRSTRETCHR^rSTRINGWISTRINGWISTUFFHEXSTUFFHEX<SUBPT SUBPT <SWAPOUTNSWAPOUTNoTEXTFACETEXTFACETEXTFONTTEXTFONTTEXTMODETEXTMODETEXTSIZETEXTSIZEԂTEXTWIDTTEXTWIDTւTRIMRECTTRIMRECTLЂUNCOMPREUNCOMPREpڂUNIONRECUNIONREC' UNIONRGNUNIONRGNJUNIONSCAUNIONSCAQfUNLOCKHAUNLOCKHAjgil_ւUNPACKBIUNPACKBIX*UNVXORFOUNVXORFOqVALOFFIEVALOFFIEnVXORFONTVXORFONTqfWAND WAND nFWHERE WHERE nWNOT WNOT n,WSHLFT WSHLFT nfWSHRT WSHRT nrWXOR WXOR n4XORRGN XORRGN JXORSCAN XORSCAN Q8XORSLAB XORSLAB ^,rNV,_ m4HhNNN^NuINITCURSNV,_ o?(B?(@?<HPHh N.NuN^NuSETCURSONV,_NN^NuHIDECURSNV,_NN^NuSHOWCURSNVH n 0(n ?0n?0(n ?0(n?NLN^ _PONSHIELDCUNV,_NN^NuOBSCURECNV,_ _ .NN^NuBITAND NV,_ _ ".NN^NuBITXOR NV,_ _ F.NN^NuBITNOT NV,_ _ .NN^NuBITOR NV,_ _2jDA ` .NN^NuBITSHIFTNV,_ _"0F@"_1VDNN^NuBITTST NV,_ _"0F@"_NN^NuBITSET NV,_ _"0F@"_NN^NuBITCLR NV,_ m40xBN>r o !_!_ m4"o BYA"2""""//N@"o m4/(~/)N?,"oC BBp""B"2""BYB2BYB"!"BBBBB.NuNV,_ o/(N> o/(N=.NuN^NuCLOSEPOR"oAP"A"Ab"A(`"A)"A,H"A8,"A;"AJ"AU"A"AVP"AV".NuNV,_H m4 P"o0(Y0( YL.NuN^NuLOCALTOGNV,_H m4 P"o0(Y0( YL.NuN^NuGLOBALTONV,_pNN^NuGRAFDEVINV,_ m4 .NuN^NuSETPORT NV,_ m4"o".NuN^NuGETPORT NV,_ m4 PA"o 0 .NuN^NuSETPORTBNV,_ m4 P0(o1@0(o1@.NuN^NuPORTSIZENV,_ m4 P0(h o2(hoh hhh .NuN^NuMOVEPORTNV,_ m4 P /g<0/h2/hh hhh hhhh/(??N=.NuN^NuSETORIGINV,_ _"m4"Q/)/N+Dlg<N]?N]4(k\(T9G+F,g<N\N\(k\(TG>+Hlg<N\?N\(k\(T9G>+Jlg< N\?N\(k\(T9G.+Lg<N\/N\(k\(T)G.. *.f"g"<N\b/N\/N\(k\(T)G)E"*+0& g<(N\./+0N\n`8 f <)N\`Jf <*N\`<+N[N[HEN[N[/.?N[(k\(T)k0&?/./. /.NLN^ _NSTDTEXT NV,_ _/</</ m4 P (hA@g @ PNN^NuCALLTEXTNV,_pDN(N^NuTEXTFONTNV,_ m4 PoF _TONN^NuTEXTFACENV,_pHNN^NuTEXTMODENV,_pJNN^NuTEXTSIZENV,_ m4 P!oL.NuN^NuSPACEEXTNV,_?<HoN* _TONN^NuDRAWCHARNV,_ oB@?/N.NuN^NuDRAWSTRINV,_ o0/?/N _PONN^NuDRAWTEXTNV,_Bg/?<?<N>?_ _TONN^NuCHARWIDTNV,_"_ _B@/Bg?/ NN^NuSTRINGWINVBnBg?.oN n /-|-|HnHnHn m4 P (hfN*` @ h(N2=AN^ _PONTEXTWIDTNVH8Bn(m4&T)kLTC2D2JFJkBZ2 n" n "BHnN)WP(_ nBBJgl ll,H1@ n  n *+Lg4BBB?.?.NB?,?,NN/N* m4!ET4.ox$l$R, HJf0@ g j`TB n"J6*8*B@`* fۮDo0R@Cm@01 @g@@Qn=ALN^ _NSTDTXMEANVH8 m4I6-L n"20-A)X)XBHn/ N&_J\(g6(XK8880B'HnG/ HnNJLN^.NuQDSWAPFONV-|-|BBHnHn/. m4 P (hAg @ h(NJ_ m4 hP"n( HiB@( gRQi .g002020202N^.NuGETFONTIJoTNVTHx-O(m4&TBg?.o^/.Hn HnHnXND2(lPJg<=A-k0 k2JkBm$l$R0.j=@j=@0.=@@ n-n-n +TFP2+XV . VgHB. .-@xn=@~H@n =@| .-@n =@H@n=@HnHnHnxNZ&HnHk k PHh k PHh?<HnNgRA-H2*A=A=jJ.gJlfJl f kHfx k P P fl k P P gB'/+HnN8zJgN0.noѮ0.no=@0.kЫ-@=k=k Hn/+N`TB.0.k @@ k =@2.@ITA6.=CI=A0HD@JwSCB-OBQ-OBC0*0*@A-HT0< jo0*R@jm@ nT:0 EgE, HEBE m4ڨT-Ed0.j=@`=|bSn n-H f ".dӮ``D@jo0*R@jm@ nT:0 Eg2141Ao6Kn`CJ.g*nonlno4.nl 0.C@@n֔nH|:AE(nEAAUA*n20AN6<0N84n6n>.FAg`SFg E, n`Snn>.`jJ.gN`bBn`BB,` n2.ڐ@ ␁QQBB,g<"n6.ؒKSC<.BDB0H:EH IYH2 UH3QQJ, g n2.0*4*"H$H Bmfg0D@Jw/ GISA4@ &␁Q I@ #㐀FQ&_0.Hn֐GS@H`B`Q0k N`=| -k-k A-HA 000 EA 0 BC, g0.HD@Jw0.S@B-OBQ0.S@ n/ Q-OBC4 n2.ڐ@ ␁QQ$n"n I nQ-JXn-np-ntXnt-nph-ntlSnhSnjSnlSnnJ.gHnhHnHnxNUHnHnHnpHnh0+H@?/+/+HnN?r-nYnHnHnHnHn0+HJ, gD@@?/+/+HnN?6.nLN^ _NDRTEXT NVHNRoxB'NQ~ (k\(T +0*fRG<. @0HFf:.k00HEfTGNP<f/+0NPvf /.NPh` NPNP(k\(T)n*/.NLN^.NuSTDLINE NV,_ m4 P (hANg @ hNN^NuLINETO NV,_ m4 P0(2o0(0oNN^NuLINE NV,_ _"m4"Q#_0NN^NuMOVETO NV,_ _02"m4"Qi0i2NN^NuMOVE NV,_H(m4&T./,+0Jdg4"l^ Q0 @ f!X@!X@0l\ml\/ ?,\N`J`g///,lHljHlhN//Np'G0L.NuN^NuDOLINE NV,_ m4 PShBNuN^NuHIDEPEN NV,_ m4 PRhBNuN^NuSHOWPEN NV,_ m4 PA0"o""2"".NuN^NuGETPENSTNV,_ m4 PA0"o 0 .NuN^NuSETPENSTNV,_ m4 P"o"0.NuN^NuGETPEN NV,_ m4 P1o61o4.NuN^NuPENSIZE NV,_p8NN^NuPENMODE NV,_ m4 PA:"o .NuN^NuPENPAT NV,_ m4 P!|41|8p!@:!@>NuN^NuPENNORMAJo@NV@H|-O-MJ m4&PJkBmp-KF0+8@ @f\?+8Hk:Nj-_@=_D*K$m$R&m&S2. 4.6.8. CoCDoDm6m4=A=B=C=DHnHmHjHk?<Hn|N XgHn|/-*nJN@*nF2. 4.6.8. BgAnpmj 4f" n@ g ff R f S gHmHmHn|Hn|?-8Hm:/-/-=| zAz-HvHnv*nJND`FCD0m4jo4jl,=Bp=|r-npl0-6onl<-4oB?W?WN.-GhBBg?/N, ѮpѮlJkp l߮p`Snl`l m߮l`Rnp2.|4.~6.8.ng0n*HEHEBE,چۮpۮl=|=|=|=|4.~m Bm =BZ0.BH=@XHD@Jw0.XBQ-O\Bnt R gTnt JC0.~2.4.ZN/ S gXnt KC0.~2.4.ZN.Jntf n\6.~nZ8.nZN>2.|mҭm JH҂-ATB4.DgFN\-HN4- n@C*nJN*nF>.|OG?,6p2.Znpnln~n=n|RNl2.p4.l nN"nT$n\G|NXGG?,6p0-HѮT .hѮpѮlRnR0.Rnm*nJNV.nL>N^ _PONDRAWLINE0.t0;N 2Nu0.RCN.-i\Nu0.RCN.-i\Nu0.RCN-CN- n"n$n\2.X $QNu:.DJ@f E E n`AfaN<4.m 0N 6J E mVg,FFFCAg\BSBgJd8SB`((UBngCT` Ag\|SBgJd\SB`FFUBngCT`Ag\|SBgJd8SB`((UBngCT`Ba>N2.n|SA E mgF@TQ`TQ`TQ`x2.|4.~(m0m>-0m 2INuNVH84.8.Bg0DjD@2.njDAAo0R@H&n(n T nPo@0/ ?N4.&S2.6.Af 6666`tnCD<B?W?WN.=B=| ѮJk l߮` lRn:ng 66:.66RF߮FfDg6666 n8LN^ _NPUTLINE NVH. NIDoNH&p0G/.NG/.Jf J`g/./,lHljHlhNNt`NN LN^ _\ONSTDRECT NV,_ _ o& m g?<Hk(`?<Hk `?< Hl`?+8Hk:NN^NuPUSHVERBNV,_ _"_/ / m4 P (hA.g @ hNN^NuCALLRECTNV,_pNN^NuFRAMERECNV,_pNN^NuPAINTRECNV,_pNN^NuERASERECNV,_pNzN^NuINVERTRENV,_ _"_/ m4 PA( pNNN^NuFILLRECTNV m4"PJiBm(HiHi/./.?. /./)/)/(~NN^ _ NDRAWRECTNV m4 PJhBm"n-Y-YC4(60)=@B=@2)=AB=AAl4(40=@B=@2)=AB=AAl=n=n=n=na>=n=n=na*=n=n=na=n=n=na`2 m4"PHiHiHnHn?)8Hi:/)/)/(~NNuaN^.NuFRRECT NV,_ _" "_""NN^NuSETRECT NV,_ "_ _f f`B/NuN^NuEQUALRECNV,_"_ _02XlXlB`NN^NuEMPTYRECNV,_ _20"_YYYYNN^NuOFFSETRENV,_ _20"_YYYYNN^NuINSETRECNV|/./. ?</.afB.N^ _ NSECTRECTNV,_NVHx@C 0o> Y2468S@`" YXl2(Xl4(Xo6(Xo8(Ao BoQ`BABBBCBD n00000. H\@ALN^ _NN^NuRSECT NV,_ o "o0Qo0H@0(io0)2(il2)HA2(il2) o _ NN^NuUNIONRECNV,_ o0/2/ @lA1@1A0/ 2/@lA01A _ NN^NuPT2RECT NV nB.0.hmhl0. Pm hl|N^ _PONPTINRECTNV n "n0@QoQH /.?NL n "n"QP n"2222"N^ _NPUTRECT JoNVH|-M$n&n(n*n0+So=@v0l=@0m=@=l=mBG0. gFGg&4- nC*nN|*n>OG?,6p`p f:0.nn0m0*l2+mAlDC`0.S@nnDnDn<+m2*lAF0.(TFAA-L2+m0.*U0AA-M2N88A0+koA2ND:A=AJCjA-L-ME0. fJFfJnoCJCj$C`@ 2@@JnfACN24.N(n-L` XGG?,6p*n-MSnfL>N^ _NBITBLT |&^pz\0AFAUA:rSBgDÚJd;$SB`+$+$UBng`&0AFAUA:rSBgJd:SB`**UBngE ,쨿@AFAUA:rSBng`$E ,쨿@AUrSBng`E ,쨿@AUrSBng`E ,쨿@AF@UrSBng`E:FE6.4.A0EF:XGG?<6pSBf`0AFAUA:rSBgJd:SB`**UBngEAFAUA:`tE0A]rSBng``0A]rSBgJd]SB`UBngEA]`6E0AF@]rSBng` Copyright 1983 Apple Computer Inc.Jo2NV2H|-Ot-M4?./.N -_=_"n"Q$n $R&n&S(n*n"/ HmHiHjHk?<HnlNgHnl/-*n4N*n"0<QRSfB$nA80.lTR00.nlj1@/.&/ /Hnl?./.*n4N`2.nmAm=A`0.rAH=@^HD@Jw0.^BQ-Of=|=|=|=|=|=|Bnj Q gTnj IC0.n2.r4.`N R gXnj JC0.n2.r4.`N S gPnj KCx0.n2.r4.`N njf-nf` njf-nf` njf-nf=nlT=npR=|P=|N0-H-@F-nfbB4.kgFB0@@A -H@g*4- nC*n4N**n">.lOG?,6p`$n&n&0+H-@J fL0m2mAmN^ _"NRGNBLT 0.j0;N:,t0.DCNNu0.DCNNu0.DCxNNu0.DCN=A2CNxn2g n"n$nf2.^ $QNu0.DCNJ=A2CxN>n2g n"n$nf2.^ $QNu0.DCN=A2CxNn2g n"n$nf2.^ $QNu0.DCN=A2CNʃn2CxNn2g n"n$n&nf2.^ &QNu@h +H@"N0"NF•*NQ`2 +H@"N0NNQ` +H@"N0NNQ` +H@"N0NFNQ` "F•*Q` Q` Q` FQ`NVH.N:@o8N9" k\ P .Lg!@L/< N7N80p@G/. N8b/. Jf$J`g/. /./,lHljHlhNH<`B'/.NBg?<hNLN^ _ NSTDRRECTNV,_ _""_/ // m4 P (hA@g @ h NN^NuCALLRRECNV,_pNN^NuFRAMEROUNV,_pNN^NuPAINTROUNV,_pNN^NuERASEROUNV,_pNvN^NuINVERTRONV,_ _"_/ m4 PA( pNJN^NuFILLROUNNVH. N8oN7pPG/.N7 n0(h=@0(P=@/Jf"J`g//./,lHljHlhN<`B'/.NBg?<hNbLN^ _\ONSTDOVAL NV,_ _"_/ / m4 P (hARg @ hNN^NuCALLOVALNV,_pNN^NuFRAMEOVANV,_pNN^NuPAINTOVANV,_pNN^NuERASEOVANV,_pNzN^NuINVERTOVNV,_ _"_/ m4 PA( pNNN^NuFILLOVALNVH|&n&S$K n "J n/.Hn?.?.N=n=n0.@n=@ nhPn=@<.:.N:.NnmnmBHn?N d:.ܺngNb:.NZ=n:.ngNF:.N>=nRFnm:.N(:.N n 0L>N^ _NPUTOVAL m*ʓH n0/.? NL$n$Rʷgkf kfYKNu66NuNVH .N6Lo&N5.p`G/. N4?. N4$?.N4 n 0(h=@0(P=@/Jf<`B'/.N?. ?.NLN^ _ NSTDARC NV,_ _""_/ // m4 P (hAVg @ hNN^NuCALLARC NV,_pNN^NuFRAMEARCNV,_pNN^NuPAINTARCNV,_pNN^NuERASEARCNV,_pNvN^NuINVERTARNV,_ _"_/ m4 PA( pNJN^NuFILLARC JoNVH|-O-M m4&PJkBm-K0.gj n D@=@ @h]0.@ @f?./. N-_ =_*n$m$R&m&S/.HmHjHk?<HnNgxB.J.gD0. HhH@J@j@h=@ n @hm@h=@ n0h@=@0(h@=@0(h=@0(P=@B?.?.N.B?. N B//NΌ-_B?.N B//Nr-_<.HFBF>.O0.-@0.n -@0.-@0.nޜ-F0. @l@Z`@D@=@0. @l@Z`@D@=@0. @nm nZ W` 0.܀nZ/.Hn(?.?.N0.@n(=@ nhPn=@=|RJ.gb n4m46(m4ClL0(m62(m6Al8=@~=A=B|=CHn|HnR0.m6m6?0.m4m4?NHn/-*nN*n2.4.6.8.=|=|=|=|4.m Bm =B0.BH=@HD@Jw0.BQ-OBn R gTn JC0.2.4.N S gXn KC0.2.4.NJn f n6.n8.nN#2.mҭm JH҂-A B4.gFN<-H4- n C*nNȜ*n>.OG?,6p2.nnn.n2nXn\nn=n( 0. nmnmHn(?NfHnR?N\nfdJ.g^DnDnB.0. @nm n f`0.܀nj0.=n=@ .-n-@ .-n-@0. nmrJ.fVNJ.f0. nRm6nTl.`2..Jnj nl2.=A4.2Jnj no4.=B0. nRmnTl0.XJnj no0.=@0.\Jnj nl0.=@ҲBl4.aX2.4.`0.nj nonf4.X`0.ذnf 2.\4.a2..4.a 2.4.2`Z n"n $nGNBmB0.nj: no02..a2.4.2`2..4.Xa2.\4.2a` 2..4.2aXGG?,6p0-HѮ .Ѯ .ѮRn 0. nm*nNN.nL>N^ _NDRAWARC 0. 0;N 2Nu0. CN-iNu0. CN-iNu0. CNCN n"n$n2. $QNuNVH n"n 23h4. lBB2.lBA0(h@o40(P@o23h Bi 3hBi0H@B@ѩ  pA3@0HЀS#@BBB??Nȴ/HiN )Ѐ#@& )р#@"L?N^ _ NINITOVALNVH$n 0.Rmjl~&<$* "*(*` ԃA"C@ӈӈA*C"@ӈӈn` ҃A*C"@A"C@m%B %A0*R@H們TjL?N^ _\ONBUMPOVALNV,_ _0HH@J@j@H @ho @D@.N.DNN^NuSLOPEFROx kfo#(-$16j;?DIhNDS.X&]-bEgnlqw`|p@ANފ7 Q&1<"GS`[m{5hwn $>[y[zEV|hTb%PQ$ nL9J0NV,_ /[jDA2<_0<AJk0.?@NuN^NuANGFROMSNVH(n0,T@2. @0,l@>.@f JAoP0<`LB??NŠ,B0,T?0,l?Nņ B//NP Bg/NN0JGj @ @hfB@ n0LN^ _ NPTTOANGLNVH8. N*boN)DppGN("/.N($nJf/ N`2 RHh k PHh k PHh?<HnNxg / N"NLN^ _\ONSTDPOLY NV,_ _"_/ / m4 P (hAbg @ hNN^NuCALLPOLYNV,_pNN^NuFRAMEPOLNV,_pNN^NuPAINTPOLNV,_pNN^NuERASEPOLNV,_pNzN^NuINVERTPONV,_ _"_/ m4 PA( pNNN^NuFILLPOLYNV,_N:B?<N"_/I m4!I^1|\ P!|d"Q2 BBNuN^NuOPENPOLYNV,_H(m4 TBd(l^ T>BB<F Ng:2468SF`0Al2Bo40Cl6Do8Q TA0000/ ?NNרLNuN^NuCLOSEPOLNV,_N|N^NuKILLPOLYNV,_ _02"_"Q4UBJSBYYQNN^NuOFFSETPONVH8$n &n f *g0(n(THl/ / N)>G O ` / / / N)2XLQLN^ _ NMAPPOLY NVH(n T>G Og/( N|SG` T/0`XFNQLN^.NuFRPOLY NV/ m4 PJhBk:N/.N n P/( NBN,(WN/ ?. /.NP/ NHLN^ _ NDRAWPOLYNVH8. N'oN%0<GN$/.N%/.NJf J`g/./,lHljHlhNlN&`NLN^ _\ONSTDRGN NV,_ _"_/ / m4 P (hArg @ hNN^NuCALLRGN NV,_pNN^NuFRAMERGNNV,_pNN^NuPAINTRGNNV,_pNN^NuERASERGNNV,_pNzN^NuINVERTRGNV,_ _"_/ m4 PA( pNNN^NuFILLRGN NV m4 PJhBk(HhHhHhHh?. /./(/(/.NN^ _ NDRAWRGN NVH(m4&TJkBkT n P P f HhN` G f$/ /Nܺ0+kl 0kmdBB`\GB?N&_aHFa`@Bg/ / / ??<?<N: S2` H@ Q/?N/ ?/ N Nu/ NLN^ _PONINSETRGNNV,_ _"_"QHi/NN^NuEMPTYRGNNV,_ o"og" P"Q02ISAVf@gf S@f| `B/ _PONN^NuEQUALRGNNV,_pNVN^NuSECTRGN NV,_pN>N^NuUNIONRGNNV,_pN&N^NuDIFFRGN NV,_pNN^NuXORRGN NVH8:$n&n (nB'/ / N0JgEf / / N `/ NV` R"S EnJm 0)ilHhHi?<HnNLfJEg` R"SJEf4 P f. Q f(/ HnN`X0)il0(hm$K`~8QDB?N&_Bg/./. / ??Bg<N</ ?/ N>/ NLN^ _ NDORGNOP NV/2.4. BC n Phm4hl.hm(hl" P fFC`A Xm0 @gAnFC`DC&N^ _PONPTINRGN JoNVH|-OB."n"Q/. Hi?<HnN gR Q gD IC0.2.4N:)M0.N<. i0JVf0)@o N`|.nL>N^ _PONRECTINRGJoNVHxA-HC-I2 n""Bg/. HnHn?<BB'N2 n _nm |`BB|`B.LN^ _PONTRIMRECTNVH8 n "nfg(n T P fHh/. /.N l`nB?<N&_Bn=|/ / HnHnN>.O<$S`/ /. /.NXQ/?N/=GHnN/ ?./ N/ NLN^ _ NMAPRGN NV,_3@3A3B"3|3hA #H _BI3A IDAJw2) BQ#ONN^NuINITRGN NV,_il6imBANu i2) BQ Q3h3|A #HimH04$i3Z6 Cgb8ioilil6)io8)ii0N:0N<K&iLCnES`[`FUDnmF[S`#J3RilL 2<NuN^NuSEEKRGN JoNVH8EAa|&HAar(HA0. gAU@gAU@g AU@gA-H n P-Hn-HA(0A8*0A,0Ap.=[ =\ n f=|0. ngna` @gaa D"E$G4. Hz/.Nu G"FE NFA "n$n .`0"0"eNJ.g" n n nЕH/? NL n n n-J A Pf-I`D=n  K"D$GN&H=[ GNu=n L"E$GNp(H=\ENu"P"Q Q f* A$$4444444"HA Nu-I . nH=@LN^ _NRGNOP ` @g02Agm42`40`4NuBBBC`BB`tv02Amn" @g(Cf40FB2FC`JCg40FB`JBg42FC`4NuJBm Pg402BBAl44`2|`02BBInUJ`442A Pf4NuNVH|(n * > GB0.o *LYMaL>N^ _\ONSORTPOIN$L&M Ѝ@G @2(4`XJRnm jn`YKSmnkmn $&XJYKoҷo H<*KaL<l H<(JaL<NuNVH| n0o6"n &IHYK* $I` XI` g$mn$ H n0L>N^ _PONCULLPOINNVHx(n&n<. "S: T>< BB Fnm-P-h `r=P2(46SCm Al2`Bo4`=A=B=h:ME / ?N T"S SF0` Xg 20(22Q22 S> S0 Gg/ ?NLN^ _ NPACKRGN NVH8(n&n$n S>GR"nQoG2/ ?N S$n "T P fTH""`A .">"> Gf Pf4LN^ _NPUTRGN NVH8No: nC&P8(#h#h n0ioi0(i l3@ 0(io HHi0(i^@HHii l3@ :) iEMoE3E<Jg EmPNHn?< N/.?<N/.?<N?. NJg/.NE>* j EmH`6-KA-HHnHn?N8,.ANHn?NNQ`/ ?N>Q&TJkBm*/.Hk/./.?. /+/+/.f.~NLN^ _NSTDBITS NVH8(m4&T$n.,,f /./*N"n +f +g(/ / /./.?. /,~/,~/.f.~NF`$/ /./.?. /. +hAg @ h NfNLN^ _NCOPYBITSNVH(m4&TJkBmJ gBNf.BN^,//.N0//+/N//+/N//N4//. N( n-X-X . nnH@nn///.N/./+NfHkHkHn/.BgB///,~NHkHk/./.?<Hk /./,~/,~NԦN/N/N`/.NLN^ _ NSCROLLRECNV/ n P"n "Q2.SAm^` (HRB4$IBf(f`*f(gQHDB`$JAgHFB$$IBVgSAlHRBB0. nѐ$n $$_N^ _ NNV n P"n "Q4.Hԉ`HQdjDiHQ`  n n N^ _ NJolNVlHx-O n0(PH@0(h n2(PHA2(hf,/."/././.?./.l/./. /.N&Nj?./.lN>-_l46Cf=B-@-A&n/.Hk n PHh n PHh n PHh?<HnNBg Hn/+N. n0(h=@0(P=@ n0(h=@0(P=@0.S@H=@HD@Jw0.BBQ-O0.S@H=@HD@Jw0.BBBQ-O n2(kAk=A0.AH=@HD@Jw0.BQ-O=|=|=|=|=|=|Bn n P P gTnC0.2.4.N n P P gXnC0.2.4.N n P P gPnC0.2.4.NrJnf n6.n8.nNrB4.kgF Bnv0@@A -Hp$n"0*H-@~2* jҒT-Av n2(j:DEE0j REA-H0+H-@z n=Pt2(k<F0.k SA-H0.HD@=@ nvd"n2. (2 2Q$.~ծ0.nn4 nvd*"n2. (ꨁY ꨁYQծ0.no/./.?.?.?.Nr0.tnm"NZ&n(n$n4. npN .zѮRnt0.tng0.nl`6N.nLN^ _NSTRETCHB0.0;N&N:Nu0.tC#nNNu0.tC#nNNu0.tC#nNNu0.tCN?CN_g n"n$n2. $QNu0.tCNb?CNX_g n"n$n2. $QNu0.tCN,?CN"_g n"n$n2. $QNu0.tCN?CNWCN_g n"n$n&n2. &QNu,Hd +H@"0"F”(Q`R +H@"0Q`6 +H@"0Q` +H@"0FQ`NV,_0Nz:0N<CDCnEPNuX`FUDnmFXPNuN^NuXORSLAB NVHx6. g8.g n"n0. R@H&I0Df ""سe`n4CCg`^.<tЇAQe`Dg`,2 @ e`\ 03. n<N P?N n`0<N @?N ^?N X/.N n/?N /.NLN^ _PONSTDCOMMENV,_ _2"_/ m40(bhb hd P`QNuN^NuSTDGETPINVH"m4"QJ\gR"i\"Q&Q S<.0k@Fj0/ ?< N`,io@k3@/ ?N S0P"n `QLN^ _\ONSTDPUTPI m4 P (hAg @ h$NNVHB (m4&TJ\fN\B?<\N(_'L\BNB?<N"_-I (T("Q2 n""8(BBB8B\B <((BB(8p((((BBB((!(?<NLN^.NuOPENPICTNV,_H(m4&T.+\g4<Nd G P,("P Q0k/ ?N/N/NB\NLNuN^NuCLOSEPICNV,_NN^NuKILLPICTJo`NV`H8(m4&T n0(ho=@0(Po=@C"" n PA0(ho=@0(Po=@C"" KC`p52QBX)n d9| bABBBBB-kBN-_BNz'_A BBp B"< 0 THB0BXB ! B'HnNBf/.N^/+NVA`p56QBXBdBlbLN^ _PONDRAWPICTJoNVH8(m4&Ta> fB. `P| G e@@VGH0;N$$ H|$$$$$$GG0;pN@&.Naf$n/./*,N"$n/.HjHjNX$n/./*0/+N``n|`|`|`GP`GT`G `GD`GF|`lGH`GJ`GL`N'@4Hk4$nHjHjN`&nNr'@$Nj'@(Hk$HkHkNh`a`G8`pG:`\G(`TN.$n%@HjHjHjN(`N$njjlXH@jjlZ/*,BN-W`J.f$n *fa'@0-@$nHk0HjHjN,f a-@`arnajn$n%nHnHjHjN/.A +hg @ h`Gg&g a$njga$nj ` a$$n%@ a<Hn?N$n'j 0Hk0HjHjNv?Hn$n/*$/*(A +hgR @ P`JaA +hg8 @ h`.a$n/*Ax +hg @ h ` aA +hg @ h`azaV?aP?A( +hg @ h`a/.$nHjHjN:/.A +hg @ h`aZ/.$nHjHjN\/.A +hgl @ h`bHn?<N|$nHnHjHjNHnHnHna?JGfB`a/.-n<.n:B?N-WN nJ.g.-P`"a2Hn-W?NHnHn?.NQ`/?N n-PA +hg @ h N/.NJGg`a?JfBgBA +hgp @ h$`fa?BDa*/.A\ +hgN @ h$`D m4"h0(Ar"Q`~Dt0t`@wtCXEWwUOFTOEtOwtUTwtTDTGwEEmUJEUnEELwEz/ ?N`B'/?<NB@NuB'/?<NHNuBg/?<N0NuB/?<N NuJ.f$nHR?<N$n-R-jHnHjHjN _HnNxa:B?N-WN n P0DHp@?N6/.NNuN`N`/.N/.NLN^.NuPICITEM NV,_ m4 P (hfN> @ h,NN^NuGETPICDANV,_ m4 P (hfNL @ h0NN^NuPUTPICDANV,_Ho?<N _JNN^NuPUTPICBYNV,_Ho?<N _J_NN^NuPUTPICWONV,_Ho?<N~.NuN^NuPUTPICLONV,_ _?</N\N^NuPUTPICPANV,_ _"_/ ") m4 P h\ PDfHf PBNFNu!@D!AH/ ?<N0NNuN^NuPUTPICRENV,_//N o P/?N//N.NuN^NuPUTPICRGNVH(m4&T(k\(T. mpg gm2*+(,+,4f8g)E4)F8< NHk:NVLN^ _TONPUTPICVERBNV,_H(m4&TJ\g kBm(k\(T.+PTg<N/N(k\(T)GT.+TXg<Nz/N(k\(T)GX +Pg.>+lRlRHG>+lPlP< N>/N(k\(TB'/+/,NRJf/+/,<N/+NN(m4pLNuN^NuCHECKPICNVH n"n $na$THTITJaLN^ _ NSCALEPT NV,_6)Q4*RBg2IH0nBPNuЁfp0NuN^NuSCALE1 NVH n"n $na$THTITJaLN^ _ NMAPPT NV,_46)B8:*D0BCg2IH4jD@ЁJBjD@D0NuN^NuMAP1 NV,_// // // NpX NhN^NuMAPRECT /WTOA?HNu _>FWN _02@>N _.N _02A>N _02BWAgN _02i>N _02i>N _0"_""N _02i42_0BA2N _20F@2_Qh>N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.NNVH` n B6($."HAAYƒ "h g$qg RACgX`=ALN^ _PONNVH|BA6. "n 8.4CBAg0@qm2`6`0@qm =C` =A`L>N^ _PON B2 _"_/JAg(?04 BJd4m SAQNuSA QNu4 Amܱm0HdSA0HS@"QAfNu0Hd SA0HS@# QAg`NV/ $n $R J0*R@j@40"n"Q2*`Q2*j0 @f0Q2<j`Q$_N^ _PONGETWIDTHNV,_ _$ "_"$A0<!Hg dB"`!`Qn$BNN^NuUNCOMPRENVH ".$n "n$ 8<WgRKQKQn攊DLN^ _ .NFMCOMPRENVH n"H6(hg$B0(gЀ2$I0"aSnLN^ _XNVXORFONTNVH n"H6(hgB0(gSC$I0ZSnLN^ _XNUNVXORFONVH n"H6(hSC0(S@2BBJ4RYQQLN^ _XNHXORFONTNV n 4.2YAYA0@6CC$n Rf4"P qg61CgRAAg@ `N^ _ RA>NHASHOFID _0X>NЁrf/.N^/+NVA`p56QBXBdW^5PH r^ ;----------------------------------------------------------------- ; ; --> GRAFTYPES.TEXT ; ; QUICKDRAW TYPE DECLARATIONS, USED BY ALL GRAPHICS ROUTINES ; SYMBOLS .EQU 1 FORMAC .EQU 0 NIL .EQU 0 ;IMPLEMENTATION VALUE OF NIL ;----------------------------------------------- ; ; QuickDraw VERBS: ; FRAME .EQU 0 PAINT .EQU 1 ERASE .EQU 2 INVERT .EQU 3 FILL .EQU 4 ;----------------------------------------------- ; ; QuickDraw transfer MODES: ; srcCopy .EQU 0 srcOr .EQU 1 srcXor .EQU 2 srcBic .EQU 3 notSrcCopy .EQU 4 notSrcOr .EQU 5 notSrcXor .EQU 6 notSrcBic .EQU 7 patCopy .EQU 8 patOr .EQU 9 patXor .EQU 10 patBic .EQU 11 notPatCopy .EQU 12 notPatOr .EQU 13 notPatXor .EQU 14 notPatBic .EQU 15 ;----------------------------------------------- ; ; QuickDraw Color Separation: ; normalBit .EQU 0 ;normal screen mapping inverseBit .EQU 1 ;inverse screen mapping redBit .EQU 4 ;RGB additive mapping greenBit .EQU 3 ;for photos from screen blueBit .EQU 2 cyanBit .EQU 8 ;CMYBk subtractive mapping magentaBit .EQU 7 ;for ink jet printer yellowBit .EQU 6 blackBit .EQU 5 blackColor .EQU 33 whiteColor .EQU 30 redColor .EQU 205 greenColor .EQU 341 blueColor .EQU 409 cyanColor .EQU 273 magentaColor .EQU 137 yellowColor .EQU 69 ;----------------------------------------------- ; ; OFFSETS WITHIN A POINT: ; V .EQU 0 ;WORD H .EQU 2 ;WORD ;----------------------------------------------- ; ; OFFSETS WITHIN A RECT: ; TOPLEFT .EQU 0 ;POINT BOTRIGHT .EQU 4 ;POINT TOP .EQU 0 ;INTEGER LEFT .EQU 2 ;INTEGER BOTTOM .EQU 4 ;INTEGER RIGHT .EQU 6 ;INTEGER ;----------------------------------------------- ; ; OFFSETS WITHIN A BITMAP: ; BASEADDR .EQU 0 ;LONG ROWBYTES .EQU 4 ;WORD BOUNDS .EQU 6 ;RECT ;----------------------------------------------- ; ; OFFSETS WITHIN A CURSOR: ; DATA .EQU 0 ;16 WORDS MASK .EQU 32 ;16 WORDS HOTSPOT .EQU 64 ;POINT ;----------------------------------------------- ; ; OFFSETS WITHIN A POLYGON: ; POLYSIZE .EQU 0 ;WORD, TOTAL BYTES POLYBBOX .EQU 2 ;RECT POLYPOINTS .EQU 10 ;ARRAY[0..0] OF Point ;----------------------------------------------- ; ; OFFSETS WITHIN A REGION: ; RGNSIZE .EQU 0 ;WORD, TOTAL BYTES RGNBBOX .EQU 2 ;RECT RGNDATA .EQU 10 ;START OF RGN DATA ;----------------------------------------------- ; ; OFFSETS WITHIN A PICTURE: ; PICSIZE .EQU 0 ;WORD, TOTAL BYTES PICFRAME .EQU 2 ;RECT PICDATA .EQU 10 ;START OF BYTE CODES ;----------------------------------------------- ; ; OFFSETS WITHIN QDProcs RECORD: ; textProc .EQU 0 ;PROCPTR lineProc .EQU textProc+4 ;PROCPTR rectProc .EQU lineProc+4 ;PROCPTR rRectProc .EQU rectProc+4 ;PROCPTR ovalProc .EQU rRectProc+4 ;PROCPTR arcProc .EQU ovalProc+4 ;PROCPTR polyProc .EQU arcProc+4 ;PROCPTR rgnProc .EQU polyProc+4 ;PROCPTR bitsProc .EQU rgnProc+4 ;PROCPTR commentProc .EQU bitsProc+4 ;PROCPTR txMeasProc .EQU commentProc+4 ;PROCPTR getPicProc .EQU txMeasProc+4 ;PROCPTR putPicProc .EQU getPicProc+4 ;PROCPTR ;----------------------------------------------- ; ; OFFSETS WITHIN A GRAFPORT: ; device .EQU 0 ;WORD portBits .EQU device+2 ;BITMAP portRect .EQU portBits+14 ;RECT visRgn .EQU portRect+8 ;RGNPTR clipRgn .EQU visRgn+4 ;RGNPTR bkPat .EQU clipRgn+4 ;PATTERN fillPat .EQU bkPat+8 ;PATTERN pnLoc .EQU fillPat+8 ;POINT pnSize .EQU pnLoc+4 ;POINT pnMode .EQU pnSize+4 ;WORD pnPat .EQU pnMode+2 ;PATTERN pnVis .EQU pnPat+8 ;WORD txFont .EQU pnVis+2 ;WORD txFace .EQU txFont+2 ;WORD txMode .EQU txFace+2 ;WORD txSize .EQU txMode+2 ;WORD spExtra .EQU txSize+2 ;Fixed Point fgColor .EQU spExtra+4 ;LONG bkColor .EQU fgColor+4 ;LONG colrBit .EQU bkColor+4 ;WORD patStretch .EQU colrBit+2 ;WORD picSave .EQU patStretch+2 ;handle rgnSave .EQU picSave+4 ;handle polySave .EQU rgnSave+4 ;handle grafProcs .EQU polySave+4 ;Pointer PORTREC .EQU grafProcs+4 ;SIZE OF A GRAFPORT PORTBOUNDS .EQU PORTBITS+BOUNDS ;----------------------------------------------------- ; ; OFFSETS IN A REGION STATE RECORD: ; RGNPTR .EQU 0 ;LONG DATAPTR .EQU RGNPTR+4 ;LONG SCANBUF .EQU DATAPTR+4 ;LONG SCANSIZE .EQU SCANBUF+4 ;WORD THISV .EQU SCANSIZE+2 ;WORD NEXTV .EQU THISV+2 ;WORD MINH .EQU NEXTV+2 ;WORD MAXH .EQU MINH+2 ;WORD LEFTH .EQU MAXH+2 ;WORD RGNREC .EQU LEFTH+2 ;SIZE OF A REGION RECORD ;----------------------------------------------------- ; ; Offsets in a PicSave record: ; thePic .EQU 0 ;PICHANDLE picMax .EQU thePic+4 ;INTEGER picClipRgn .EQU picMax+2 ;RgnHandle picBkPat .EQU picClipRgn+4 ;Pattern picTxFont .EQU picBkPat+8 ;WORD picTxFace .EQU picTxFont+2 ;Style picTxMode .EQU picTxFace+2 ;WORD picTxSize .EQU picTxMode+2 ;WORD picSpExtra .EQU picTxSize+2 ;Fixed Point picTxNumer .EQU picSpExtra+4 ;Point picTxDenom .EQU picTxNumer+4 ;Point picTxLoc .EQU picTxDenom+4 ;Point picPnLoc .EQU picTxLoc+4 ;Point picPnSize .EQU picPnLoc+4 ;Point picPnMode .EQU picPnSize+4 ;WORD picPnPat .EQU picPnMode+2 ;Pattern picFillPat .EQU picPnPat+8 ;Pattern picTheRect .EQU picFillPat+8 ;Rect picOvSize .EQU picTheRect+8 ;Point picOrigin .EQU picOvSize+4 ;Point picFgColor .EQU picOrigin+4 ;Long picBkColor .EQU picFgColor+4 ;Long picSaveRec .EQU picBkColor+4 ;total size in bytes ;----------------------------------------------------- ; ; QuickDraw GLOBAL VARIABLES: ; ; 52(A5) CONTAINS A POINTER TO THEPORT. ; ALL OTHER GLOBAL VARIABLES ARE EXPRESSED RELATIVE TO THEPORT. ; (.IF FORMAC GRAFGLOBALS .EQU 0 ;A5 OFFSET TO GLOBALPTR (.ELSE GRAFGLOBALS .EQU 52 ;A5 OFFSET TO GLOBALPTR (.ENDC ;----------------------------------------------------------- ; ; QuickDraw PUBLIC GLOBAL VARIABLES: ; thePort .EQU 0 ;GrafPtr white .EQU thePort-8 ;Pattern black .EQU white-8 ;Pattern gray .EQU black-8 ;Pattern ltGray .EQU gray-8 ;Pattern dkGray .EQU ltGray-8 ;Pattern arrow .EQU dkGray-68 ;Cursor screenBits .EQU arrow-14 ;BitMap randSeed .EQU screenBits-4 ;LONGINT ;------------------------------------------------------------ ; ; QuickDraw private global variables: ; wideOpen .EQU randSeed-4 ;RgnHandle wideMaster .EQU wideOpen-4 ;RgnPtr wideData .EQU wideMaster-10 ;Fake Region rgnBuf .EQU wideData-4 ;PointsHandle rgnIndex .EQU rgnBuf-2 ;INTEGER rgnMax .EQU rgnIndex-2 ;INTEGER playPic .EQU rgnMax-4 ;Long playIndex .EQU playPic-2 ;INTEGER; thePoly .EQU playIndex-4 ;POLYHANDLE polyMax .EQU thePoly-2 ;INTEGER patAlign .EQU polyMax-4 ;Point fontAdj .EQU patAlign-4 ;Fixed Point fontPtr .EQU fontAdj-4 ;long, ^FMOutput record fontData .EQU fontPtr-26 ;FMOutput record lastGrafGlob .EQU fontData grafSize .EQU 4-lastGrafGlob ;total size in bytes (.MACRO UNLINK ;-------------------------------------------------------------- ; ; UNLINK A6, STRIP PARAMETERS, AND RETURN. ; IF SYMBOLS=TRUE, THEN ALSO PUT ASCII FOR PROCEDURE IDENTIFIER. ; ; FIRST PARAM IS NUMBER OF BYTES OF STACK BIAS. ; SECOND PARAM IS PROCEDURE IDENTIFIER. ; (UNLK A6 ;RELEASE LOCAL VARIABLES (.IF %1=0 ;NO PARAMETERS ? (RTS ;THEN JUST RTS (.ELSE (.IF %1=4 ;4 BYTES OF PARAMS ? (MOVE.L (SP)+,(SP) ;YES, STRIP AND ADJUST RET ADDR (RTS (.ELSE ;NOT 0 OR 4 BYTES OF PARAMS (MOVE.L (SP)+,A0 ;POP RETURN ADDR INTO A0 (ADD #%1,SP ;STRIP PARAMETERS (JMP (A0) ;JUMP THRU A0 TO RETURN (.ENDC (.ENDC (.IF SYMBOLS ;DO WE WANT SYMBOLS ? (.ASCII %2 ;YES, PUT PROCEDURE IDENTIFIER (.ENDC (.ENDM (.MACRO FAKEHEAD ;-------------------------------------------------------------- ; ; FAKEHEAD, (no params) ; ; Puts in a LINKA6 NOP to fake out the debugger's symbol mechanism. ; (.IF SYMBOLS (LINK A6,#0 ;DO THE LINK (MOVE.L (SP)+,A6 ;UNDO THE LINK (.ENDC (.ENDM (.MACRO FAKETAIL ;-------------------------------------------------------------- ; ; FAKETAIL, 'ProcName' ; ; Fake out the debugger's symbol mechanism. ; Put FAKETAIL,'ProcName' after executable code. ; (.IF SYMBOLS (UNLK A6 ;RELEASE LOCAL VARIABLES (RTS ;THEN JUST RTS (.ASCII %1 ;YES, PUT PROCEDURE IDENTIFIER (.ENDC (.ENDM (.MACRO CHECKSTACK ;-------------------------------------------------------------- ; ; CHECKSTACK byteCount ; ; Does a TST.W to expand the stack if not enough room. ; Does nothing on the Mac version. ; NOTE: %1 param should be an even negative number. ; SLOP .EQU 256 (.IF FORMAC=0 (TST.W %1-SLOP(SP) ;EXPAND STACK (.ENDC (.ENDM GRAFUTIL INTERFACE {$U-} USES {$U obj:QuickDraw } QuickDraw; TYPE Fixed = LongInt; %Int64Bit = RECORD 2hiLong: LongInt; 2loLong: LongInt; 0END; FUNCTION BitAnd (long1,long2: LongInt): LongInt; FUNCTION BitOr (long1,long2: LongInt): LongInt; FUNCTION BitXor (long1,long2: LongInt): LongInt; FUNCTION BitNot (long: LongInt): LongInt; FUNCTION BitShift (long: LongInt; count: INTEGER): LongInt; FUNCTION BitTst (bytePtr: QDPtr; bitNum: LongInt): BOOLEAN; PROCEDURE BitSet (bytePtr: QDPtr; bitNum: LongInt); PROCEDURE BitClr (bytePtr: QDPtr; bitNum: LongInt); PROCEDURE LongMul (a,b: LongInt; VAR dst: Int64Bit); FUNCTION FixMul (a,b: Fixed): Fixed; FUNCTION FixRatio (numer,denom: INTEGER): Fixed; FUNCTION HiWord (x: Fixed): INTEGER; FUNCTION LoWord (x: Fixed): INTEGER; FUNCTION FixRound (x: Fixed): INTEGER; IMPLEMENTATION FUNCTION BitAnd; EXTERNAL; HARDWARE Interface type #Pixels = Integer; #ManyPixels = LongInt; #CursorHeight = Integer; #CursorPtr = ^Integer; #DateArray = Record 7year: Integer; 7day: Integer; 7hour: Integer; 7minute: Integer; 7second: Integer; 7end; #Frames = LongInt; #Seconds = LongInt; #MilliSeconds = LongInt; #MicroSeconds = LongInt; #SpeakerVolume = Integer; #ScreenContrast = Integer; #KeybdQIndex = 1..1000; #KeybdId = Integer; #KeyCap = 0..127; #KeyCapSet = Set of KeyCap; #KeyEvent = Packed Record 7key: KeyCap; 7ascii: Char; 7state: Integer; 7mouseX: Pixels; 7mouseY: Pixels; 7time: MilliSeconds; 7end; { Mouse } #Procedure MouseLocation (var x: Pixels; var y: Pixels); #Procedure MouseUpdates (delay: MilliSeconds); #Procedure MouseScaling (scale: Boolean); #Procedure MouseThresh (threshold: Pixels); #Function MouseOdometer: ManyPixels; { Cursor } #Procedure CursorLocation (x: Pixels; y: Pixels); #Procedure CursorTracking (track: Boolean); #Procedure CursorImage (hotX: Pixels; hotY: Pixels; height: CursorHeight; &data: CursorPtr; mask: CursorPtr); #Procedure BusyImage (hotX: Pixels; hotY: Pixels; height: CursorHeight; &data: CursorPtr; mask: CursorPtr); #Procedure BusyDelay (delay: MilliSeconds); { Screen } #Function FrameCounter: Frames; #Procedure ScreenSize (var x: Pixels; var y: Pixels); #Function Contrast: ScreenContrast; #Procedure SetContrast (contrast: ScreenContrast); #Procedure RampContrast (contrast: ScreenContrast); #Function DimContrast: ScreenContrast; #Procedure SetDimContrast (contrast: ScreenContrast); #Function FadeDelay: MilliSeconds; #Procedure SetFadeDelay (delay: MilliSeconds); { Speaker } #Function Volume: SpeakerVolume; #Procedure SetVolume (volume: SpeakerVolume); #Procedure Noise (waveLength: MicroSeconds); #Procedure Silence; #Procedure Beep (waveLength: MicroSeconds; duration: MilliSeconds); { Keyboard } #Function Keyboard: KeybdId; #Function Legends: KeybdId; #Procedure SetLegends (id: KeybdId); #Function KeyIsDown (key: KeyCap): Boolean; #Procedure KeyMap (var keys: KeyCapSet); #Function KeybdPeek (repeats: Boolean; index: KeybdQIndex; var event: KeyEvent): &Boolean; #Function KeybdEvent (repeats: Boolean; wait: Boolean; var event: KeyEvent): &Boolean; #Procedure RepeatRate (var initial: MilliSeconds; var subsequent: MilliSeconds); #Procedure SetRepeatRate (initial: MilliSeconds; subsequent: MilliSeconds); { Timers } #Function MicroTimer: MicroSeconds; #Function Timer: MilliSeconds; { Date and Time } #Procedure DateTime (var date: DateArray); #Procedure SetDateTime (date: DateArray); #Procedure DateToTime (date: DateArray; var time: Seconds); { Time Stamp } #Function TimeStamp: Seconds; #Procedure SetTimeStamp (time: Seconds); #Procedure TimeToDate (time: Seconds; var date: DateArray); Implementation HWINTL HardwareSETCONTRSETCONTRSETREPEASETREPEARTIMER TIMER ʂDATETIMEDATETIME6SILENCE SILENCE :KEYPUSHEKEYPUSHEdSETSCREESETSCREEnTIMETODATIMETODAĂDATETOTIDATETOTIzHWINTL HWINTL NMIKEY NMIKEY vSETFADEDSETFADEDނTOGGLEKETOGGLEKESETVOLUMSETVOLUMSETDATETSETDATETXSCREENADSCREENAD>FRAMECOUFRAMECOUSCREENKESCREENKE^SCREENSISCREENSI(CONTRASTCONTRAST~REPEATRAREPEATRA<SETTOGGLSETTOGGLSETTIMESSETTIMESALTSCREEALTSCREENDISKSYNCDISKSYNCZTIMESTAMTIMESTAMSETDIMCOSETDIMCOCURSORDICURSORDIMOUSEUPDMOUSEUPDCURSORLOCURSORLOCOPSSYNCCOPSSYNCvCURSORIMCURSORIMBUSYDELABUSYDELACURSOROBCURSOROBCURSORINCURSORINKEYBOARDKEYBOARDXCURSORHICURSORHIXALARMRELALARMRELCURSORRECURSORREPOLL POLL KEYBDPEEKEYBDPEECURSORSHCURSORSHdDIMCONTRDIMCONTRMOUSETHRMOUSETHRĂMICROTIMMICROTIMMOUSESCAMOUSESCADRIVERINDRIVERIN(SETLEGENSETLEGENxALARMRETALARMRETCURSORTRCURSORTRFADEDELAFADEDELA΂NMISYNC NMISYNC jBEEP BEEP FVOLUME VOLUME  MOUSEODOMOUSEODOԂRAMPCONTRAMPCONTBUSYIMAGBUSYIMAGLEGENDS LEGENDS hMOUSELOCMOUSELOCPOWERCYCPOWERCYCTWIGGYDRTWIGGYDRFALTKEYPEALTKEYPEЂKEYBDEVEKEYBDEVEALARMASSALARMASSڂALARMOFFALARMOFF&NOISE NOISE *KEYMAP KEYMAP ALTKEYEVALTKEYEVPOWERDOWPOWERDOWSETNMIKESETNMIKEKEYISDOWKEYISDOWALARMABSALARMABSDISKDRIVDISKDRIV2NVCopyright 1983, Apple Computer Inc. /BGNE.Nu o/><hNE. _XON o/><jNE. _XON _/><lNE.N/><NE.Nu/><NE.Nu/><NE.Nu/><NE.L2"_2N _ /><NE.N _/><NE.N _0/><NE.N/><NE./@NuL20/>< NE.N _/>< NE.N0/2/4/ o"oH 0$|&|@SB46Q |"|@L /><NE. _N/><NE.Nu/6/4/ 2/ 0//><NE.& _PON/><NE.Nu/><nNE.Nu/><pNE.Nu/><NE.Nu0/2/4/ o"oH 0$|&|@SB46Q |"|@L /><NE. _N _ /><NE.N/><NE./@Nu/><NE.L2"_2N/><NE./HNu/><NE./HNu/><NE.@Nu _/><NE.N/><NE.?@Nu _0/><NE.N _0/>< NE.N/><NE.?@Nu _0/><NE.N/><"NE./@Nu _ /><$NE.N/><&NE.Nu _ /><(NE.N/><*NE.?@Nu _0/><,NE.N _ /><.NE.N/><0NE.Nu _" /><2NE.N/><8NE.?@Nu/><NE.?@Nu _0/><NE.N _B@/><4NE.NL//><6NE.""""&NL2H/><<NE.222"LxNLH/><:NE.`LH/><NE.222"LxN/><>NE.L""_"N _" /><@NE.N _B@/><BNE.N/><rNE.@Nu _B@/><tNE.N/><NE.@Nu _B@/><NE.N/><NE./@Nu/><DNE./@Nu o/><FNE. _XO"_2N _0/><HNE.N _"0/><JNE.N _"0/><LNE.N _0/><NNE.NLH/><PNE.22222LNLH02468/><RNE.LN"oH02468/><TNE.LL"XON/><XNE./@Nu _ /><ZNE.NL H/><\NE.22222LNN^NuHWINTL 3. "6F^53,D!$ǐ^  q<$EXEC P{pascal}QD/BOXES G{generate}QD/BOXES L{link}QD/BOXES IOSPASLIB IOSFPLIB N&GN&UN&GDN&:N&4.N&BN&#N&2N&6N&4^N&BN&$N&3 N&rN&6N&3N&BhN&#N&2N&oN&plN&r`N&ZN&6N&N&N&o0N&CN& N&6N&oN&bN&GN&CN&& N&BN&N&GjN&6N&4N&BN&#N&2N&ZN&2N&N& vN&%N&TN&DN&oN&N&N&pN&qN&nNN&n4N(4N(#N(*N("N(N(N(N(bN(N*NN*N*`N*N*N*N*lN*F"X/Nњ*PASLIB1 PASIOLIB`MainProg S$JoNV/- Hz&Bg/-  "N^ _\ONEAPFULL43The heap is full. The program must now terminate! JoNVA/Hz NA /Hz NA"/Hz TNA:/Hz NAR/Hz NAj/Hz NA/Hz TNA/Hz NA/Hz NA/Hz NA/Hz TNA/Hz NA/HzNA*/HzNAB/HzTNAZ/HzNAr/HzNA/HzNA/HzTNA/HzNA/HzNA/HzNA/HzTNA/HzNA2/HzNAJ/HzNAb/HzTNAz/HzNA/HzNA/HzNA/HzTNA/HzNA/HzNA /HzNA"/HzTNA:/HzNAR/HzNAj/HzNA/HzTNA/HzNA/HzNA/HzNA/HzTNA/HzNA/HzNA*/HzNAB/HzTNAZ/HzNN^NuNITICON `000203FF01600002000001C00002000001800003FFFFFF000000201FE01560002000001AC0002000001580002020101B0000020000013500020000016B000201FE01D50002010201AB000000380000300000680000700000D80000D0003FFFFFF1B0000000000000000000000000000000000000000001FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A00002B00000BFFFFEE00000800000C00000FFFFFF8000000A00002AC0000A08082D40000A0FF82AC0000A00002D800000A00002AC0000A07F02D40000A04102AC0000A07F02D400000A00002AC0000BFFFFED40000800000AC0000BFFFFED400000A00002AC0000A08082D40000A0FF82AC0000A00002D400000A00002AC0000A07F02D40000A04102AC0000A07F02D4000004000006C0000FFFFFFD40000800000AC0000BFFFFED40000007FFFFFC00000800000C00001000001C000020000034000040000000B80040000000F00040000000E0007FFFFFFFC00006B000000AB807FC000FFD70040600180AE00403FFF00DC00040000000AB807FFFFFFFD5806AC00000AB8055800000D580040600180AB80403FFF00D58040000000AB8040000000D58000D7FFFFFFB801AC000003580358000006B807FC000FFD580000E00000018001A00000038003600000078006A000000D800000000000000000000000000000000000000007FFFFFFF0000000000000000000000000000000000000000000000000000784249258E70003049233100000E000E40800001FFFC3F00932524924C82A44524924D01C88524924CF10C4524924C090000524024C00000524924C00600524924C0090E524924C7C0000500004C000005259A4C000005250A4C00000525FA4C0000033E3801C0000180E002C00000FF801CC0000047FFE0C0000010064FE0000031199830000020E6301800002418E00800000013849800000026C4980000004C09300000008612600000000001FC000000000E0600000000300300000000C091800008000000001C0C000000003807FFFFFFFFF0007800001E00008000000001AC87F000000158841000CCC1B087F000CCC160018000000006B3000000000D77FFFFFFFFFABC0000000035600184000013870327FFFFF10F06400000021B0CFFFFFFFC3700004000010000004A54510000004000017FE00F4A515100300002000008400004454510400004000017C00004A5151000000000000000000007FFFFF0000008000028000011151444000000000000000000000000000000000000000000000000000800000000980FFFFFFFFF300800000001600FFFFFFFFFC00018000000013832AAAAA8A9F0655555515380C2AAAA82A580008000000004307FFFFFFFFA30100000000260FFFFFFFFE2C01200000BF923120000080F2312000008002311FFFFF000230120000080F23120000080023120000080023120000080F23018000000004311FFFFF00023120000080F231200000BF923000600000000601800000000B0600000000130FFFFFFFFFA30000000000000000000000000000000000000001FFFFFFFFCJoNV0. ACA-H=|HnBgBg?<0?< N AC AC Hn?. ?.NHn mHhHnHn?<BNN^ _\ONRAWICONJoNVHA/HzN mCA""HnNHn?<?<NHn?<?<N^Bg?<N?<?<NBg?<N?<?<NBg?<N?<?<NBg?<N?<?<N?<?<N?<?<kN?<?<N?<?<kNBgN*?<?<NHzN?<P?<"NHzN?:N$?<F?<7NHzfN?:\N$?<F?<FNHz@N?:6N$?<F?<UNHzN?:N$?<F?<dNHzN?:N$?<F?<sNHzN?:N$?<J?<"NHzN?<?<N?<?<(N?<?<N?<?<#N?<?<(N?<?<N?<?<.N?<?<(N?< ?<NHmN?<?<=N?<?<(N?<?< NHnN?<?<PN?<?<(NN?<0?<"NHzNHn?<?<(?<:?<FN HnNXHn?<?<N?<?<NHnNHnNXHn?<?<NHnNHn?<?<NNHnHmN4HnNXHn?<?<NHnHnN4HnNX?<F?<NHzNHn?<?<?<Z?<N Hn?<?<N^Hn?<?<N?<?<NHn?<?<NHn?<?<N^Hn?<?<NHn?<?<NHn?<?<NNHn?<?<HmN:Hn?<?<N^Hn?<?<NHn?<?<HnN:Hn?<?<N^?<@?<NHzNBg?< ?<N?<?<P?<N ?<?<?<N?<?< ?<N?<?<P?<N?<?<?<N?<:?<NHzrNHn?<?<?<?<N Hn?<?<AHmN"Hn?<?<HnN"Hn?<J?<KHmN"Hn?<?<NFHn?<BgNHn?<-?<ZN?<P?<NHzNBN(_?<?<"N?<?<N?<2?< N?<Z?< N?<P?<N?<_?<"N?<?<"NN/ NR/ ?<?<N?<?<N/ N/ NR/ ?<?<N/ N/ ?<?<NN/ HmN./ NR/ ?<?<N/ HnN./ NR/ N?<@?<NHzNBN&_NNHn?<?<?<?<^N Hn?<?<N^?<?<ON?<E?<N?<w?<ON?<?<ONHn?<m?<?<?<EN HnNLN|/ N/ NBG`?<  |?NHzNRG Go mHhN/ N?<D?<NHzNHn?<?<?<:?<&N HnNLHn?<?<N?<?<NHnN HnNLHn?<?<NHnNHn?<?<NNHnHmN(HnNLHn?<?<NHnHnN(HnNLLN^NuRAWSTUFOvalsArbitrary Clipping RegionsRegionsPolygonsWedges Bit Images RoundRects RectanglesLinesShadowOutline UnderlineItalicBoldText%Look what you can draw with QuickDraw8040200002040800"NV,_NU"A/A/A/NRAr/N mHhNNJN/</<Nj/-"N]"NuN^NuDSAMPLEJoNV/./. /.N`A/NNNvHnNTN^ _ NDINIT JoNV/. /.N~N^ _PONONE €MainProgQuickDrar&NV,_ m4HhNNN^NuINITCURSNV,_ o?(B?(@?<HPHh N.NuN^NuSETCURSONV,_NN^NuHIDECURSNV,_NN^NuSHOWCURSNVH n 0(n ?0n?0(n ?0(n?NLN^ _PONSHIELDCUNV,_NN^NuOBSCURECNV,_ _ .NN^NuBITAND NV,_ _ ".NN^NuBITXOR NV,_ _ F.NN^NuBITNOT NV,_ _ .NN^NuBITOR NV,_ _2jDA ` .NN^NuBITSHIFTNV,_ _"0F@"_1VDNN^NuBITTST NV,_ _"0F@"_NN^NuBITSET NV,_ _"0F@"_NN^NuBITCLR NV,_ m40xBN>r o !_!_ m4"o BYA"2""""//N@"o m4/(~/)N?,"oC BBp""B"2""BYB2BYB"!"BBBBB.NuNV,_ o/(N> o/(N=.NuN^NuCLOSEPOR"oAP"A"Ab"A(`"A)"A,H"A8,"A;"AJ"AU"A"AVP"AV".NuNV,_H m4 P"o0(Y0( YL.NuN^NuLOCALTOGNV,_H m4 P"o0(Y0( YL.NuN^NuGLOBALTONV,_pNN^NuGRAFDEVINV,_ m4 .NuN^NuSETPORT NV,_ m4"o".NuN^NuGETPORT NV,_ m4 PA"o 0 .NuN^NuSETPORTBNV,_ m4 P0(o1@0(o1@.NuN^NuPORTSIZENV,_ m4 P0(h o2(hoh hhh .NuN^NuMOVEPORTNV,_ m4 P /g<0/h2/hh hhh hhhh/(??N=.NuN^NuSETORIGINV,_ _"m4"Q/)/N+Dlg<N]?N]4(k\(T9G+F,g<N\N\(k\(TG>+Hlg<N\?N\(k\(T9G>+Jlg< N\?N\(k\(T9G.+Lg<N\/N\(k\(T)G.. *.f"g"<N\b/N\/N\(k\(T)G)E"*+0& g<(N\./+0N\n`8 f <)N\`Jf <*N\`<+N[N[HEN[N[/.?N[(k\(T)k0&?/./. /.NLN^ _NSTDTEXT NV,_ _/</</ m4 P (hA@g @ PNN^NuCALLTEXTNV,_pDN(N^NuTEXTFONTNV,_ m4 PoF _TONN^NuTEXTFACENV,_pHNN^NuTEXTMODENV,_pJNN^NuTEXTSIZENV,_ m4 P!oL.NuN^NuSPACEEXTNV,_?<HoN* _TONN^NuDRAWCHARNV,_ oB@?/N.NuN^NuDRAWSTRINV,_ o0/?/N _PONN^NuDRAWTEXTNV,_Bg/?<?<N>?_ _TONN^NuCHARWIDTNV,_"_ _B@/Bg?/ NN^NuSTRINGWINVBnBg?.oN n /-|-|HnHnHn m4 P (hfN*` @ h(N2=AN^ _PONTEXTWIDTNVH8Bn(m4&T)kLTC2D2JFJkBZ2 n" n "BHnN)WP(_ nBBJgl ll,H1@ n  n *+Lg4BBB?.?.NB?,?,NN/N* m4!ET4.ox$l$R, HJf0@ g j`TB n"J6*8*B@`* fۮDo0R@Cm@01 @g@@Qn=ALN^ _NSTDTXMEANVH8 m4I6-L n"20-A)X)XBHn/ NZ&_J\(g6(XK8880B'HnG/ HnNNJLN^.NuQDSWAPFONV-|-|BBHnHn/. m4 P (hAg @ h(NJ_ m4 hP"n( HiB@( gRQi .g002020202N^.NuGETFONTIJoTNVTHx-O(m4&TBg?.o^/.Hn HnHnXND2(lPJg<=A-k0 k2JkBm$l$R0.j=@j=@0.=@@ n-n-n +TFP2+XV . VgHB. .-@xn=@~H@n =@| .-@n =@H@n=@HnHnHnxNZ&HnHk k PHh k PHh?<HnNgRA-H2*A=A=jJ.gJlfJl f kHfx k P P fl k P P gB'/+HnN8zJgN0.noѮ0.no=@0.kЫ-@=k=k Hn/+N`TB.0.k @@ k =@2.@ITA6.=CI=A0HD@JwSCB-OBQ-OBC0*0*@A-HT0< jo0*R@jm@ nT:0 EgE, HEBE m4ڨT-Ed0.j=@`=|bSn n-H f ".dӮ``D@jo0*R@jm@ nT:0 Eg2141Ao6Kn`CJ.g*nonlno4.nl 0.C@@n֔nH|:AE(nEAAUA*n20AN6<0N84n6n>.FAg`SFg E, n`Snn>.`jJ.gN`bBn`BB,` n2.ڐ@ ␁QQBB,g<"n6.ؒKSC<.BDB0H:EH IYH2 UH3QQJ, g n2.0*4*"H$H Bmfg0D@Jw/ GISA4@ &␁Q I@ #㐀FQ&_0.Hn֐GS@H`B`Q0k N`=| -k-k A-HA 000 EA 0 BC, g0.HD@Jw0.S@B-OBQ0.S@ n/ Q-OBC4 n2.ڐ@ ␁QQ$n"n I nQ-JXn-np-ntXnt-nph-ntlSnhSnjSnlSnnJ.gHnhHnHnxNUHnHnHnpHnh0+H@?/+/+HnN?r-nYnHnHnHnHn0+HJ, gD@@?/+/+HnN?6.nLN^ _NDRTEXT NVHNRoxB'NQ~ (k\(T +0*fRG<. @0HFf:.k00HEfTGNP<f/+0NPvf /.NPh` NPNP(k\(T)n*/.NLN^.NuSTDLINE NV,_ m4 P (hANg @ hNN^NuLINETO NV,_ m4 P0(2o0(0oNN^NuLINE NV,_ _"m4"Q#_0NN^NuMOVETO NV,_ _02"m4"Qi0i2NN^NuMOVE NV,_H(m4&T./,+0Jdg4"l^ Q0 @ f!X@!X@0l\ml\/ ?,\Nr`J`g///,lHljHlhN//Np'G0L.NuN^NuDOLINE NV,_ m4 PShBNuN^NuHIDEPEN NV,_ m4 PRhBNuN^NuSHOWPEN NV,_ m4 PA0"o""2"".NuN^NuGETPENSTNV,_ m4 PA0"o 0 .NuN^NuSETPENSTNV,_ m4 P"o"0.NuN^NuGETPEN NV,_ m4 P1o61o4.NuN^NuPENSIZE NV,_p8NN^NuPENMODE NV,_ m4 PA:"o .NuN^NuPENPAT NV,_ m4 P!|41|8p!@:!@>NuN^NuPENNORMAJo@NV@H|-O-MJ m4&PJkBmp-KF0+8@ @f\?+8Hk:Nj-_@=_D*K$m$R&m&S2. 4.6.8. CoCDoDm6m4=A=B=C=DHnHmHjHk?<Hn|N XgHn|/-*nJN@*nF2. 4.6.8. BgAnpmj 4f" n@ g ff R f S gHmHmHn|Hn|?-8Hm:/-/-=| zAz-HvHnv*nJND`FCD0m4jo4jl,=Bp=|r-npl0-6onl<-4oB?W?WN.-GhBBg?/N, ѮpѮlJkp l߮p`Snl`l m߮l`Rnp2.|4.~6.8.ng0n*HEHEBE,چۮpۮl=|=|=|=|4.~m Bm =BZ0.BH=@XHD@Jw0.XBQ-O\Bnt R gTnt JC0.~2.4.ZN/ S gXnt KC0.~2.4.ZN.Jntf n\6.~nZ8.nZN>2.|mҭm JH҂-ATB4.DgFN\-HN4- n@C*nJN*nF>.|OG?,6p2.Znpnln~n=n|RNl2.p4.l nN"nT$n\G|NXGG?,6p0-HѮT .hѮpѮlRnR0.Rnm*nJNV.nL>N^ _PONDRAWLINE0.t0;N 2Nu0.RCN.-i\Nu0.RCN.-i\Nu0.RCN-CN- n"n$n\2.X $QNu:.DJ@f E E n`AfaN<4.m 0N 6J E mVg,FFFCAg\BSBgJd8SB`((UBngCT` Ag\|SBgJd\SB`FFUBngCT`Ag\|SBgJd8SB`((UBngCT`Ba>N2.n|SA E mgF@TQ`TQ`TQ`x2.|4.~(m0m>-0m 2INuNVH84.8.Bg0DjD@2.njDAAo0R@H&n(n T nPo@0/ ?Nr4.&S2.6.Af 6666`tnCD<B?W?WN.=B=| ѮJk l߮` lRn:ng 66:.66RF߮FfDg6666 n8LN^ _NPUTLINE NVH. NIDoNH&p0G/.NG/.Jf J`g/./,lHljHlhNNt`NN LN^ _\ONSTDRECT NV,_ _ o& m g?<Hk(`?<Hk `?< Hl`?+8Hk:NN^NuPUSHVERBNV,_ _"_/ / m4 P (hA.g @ hNN^NuCALLRECTNV,_pNN^NuFRAMERECNV,_pNN^NuPAINTRECNV,_pNN^NuERASERECNV,_pNzN^NuINVERTRENV,_ _"_/ m4 PA( pNNN^NuFILLRECTNV m4"PJiBm(HiHi/./.?. /./)/)/(~NN^ _ NDRAWRECTNV m4 PJhBm"n-Y-YC4(60)=@B=@2)=AB=AAl4(40=@B=@2)=AB=AAl=n=n=n=na>=n=n=na*=n=n=na=n=n=na`2 m4"PHiHiHnHn?)8Hi:/)/)/(~NNuaN^.NuFRRECT NV,_ _" "_""NN^NuSETRECT NV,_ "_ _f f`B/NuN^NuEQUALRECNV,_"_ _02XlXlB`NN^NuEMPTYRECNV,_ _20"_YYYYNN^NuOFFSETRENV,_ _20"_YYYYNN^NuINSETRECNV|/./. ?</.afB.N^ _ NSECTRECTNV,_NVHx@C 0o> Y2468S@`" YXl2(Xl4(Xo6(Xo8(Ao BoQ`BABBBCBD n00000. H\@ALN^ _NN^NuRSECT NV,_ o "o0Qo0H@0(io0)2(il2)HA2(il2) o _ NN^NuUNIONRECNV,_ o0/2/ @lA1@1A0/ 2/@lA01A _ NN^NuPT2RECT NV nB.0.hmhl0. Pm hl|N^ _PONPTINRECTNV n "n0@QoQH /.?NrL n "n"QP n"2222"N^ _NPUTRECT JoNVH|-M$n&n(n*n0+So=@v0l=@0m=@=l=mBG0. gFGg&4- nC*nN|*n>OG?,6p`p f:0.nn0m0*l2+mAlDC`0.S@nnDnDn<+m2*lAF0.(TFAA-L2+m0.*U0AA-M2N88A0+koA2ND:A=AJCjA-L-ME0. fJFfJnoCJCj$C`@ 2@@JnfACN24.N(n-L` XGG?,6p*n-MSnfL>N^ _NBITBLT |&^pz\0AFAUA:rSBgDÚJd;$SB`+$+$UBng`&0AFAUA:rSBgJd:SB`**UBngE ,쨿@AFAUA:rSBng`$E ,쨿@AUrSBng`E ,쨿@AUrSBng`E ,쨿@AF@UrSBng`E:FE6.4.A0EF:XGG?<6pSBf`0AFAUA:rSBgJd:SB`**UBngEAFAUA:`tE0A]rSBng``0A]rSBgJd]SB`UBngEA]`6E0AF@]rSBng` Copyright 1983 Apple Computer Inc.Jo2NV2H|-Ot-M4?./.N -_=_"n"Q$n $R&n&S(n*n"/ HmHiHjHk?<HnlNgHnl/-*n4N*n"0<QRSfB$nA80.lTR00.nlj1@/.&/ /Hnl?./.*n4N`2.nmAm=A`0.rAH=@^HD@Jw0.^BQ-Of=|=|=|=|=|=|Bnj Q gTnj IC0.n2.r4.`N R gXnj JC0.n2.r4.`N S gPnj KCx0.n2.r4.`N njf-nf` njf-nf` njf-nf=nlT=npR=|P=|N0-H-@F-nfbB4.kgFB0@@A -H@g*4- nC*n4N**n">.lOG?,6p`$n&n&0+H-@J fL0m2mAmN^ _"NRGNBLT 0.j0;N:,t0.DCNNu0.DCNNu0.DCxNNu0.DCN=A2CNxn2g n"n$nf2.^ $QNu0.DCNJ=A2CxN>n2g n"n$nf2.^ $QNu0.DCN=A2CxNn2g n"n$nf2.^ $QNu0.DCN=A2CNʃn2CxNn2g n"n$n&nf2.^ &QNu@h +H@"N0"NF•*NQ`2 +H@"N0NNQ` +H@"N0NNQ` +H@"N0NFNQ` "F•*Q` Q` Q` FQ`NVH.N:@o8N9" k\ P .Lg!@L/< N7N80p@G/. N8b/. Jf$J`g/. /./,lHljHlhNH<`B'/.NBg?<hNLN^ _ NSTDRRECTNV,_ _""_/ // m4 P (hA@g @ h NN^NuCALLRRECNV,_pNN^NuFRAMEROUNV,_pNN^NuPAINTROUNV,_pNN^NuERASEROUNV,_pNvN^NuINVERTRONV,_ _"_/ m4 PA( pNJN^NuFILLROUNNVH. N8oN7pPG/.N7 n0(h=@0(P=@/Jf"J`g//./,lHljHlhN<`B'/.NBg?<hNbLN^ _\ONSTDOVAL NV,_ _"_/ / m4 P (hARg @ hNN^NuCALLOVALNV,_pNN^NuFRAMEOVANV,_pNN^NuPAINTOVANV,_pNN^NuERASEOVANV,_pNzN^NuINVERTOVNV,_ _"_/ m4 PA( pNNN^NuFILLOVALNVH|&n&S$K n "J n/.Hn?.?.N=n=n0.@n=@ nhPn=@<.:.N:.NnmnmBHn?N d:.ܺngNb:.NZ=n:.ngNF:.N>=nRFnm:.N(:.N n 0L>N^ _NPUTOVAL m*ʓH n0/.? NrL$n$Rʷgkf kfYKNu66NuNVH .N6Lo&N5.p`G/. N4?. N4$?.N4 n 0(h=@0(P=@/Jf<`B'/.N?. ?.NLN^ _ NSTDARC NV,_ _""_/ // m4 P (hAVg @ hNN^NuCALLARC NV,_pNN^NuFRAMEARCNV,_pNN^NuPAINTARCNV,_pNN^NuERASEARCNV,_pNvN^NuINVERTARNV,_ _"_/ m4 PA( pNJN^NuFILLARC JoNVH|-O-M m4&PJkBm-K0.gj n D@=@ @h]0.@ @f?./. N-_ =_*n$m$R&m&S/.HmHjHk?<HnNgxB.J.gD0. HhH@J@j@h=@ n @hm@h=@ n0h@=@0(h@=@0(h=@0(P=@B?.?.N.B?. N B//NΌ-_B?.N B//Nr-_<.HFBF>.O0.-@0.n -@0.-@0.nޜ-F0. @l@Z`@D@=@0. @l@Z`@D@=@0. @nm nZ W` 0.܀nZ/.Hn(?.?.N0.@n(=@ nhPn=@=|RJ.gb n4m46(m4ClL0(m62(m6Al8=@~=A=B|=CHn|HnR0.m6m6?0.m4m4?NHn/-*nN*n2.4.6.8.=|=|=|=|4.m Bm =B0.BH=@HD@Jw0.BQ-OBn R gTn JC0.2.4.N S gXn KC0.2.4.NJn f n6.n8.nN#2.mҭm JH҂-A B4.gFN<-H4- n C*nNȜ*n>.OG?,6p2.nnn.n2nXn\nn=n( 0. nmnmHn(?NfHnR?N\nfdJ.g^DnDnB.0. @nm n f`0.܀nj0.=n=@ .-n-@ .-n-@0. nmrJ.fVNJ.f0. nRm6nTl.`2..Jnj nl2.=A4.2Jnj no4.=B0. nRmnTl0.XJnj no0.=@0.\Jnj nl0.=@ҲBl4.aX2.4.`0.nj nonf4.X`0.ذnf 2.\4.a2..4.a 2.4.2`Z n"n $nGNBmB0.nj: no02..a2.4.2`2..4.Xa2.\4.2a` 2..4.2aXGG?,6p0-HѮ .Ѯ .ѮRn 0. nm*nNN.nL>N^ _NDRAWARC 0. 0;N 2Nu0. CN-iNu0. CN-iNu0. CNCN n"n$n2. $QNuNVH n"n 23h4. lBB2.lBA0(h@o40(P@o23h Bi 3hBi0H@B@ѩ  pA3@0HЀS#@BBB??Nȴ/HiN )Ѐ#@& )р#@"L?N^ _ NINITOVALNVH$n 0.Rmjl~&<$* "*(*` ԃA"C@ӈӈA*C"@ӈӈn` ҃A*C"@A"C@m%B %A0*R@H們TjL?N^ _\ONBUMPOVALNV,_ _0HH@J@j@H @ho @D@.N.DNN^NuSLOPEFROx kfo#(-$16j;?DIhNDS.X&]-bEgnlqw`|p@ANފ7 Q&1<"GS`[m{5hwn $>[y[zEV|hTb%PQ$ nL9J0NV,_ /[jDA2<_0<AJk0.?@NuN^NuANGFROMSNVH(n0,T@2. @0,l@>.@f JAoP0<`LB??NŠ,B0,T?0,l?Nņ B//NP Bg/NN0JGj @ @hfB@ n0LN^ _ NPTTOANGLNVH8. N*boN)DppGN("/.N($nJf/ N`2 RHh k PHh k PHh?<HnNxg / N"NLN^ _\ONSTDPOLY NV,_ _"_/ / m4 P (hAbg @ hNN^NuCALLPOLYNV,_pNN^NuFRAMEPOLNV,_pNN^NuPAINTPOLNV,_pNN^NuERASEPOLNV,_pNzN^NuINVERTPONV,_ _"_/ m4 PA( pNNN^NuFILLPOLYNV,_N:B?<Nl"_/I m4!I^1|\ P!|d"Q2 BBNuN^NuOPENPOLYNV,_H(m4 TBd(l^ T>BB<F Ng:2468SF`0Al2Bo40Cl6Do8Q TA0000/ ?NrNרLNuN^NuCLOSEPOLNV,_N|N^NuKILLPOLYNV,_ _02"_"Q4UBJSBYYQNN^NuOFFSETPONVH8$n &n f *g0(n(THl/ / N)>G O ` / / / N)2XLQLN^ _ NMAPPOLY NVH(n T>G Og/( N|SG` T/0`XFNQLN^.NuFRPOLY NV/ m4 PJhBk:N/.N n P/( NBN,(WN/ ?. /.NP/ NHLN^ _ NDRAWPOLYNVH8. N'oN%0<GN$/.N%/.NJf J`g/./,lHljHlhNlN&`NLN^ _\ONSTDRGN NV,_ _"_/ / m4 P (hArg @ hNN^NuCALLRGN NV,_pNN^NuFRAMERGNNV,_pNN^NuPAINTRGNNV,_pNN^NuERASERGNNV,_pNzN^NuINVERTRGNV,_ _"_/ m4 PA( pNNN^NuFILLRGN NV m4 PJhBk(HhHhHhHh?. /./(/(/.NN^ _ NDRAWRGN NVH(m4&TJkBkT n P P f HhN` G f$/ /Nܺ0+kl 0kmdBB`\GB?Nl&_aHFa`@Bg/ / / ??<?<N: S2` H@ Q/?N/ ?/ N Nu/ NHLN^ _PONINSETRGNNV,_ _"_"QHi/NN^NuEMPTYRGNNV,_ o"og" P"Q02ISAVf@gf S@f| `B/ _PONN^NuEQUALRGNNV,_pNVN^NuSECTRGN NV,_pN>N^NuUNIONRGNNV,_pN&N^NuDIFFRGN NV,_pNN^NuXORRGN NVH8:$n&n (nB'/ / N0JgEf / / N `/ NV` R"S EnJm 0)ilHhHi?<HnNLfJEg` R"SJEf4 P f. Q f(/ HnN`X0)il0(hm$K`~8QDB?Nl&_Bg/./. / ??Bg<N</ ?/ N>/ NHLN^ _ NDORGNOP NV/2.4. BC n Phm4hl.hm(hl" P fFC`A Xm0 @gAnFC`DC&N^ _PONPTINRGN JoNVH|-OB."n"Q/. Hi?<HnN gR Q gD IC0.2.4N:)M0.N<. i0JVf0)@o N`|.nL>N^ _PONRECTINRGJoNVHxA-HC-I2 n""Bg/. HnHn?<BB'N2 n _nm |`BB|`B.LN^ _PONTRIMRECTNVH8 n "nfg(n T P fHh/. /.N l`nB?<Nl&_Bn=|/ / HnHnN>.O<$S`/ /. /.NXQ/?N/=GHnN/ ?./ N/ NHLN^ _ NMAPRGN NV,_3@3A3B"3|3hA #H _BI3A IDAJw2) BQ#ONN^NuINITRGN NV,_il6imBANu i2) BQ Q3h3|A #HimH04$i3Z6 Cgb8ioilil6)io8)ii0N:0N<K&iLCnES`[`FUDnmF[S`#J3RilL 2<NuN^NuSEEKRGN JoNVH8EAa|&HAar(HA0. gAU@gAU@g AU@gA-H n P-Hn-HA(0A8*0A,0Ap.=[ =\ n f=|0. ngna` @gaa D"E$G4. Hz/.Nu G"FE NFA "n$n .`0"0"eNJ.g" n n nЕH/? NrL n n n-J A Pf-I`D=n  K"D$GN&H=[ GNu=n L"E$GNp(H=\ENu"P"Q Q f* A$$4444444"HA Nu-I . nH=@LN^ _NRGNOP ` @g02Agm42`40`4NuBBBC`BB`tv02Amn" @g(Cf40FB2FC`JCg40FB`JBg42FC`4NuJBm Pg402BBAl44`2|`02BBInUJ`442A Pf4NuNVH|(n * > GB0.o *LYMaL>N^ _\ONSORTPOIN$L&M Ѝ@G @2(4`XJRnm jn`YKSmnkmn $&XJYKoҷo H<*KaL<l H<(JaL<NuNVH| n0o6"n &IHYK* $I` XI` g$mn$ H n0L>N^ _PONCULLPOINNVHx(n&n<. "S: T>< BB Fnm-P-h `r=P2(46SCm Al2`Bo4`=A=B=h:ME / ?Nr T"S SF0` Xg 20(22Q22 S> S0 Gg/ ?NrLN^ _ NPACKRGN NVH8(n&n$n S>GR"nQoG2/ ?Nr S$n "T P fTH""`A .">"> Gf Pf4LN^ _NPUTRGN NVH8No: nC&P8(#h#h n0ioi0(i l3@ 0(io HHi0(i^@HHii l3@ :) iEMoE3E<Jg EmPNHn?< N/.?<N/.?<N?. NJg/.NE>* j EmH`6-KA-HHnHn?N8,.ANHn?NNQ`/ ?N>Q&TJkBm*/.Hk/./.?. /+/+/.f.~NLN^ _NSTDBITS NVH8(m4&T$n.,,f /./*N"n +f +g(/ / /./.?. /,~/,~/.f.~NF`$/ /./.?. /. +hAg @ h NfNLN^ _NCOPYBITSNVH(m4&TJkBmJ gBNf.BN^,//.N0//+/N//+/N//N4//. N( n-X-X . nnH@nn///.N/./+NfHkHkHn/.BgB///,~NHkHk/./.?<Hk /./,~/,~NԦN/N/N`/.NLN^ _ NSCROLLRECNV/ n P"n "Q2.SAm^` (HRB4$IBf(f`*f(gQHDB`$JAgHFB$$IBVgSAlHRBB0. nѐ$n $$_N^ _ NNV n P"n "Q4.Hԉ`HQdjDiHQ`  n n N^ _ NJolNVlHx-O n0(PH@0(h n2(PHA2(hf,/."/././.?./.l/./. /.N&Nj?./.lN>-_l46Cf=B-@-A&n/.Hk n PHh n PHh n PHh?<HnNBg Hn/+N. n0(h=@0(P=@ n0(h=@0(P=@0.S@H=@HD@Jw0.BBQ-O0.S@H=@HD@Jw0.BBBQ-O n2(kAk=A0.AH=@HD@Jw0.BQ-O=|=|=|=|=|=|Bn n P P gTnC0.2.4.N n P P gXnC0.2.4.N n P P gPnC0.2.4.NrJnf n6.n8.nNrB4.kgF Bnv0@@A -Hp$n"0*H-@~2* jҒT-Av n2(j:DEE0j REA-H0+H-@z n=Pt2(k<F0.k SA-H0.HD@=@ nvd"n2. (2 2Q$.~ծ0.nn4 nvd*"n2. (ꨁY ꨁYQծ0.no/./.?.?.?.Nr0.tnm"NZ&n(n$n4. npN .zѮRnt0.tng0.nl`6N.nLN^ _NSTRETCHB0.0;N&N:Nu0.tC#nNNu0.tC#nNNu0.tC#nNNu0.tCN?CN_g n"n$n2. $QNu0.tCNb?CNX_g n"n$n2. $QNu0.tCN,?CN"_g n"n$n2. $QNu0.tCN?CNWCN_g n"n$n&n2. &QNu,Hd +H@"0"F”(Q`R +H@"0Q`6 +H@"0Q` +H@"0FQ`NV,_0Nz:0N<CDCnEPNuX`FUDnmFXPNuN^NuXORSLAB NVHx6. g8.g n"n0. R@H&I0Df ""سe`n4CCg`^.<tЇAQe`Dg`,2 @ e`\ 03. n<N P?N n`0<N @?N ^?N X/.Nf n/?N /.NxLN^ _PONSTDCOMMENV,_ _2"_/ m40(bhb hd P`QNuN^NuSTDGETPINVH"m4"QJ\gR"i\"Q&Q S<.0k@Fj0/ ?< Nr`,io@k3@/ ?Nr S0P"n `QLN^ _\ONSTDPUTPI m4 P (hAg @ h$NNVHB (m4&TJ\fN\B?<\Nl(_'L\BNB?<Nl"_-I (T("Q2 n""8(BBB8B\B <((BB(8p((((BBB((!(?<NLN^.NuOPENPICTNV,_H(m4&T.+\g4<Nd G P,("P Q0k/ ?Nr/N/NHB\NLNuN^NuCLOSEPICNV,_NHN^NuKILLPICTJo`NV`H8(m4&T n0(ho=@0(Po=@C"" n PA0(ho=@0(Po=@C"" KC`p52QBX)n d9| bABBBBB-kBN-_BNz'_A BBp B"< 0 THB0BXB ! B'HnNBf/.N^/+NVA`p56QBXBdBlbLN^ _PONDRAWPICTJoNVH8(m4&Ta> fB. `P| G e@@VGH0;N$$ H|$$$$$$GG0;pN@&.Naf$n/./*,N"$n/.HjHjNX$n/./*0/+N``n|`|`|`GP`GT`G `GD`GF|`lGH`GJ`GL`N'@4Hk4$nHjHjN`&nNr'@$Nj'@(Hk$HkHkNh`a`G8`pG:`\G(`TN.$n%@HjHjHjN(`N$njjlXH@jjlZ/*,BN-W`J.f$n *fa'@0-@$nHk0HjHjN,f a-@`arnajn$n%nHnHjHjN/.A +hg @ h`Gg&g a$njga$nj ` a$$n%@ a<Hn?N$n'j 0Hk0HjHjNv?Hn$n/*$/*(A +hgR @ P`JaA +hg8 @ h`.a$n/*Ax +hg @ h ` aA +hg @ h`azaV?aP?A( +hg @ h`a/.$nHjHjN:/.A +hg @ h`aZ/.$nHjHjN\/.A +hgl @ h`bHn?<N|$nHnHjHjNHnHnHna?JGfB`a/.-n<.n:B?Nl-WNf nJ.g.-P`"a2Hn-W?NHnHn?.NQ`/?N n-PA +hg @ h N/.NxJGg`a?JfBgBA +hgp @ h$`fa?BDa*/.A\ +hgN @ h$`D m4"h0(Ar"Q`~Dt0t`@wtCXEWwUOFTOEtOwtUTwtTDTGwEEmUJEUnEELwEz/ ?N`B'/?<NB@NuB'/?<NHNuBg/?<N0NuB/?<N NuJ.f$nHR?<N$n-R-jHnHjHjN _HnNxa:B?Nl-WNf n P0DHp@?N6/.NxNuN`N`/.NH/.NHLN^.NuPICITEM NV,_ m4 P (hfN> @ h,NN^NuGETPICDANV,_ m4 P (hfNL @ h0NN^NuPUTPICDANV,_Ho?<N _JNN^NuPUTPICBYNV,_Ho?<N _J_NN^NuPUTPICWONV,_Ho?<N~.NuN^NuPUTPICLONV,_ _?</N\N^NuPUTPICPANV,_ _"_/ ") m4 P h\ PDfHf PBNFNu!@D!AH/ ?<N0NNuN^NuPUTPICRENV,_//Nf o P/?N//Nx.NuN^NuPUTPICRGNVH(m4&T(k\(T. mpg gm2*+(,+,4f8g)E4)F8< NHk:NVLN^ _TONPUTPICVERBNV,_H(m4&TJ\g kBm(k\(T.+PTg<N/N(k\(T)GT.+TXg<Nz/N(k\(T)GX +Pg.>+lRlRHG>+lPlP< N>/N(k\(TB'/+/,NRJf/+/,<N/+NN(m4pLNuN^NuCHECKPICNVH n"n $na$THTITJaLN^ _ NSCALEPT NV,_6)Q4*RBg2IH0nBPNuЁfp0NuN^NuSCALE1 NVH n"n $na$THTITJaLN^ _ NMAPPT NV,_46)B8:*D0BCg2IH4jD@ЁJBjD@D0NuN^NuMAP1 NV,_// // // NpX NhN^NuMAPRECT /WTOA?HNu _>FWN _02@>N _.N _02A>N _02BWAgN _02i>N _02i>N _0"_""N _02i42_0BA2N _20F@2_Qh>N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.N _"W.NNVH` n B6($."HAAYƒ "h g$qg RACgX`=ALN^ _PONNVH|BA6. "n 8.4CBAg0@qm2`6`0@qm =C` =A`L>N^ _PON B2 _"_/JAg(?04 BJd4m SAQNuSA QNu4 Amܱm0HdSA0HS@"QAfNu0Hd SA0HS@# QAg`NV/ $n $R J0*R@j@40"n"Q2*`Q2*j0 @f0Q2<j`Q$_N^ _PONGETWIDTHNV,_ _$ "_"$A0<!Hg dB"`!`Qn$BNN^NuUNCOMPRENVH ".$n "n$ 8<WgRKQKQn攊DLN^ _ .NFMCOMPRENVH n"H6(hg$B0(gЀ2$I0"aSnLN^ _XNVXORFONTNVH n"H6(hgB0(gSC$I0ZSnLN^ _XNUNVXORFONVH n"H6(hSC0(S@2BBJ4RYQQLN^ _XNHXORFONTNV n 4.2YAYA0@6CC$n Rf4"P qg61CgRAAg@ `N^ _ RA>NHASHOFID _0X>NЁr̀MainProgQDMisc ,(JoNV0. nl=n `=n N^.NuMIN JoNV0.n l=n `=n N^.NuMAX JoNV/./. ?.NN^ _ NOVERGCHJoNVH/- HzNBg/- <?</- 0.H/?</-  LN^ _TONREAK Break: JoNVH&n<<8<>+ =GBE k @(p g@,f8Bg+$H,HA??<N<0<_=@no8<.RE EgBg R@??+N<>ng`=D 7G LN^.NuPNCHOOSJoNV/ n h/Bg/./. N0 _@(p g.H LX@HPP(_N^ _ NETFDIRTJoNV/ n0-H"(AJll-m `0,H".-A (_N^.NuZFROMH JoNV/ (n l!l l!l n f n !l(_N^ _PONELETEBKJoNVH(n ../.p/"( G)h G h&h)K'L G h!L G!LLN^ _ NAKEBKF JoNVH,. F(h . Ї&@ FlH@J@f*// N Д(` F]\g-L``(l Ff-m ``LN^ _PONKFINDCBJoNVH n (h&L(l n g\^g&L`-KLN^ _PONKFLOW JoNVH,. F(PB// N(_&LBl0@?@H*H@g S@gS@gD`f *ޅ// N`h`TJkl F0+jD@HШ (` 0+HІ( LX"D"`& F h/Bg//+N0 _@"LT!``/ / ?Nž l`ZJg // /N`6Jg // /NҾ m-L`-m LN^ _ NKCOMPACJoNVH(n >. Gg l @&p g+g K\*///,2N l @ p(f/ l @A/<N l @B0,"R@9@"Bg R@??,N<> l @&p g< l @BBg/ /N< l @Jg?<N l @!`LN^ _\ONREEIPN JoNVH(n , lhBg/ N> GfN.gFBg . ??<N<Bg/ ?/,&N:/ H/NB/ /`>Bg??<N>Bg/ ?/,&N:/ H/NB/ H/N-_LN^ _\ONBKNRELGJoNVH&n>. ,. BgBg.HA@20GRA?? | Ho/ | H/<NB/ H/N (_ f@B/ H//+N(_ W .Wg B/ ?N(_ f F ` .f@\]g 8`, \"+ Ҽ^g + 8` F `/ / N * | HnH Ї-@/ /.H /N`>H +'@ H@?TT.H@H?.HS@gS@gS@g` LT"F"` LX"F"9D` LT"F"LN^ _ NLLOCBK JoNVH>. GwlBg |S@?Bg?<NBN<>Hn/. Hn"Jnf>Hn?.Hn"Jnf(JfBF`<Hn?.H/HnH/Hn"$JngBn` .=@LN^ _\ONBMOREGRJoNVH(n .. @gS m2/p/" l Ь)@/ /,p /N` Ь)@LN^ _PONNLARGEHJoNVH,.//.<N| F-h(n B-Tع]]gB0@?@H.H@gS@g S@gS@g``` .ڇ``(.-T(` o&L.H@J@f..` 0.@?H. .((-DH@J@f // N$`ǹg~0@?@H.H@S@gS@g6`VJll F0,jD@HШ -@` 0,HІ-@ KX"n"`" F h/Bg//,N0 _@"KT!/ / ?N f,Jo .g?<N//. /N-ELN^ _ NBMAKEBKJoNVH(nB/ /0-| H/N:,0,| @_2-| H_gv/ /N0-HД(/ /0-H"/N00,|S@=@>,` @): @A:)HRGino0,|9@0-H",)A-l LN^.NuMAKEMORJoNVH&nBg/ /. N<0.F>/ H/<NJG^HǾ_g n (PB/ / n Y( D"D0@?"H@A?PPH +'@LN^ _ NROWHINPJoNVH(n0,R@@</ A/ @?N S@9@9F"=lBG` l @BRGino&TlR0@?@H*H@gU@g `2 *`* l/Bg/ /+N0 _@"KT!0,"S@9@"`LN^.NuNCLOGIPJoNVH&n (kf B/ NR(_g('T/ / ?.<N f ('L(m-LLN^ _\ONALLOCATJoNV n Y-@ n0@?@Y@=@N^ _PONBDATAOFJoNVH(n&n .HA@20H , F0@?@>H Ь)@/ /H/NA:\]g&)KLN^ _ NREEBK JoNV/. /.<NjN^ _PONREEH JoNVH&n>.Bg/ /. N8BgBg R@?? X@=@ | @mH n Y(@0.H@?TT/ 0.HЌ/ GH/N< GHЫ'@`0.Ho/ /. ?NN`B/ ?N,gt F Y* E=h n Y(@Bg E0@??0@??N>0@U@=@ ET/ LT/?.N9n n "F" EX"n "/ /<NLN^ _ NHANGESIJoNVH(n0.@H",/r/""Ҁ.o / /BgN l"n/ NP0,"S@9@"/ A/?.<N n nl$ nh nhBg/ /. N< l @Jg?<N l @!,$HR@@$ n\-HLN^ _ NCREATENJoNVH&n ,. k/Bg/ /N0 _@(p fB/ /Bg//+*NN. k/Bg/ /N0 _@(p* LXPP@Bg///+.Nd gBl/ Bg/ /NN8`& k/Bg/ /N0 _@(p L\.l` k$ L\.-GLN^ _PONMAPN JoNVH;| ;| ;|;|;|;|;|;|p+@B p+@p+@.'@gR$.#@gS (n$0.@A:&H f A)H&`)n&)n*)n .)n2Bl )n ( . r &@p HH&'K'K)K)K/ / /N )@9n)m0.S@=@BF` @): @A:)HRFinop;@~=nx` @>RDino/ A/ @?<N S@9@9G"=lBE` l @BREinoB,$B,%-L(LN^ _ NZINIT JoNVB/./. /.?<Bg/.BBBN +_ +m N^ _ NNITHEAPJoNVB/- ?.Nj-_ N^ _TONEWHANDLJoNVB/.N/.<NN^.NuISPOSEHJoNVB/. N/. ?.NVN^ _\ONETSIZE JoNVN^.NuOCKHANDJoNVN^.NuNLOCKHAJoNV=| N^.NuMCBOFN JoVNVV0.H@gS@g@S@gRFinoBnBg?/-HnNp: m P  pf2 m P  "n" m P  "n" n ` n BLN^ _NOCATEFOJo&NV& nCJp@"S@n/. Hn/.?:NHn" n JPn(/. n?Hn&" n JPn nB n RN^ _NZOPENFOJoNVH nCJp@"S@n(n BBBnHnHnHnHn/N~.g0Hn?-A/BHnBg0-H".Ҁ/"=m`,HnHnHnHnHn/NJno 8 `D`~Hn?.A/p/Hn<B"Jng8g Hn?.ڠ"8`.gBHn?.A/p/Hn<B"Hn?.A/p/Hn<B"` .Y-@-nB/- .TT?N-_Jg\ n&P6Hn?. n T/ .T/Hn<B"g Hn?.ڠ"8Jng/-/.NL8`*`8 .gHn/././N~8-nLN^ _ NEADFONTJoNVH(. /HnHn/NbJngB.;nʫ`BHnHn/N&_ f ;nʫB.`l|B/-?<Nv. m h/Bg/-/N0 _@,0 F\(H()G T* E0@ @g //,Nj/-/<NRFinoBnBg?/-HnNp: m P  I8)n)n LN^ _NASHENTRJoNV nCJp@"S@n/. HnHm?:fHn" n JPo`> n JPl6/. ?-Hn " n JPg`B.B.B./. ?-Hn "N^ _ NPENLIB JoNV/Hn?-/. p/Hn<B" n p0A> @ gRGHn?- . R/H/Hn<B".N^ _PONEADNAMEJoNV/Hn ?-A/p/Hn<B"0.T@@;@Jn g`Hn ?-A/p/Hn<B"=n~`lHn/.NHn ?-A/p/Hn<B"Hn ?-A/p/Hn<B"Hn ./ .//.NRGino.N^ _\ONILLLIBTJoNVH(nB/-?<N+_~` m P  BpRG GoHz4/,/N lJPn l?/NLN^.NuNITLIBR FONT.LIBJoNV nCJp@"S@n/. HnHn?:Hn" n JPo`Hn?.Hn "Jng n 0`d n JPlB.B.B./. ?.Hn "/. ?."nAt//.LHn<B" n JPg`/. ?."8 n JPN^ _ NETFILE JotNVlHHzD n/(/N "n iJPg`BGAtppRGns|`|AtppRGB`, m P.HIAt0pHH"A9RGR oAtppRGnq|` B/-?<0N.-_~ n~(P m P.HG)k,'n~AtppRGA-Hz nzAtppRGAtppRGAtppRGAtppRGAtppRGAtppRG.H9@AtppRGA-Hv nvP At0pRGpH Fo|`.HAt0pH RGR.i ..ooR.i ..qoR.i ..so|B`bAt0pRG m PH @rH@Fm|`* m PH @.HCt1pH@RGR.i ..moR oLN^.NuEADHEUR FONT.HEURJoNVHp+@BmIBTB,B,ACz 0/.HnHmHn?<"p nJPnh nJPlD/.?-Hn "/.?- </Hnp/Hn"$ nJPg`/.?-Bg" nJPg``<hNE. _XON o/><jNE. _XON _/><lNE.N/><NE.Nu/><NE.Nu/><NE.Nu/><NE.L2"_2N _ /><NE.N _/><NE.N _0/><NE.N/><NE./@NuL20/>< NE.N _/>< NE.N0/2/4/ o"oH 0$|&|@SB46Q |"|@L /><NE. _N/><NE.Nu/6/4/ 2/ 0//><NE.& _PON/><NE.Nu/><nNE.Nu/><pNE.Nu/><NE.Nu0/2/4/ o"oH 0$|&|@SB46Q |"|@L /><NE. _N _ /><NE.N/><NE./@Nu/><NE.L2"_2N/><NE./HNu/><NE./HNu/><NE.@Nu _/><NE.N/><NE.?@Nu _0/><NE.N _0/>< NE.N/><NE.?@Nu _0/><NE.N/><"NE./@Nu _ /><$NE.N/><&NE.Nu _ /><(NE.N/><*NE.?@Nu _0/><,NE.N _ /><.NE.N/><0NE.Nu _" /><2NE.N/><8NE.?@Nu/><NE.?@Nu _0/><NE.N _B@/><4NE.NL//><6NE.""""&NL2H/><<NE.222"LxNLH/><:NE.`LH/><NE.222"LxN/><>NE.L""_"N _" /><@NE.N _B@/><BNE.N/><rNE.@Nu _B@/><tNE.N/><NE.@Nu _B@/><NE.N/><NE./@Nu/><DNE./@Nu o/><FNE. _XO"_2N _0/><HNE.N _"0/><JNE.N _"0/><LNE.N _0/><NNE.NLH/><PNE.22222LNLH02468/><RNE.LN"oH02468/><TNE.LL"XON/><XNE./@Nu _ /><ZNE.NL H/><\NE.22222LNN^NuHWINTL O^E65RPH r^bqqTPROGRAM QDSample; { Sample program illustrating the use of QuickDraw. } USES {$U-} %{$U QD/QuickDraw } QuickDraw, %{$U QD/QDSupport } QDSupport; {$U+} TYPE IconData = ARRAY[0..95] OF INTEGER; VAR heapBuf: ARRAY[0..10000] OF INTEGER;{must keep array under 32K byte limit} $myPort: GrafPort; $icons: ARRAY[0..5] OF IconData; FUNCTION HeapFull(hz: QDPtr; bytesNeeded: INTEGER): INTEGER; { This function will be called if the heapZone runs out of space } BEGIN "WRITELN('The heap is full. The program must now terminate! '); "Halt; END; PROCEDURE InitIcons; { Manually stuff some icons. Normally we would read them from a file } BEGIN "{ Lisa } "StuffHex(@icons[0, 0],'000000000000000000000000000000000000001FFFFFFFFC'); "StuffHex(@icons[0,12],'00600000000601800000000B0600000000130FFFFFFFFFA3'); "StuffHex(@icons[0,24],'18000000004311FFFFF00023120000080F231200000BF923'); "StuffHex(@icons[0,36],'120000080F23120000080023120000080023120000080F23'); "StuffHex(@icons[0,48],'1200000BF923120000080F2312000008002311FFFFF00023'); "StuffHex(@icons[0,60],'08000000004307FFFFFFFFA30100000000260FFFFFFFFE2C'); "StuffHex(@icons[0,72],'18000000013832AAAAA8A9F0655555515380C2AAAA82A580'); "StuffHex(@icons[0,84],'800000000980FFFFFFFFF300800000001600FFFFFFFFFC00'); "{ Printer } "StuffHex(@icons[1, 0],'000000000000000000000000000000000000000000000000'); "StuffHex(@icons[1,12],'00000000000000007FFFFF00000080000280000111514440'); "StuffHex(@icons[1,24],'0002000008400004454510400004000017C00004A5151000'); "StuffHex(@icons[1,36],'0004000010000004A54510000004000017FE00F4A5151003'); "StuffHex(@icons[1,48],'0184000013870327FFFFF10F06400000021B0CFFFFFFFC37'); "StuffHex(@icons[1,60],'18000000006B3000000000D77FFFFFFFFFABC00000000356'); "StuffHex(@icons[1,72],'8000000001AC87F000000158841000CCC1B087F000CCC160'); "StuffHex(@icons[1,84],'8000000001C0C000000003807FFFFFFFFF0007800001E000'); "{ Trash Can } "StuffHex(@icons[2, 0],'000001FC000000000E0600000000300300000000C0918000'); "StuffHex(@icons[2,12],'00013849800000026C4980000004C0930000000861260000'); "StuffHex(@icons[2,24],'0010064FE0000031199830000020E6301800002418E00800'); "StuffHex(@icons[2,36],'0033E3801C0000180E002C00000FF801CC0000047FFE0C00'); "StuffHex(@icons[2,48],'000500004C000005259A4C000005250A4C00000525FA4C00'); "StuffHex(@icons[2,60],'000524024C00000524924C00600524924C0090E524924C7C'); "StuffHex(@icons[2,72],'932524924C82A44524924D01C88524924CF10C4524924C09'); "StuffHex(@icons[2,84],'0784249258E70003049233100000E000E40800001FFFC3F0'); "{ tray } "StuffHex(@icons[3, 0],'000000000000000000000000000000000000000000000000'); "StuffHex(@icons[3,12],'0000000000000000000000000000000000000007FFFFFFF0'); "StuffHex(@icons[3,24],'000E00000018001A00000038003600000078006A000000D8'); "StuffHex(@icons[3,36],'00D7FFFFFFB801AC000003580358000006B807FC000FFD58'); "StuffHex(@icons[3,48],'040600180AB80403FFF00D58040000000AB8040000000D58'); "StuffHex(@icons[3,60],'040000000AB807FFFFFFFD5806AC00000AB8055800000D58'); "StuffHex(@icons[3,72],'06B000000AB807FC000FFD70040600180AE00403FFF00DC0'); "StuffHex(@icons[3,84],'040000000B80040000000F00040000000E0007FFFFFFFC00'); "{ File Cabinet } "StuffHex(@icons[4, 0],'0007FFFFFC00000800000C00001000001C00002000003400'); "StuffHex(@icons[4,12],'004000006C0000FFFFFFD40000800000AC0000BFFFFED400'); "StuffHex(@icons[4,24],'00A00002AC0000A07F02D40000A04102AC0000A07F02D400'); "StuffHex(@icons[4,36],'00A00002AC0000A08082D40000A0FF82AC0000A00002D400'); "StuffHex(@icons[4,48],'00A00002AC0000BFFFFED40000800000AC0000BFFFFED400'); "StuffHex(@icons[4,60],'00A00002AC0000A07F02D40000A04102AC0000A07F02D400'); "StuffHex(@icons[4,72],'00A00002AC0000A08082D40000A0FF82AC0000A00002D800'); "StuffHex(@icons[4,84],'00A00002B00000BFFFFEE00000800000C00000FFFFFF8000'); "{ drawer } "StuffHex(@icons[5, 0],'000000000000000000000000000000000000000000000000'); "StuffHex(@icons[5,12],'000000000000000000000000000000000000000000000000'); "StuffHex(@icons[5,24],'000000000000000000000000000000000000000000000000'); "StuffHex(@icons[5,36],'00000000000000000000000000000000000000001FFFFFF0'); "StuffHex(@icons[5,48],'0000380000300000680000700000D80000D0003FFFFFF1B0'); "StuffHex(@icons[5,60],'0020000013500020000016B000201FE01D50002010201AB0'); "StuffHex(@icons[5,72],'00201FE01560002000001AC0002000001580002020101B00'); "StuffHex(@icons[5,84],'00203FF01600002000001C00002000001800003FFFFFF000'); END; PROCEDURE DrawIcon(whichIcon,h,v: INTEGER); VAR srcBits: BitMap; $srcRect,dstRect: Rect; BEGIN "srcBits.baseAddr:=@icons[whichIcon]; "srcBits.rowBytes:=6; "SetRect(srcBits.bounds,0,0,48,32); "srcRect:=srcBits.bounds; "dstRect:=srcRect; "OffsetRect(dstRect,h,v); "CopyBits(srcBits,thePort^.portBits,srcRect,dstRect,srcOr,Nil); END; PROCEDURE DrawStuff; VAR i: INTEGER; $tempRect: Rect; $myPoly: PolyHandle; $myRgn: RgnHandle; $myPattern: Pattern; BEGIN "StuffHex(@myPattern,'8040200002040800'); "tempRect := thePort^.portRect; "ClipRect(tempRect); "EraseRoundRect(tempRect,30,20); "FrameRoundRect(tempRect,30,20); "{ draw two horizontal lines across the top } "MoveTo(0,18); "LineTo(719,18); "MoveTo(0,20); "LineTo(719,20); "{ draw divider lines } "MoveTo(0,134); "LineTo(719,134); "MoveTo(0,248); "LineTo(719,248); "MoveTo(240,21); "LineTo(240,363); "MoveTo(480,21); "LineTo(480,363); "{ draw title } "TextFont(0); "MoveTo(210,14); "DrawString('Look what you can draw with QuickDraw'); "{--------- draw text samples --------- } "MoveTo(80,34); Drawstring('Text'); "TextFace([bold]); "MoveTo(70,55); Drawstring('Bold'); "TextFace([italic]); "MoveTo(70,70); Drawstring('Italic'); "TextFace([underline]); "MoveTo(70,85); Drawstring('Underline'); "TextFace([outline]); "MoveTo(70,100); Drawstring('Outline'); "TextFace([shadow]); "MoveTo(70,115); Drawstring('Shadow'); "TextFace([]); { restore to normal } "{ --------- draw line samples --------- } "MoveTo(330,34); Drawstring('Lines'); "MoveTo(280,25); Line(160,40); "PenSize(3,2); "MoveTo(280,35); Line(160,40); "PenSize(6,4); "MoveTo(280,46); Line(160,40); "PenSize(12,8); "PenPat(gray); "MoveTo(280,61); Line(160,40); "PenSize(15,10); "PenPat(myPattern); "MoveTo(280,80); Line(160,40); "PenNormal; "{ --------- draw rectangle samples --------- } "MoveTo(560,34); Drawstring('Rectangles'); "SetRect(tempRect,510,40,570,70); "FrameRect(tempRect); "OffsetRect(tempRect,25,15); "PenSize(3,2); "EraseRect(tempRect); "FrameRect(tempRect); "OffsetRect(tempRect,25,15); "PaintRect(tempRect); "OffsetRect(tempRect,25,15); "PenNormal; "FillRect(tempRect,gray); "FrameRect(tempRect); "OffsetRect(tempRect,25,15); "FillRect(tempRect,myPattern); "FrameRect(tempRect); "{ --------- draw roundRect samples --------- } "MoveTo(70,148); Drawstring('RoundRects'); "SetRect(tempRect,30,150,90,180); "FrameRoundRect(tempRect,30,20); "OffsetRect(tempRect,25,15); "PenSize(3,2); "EraseRoundRect(tempRect,30,20); "FrameRoundRect(tempRect,30,20); "OffsetRect(tempRect,25,15); "PaintRoundRect(tempRect,30,20); "OffsetRect(tempRect,25,15); "PenNormal; "FillRoundRect(tempRect,30,20,gray); "FrameRoundRect(tempRect,30,20); "OffsetRect(tempRect,25,15); "FillRoundRect(tempRect,30,20,myPattern); "FrameRoundRect(tempRect,30,20); "{ --------- draw bit image samples --------- } "MoveTo(320,148); Drawstring('Bit Images'); "DrawIcon(0,266,156); "DrawIcon(1,336,156); "DrawIcon(2,406,156); "DrawIcon(3,266,196); "DrawIcon(4,336,196); "DrawIcon(5,406,196); "{ --------- draw Wedge samples --------- } "MoveTo(570,148); Drawstring('Wedges'); "SetRect(tempRect,520,153,655,243); "FillArc(tempRect,135,65,dkGray); "FillArc(tempRect,200,130,myPattern); "FillArc(tempRect,330,75,gray); "FrameArc(tempRect,135,270); "OffsetRect(tempRect,20,0); "PaintArc(tempRect,45,90); "{ --------- draw polygon samples --------- } "MoveTo(80,262); Drawstring('Polygons'); "myPoly:=OpenPoly; $MoveTo(30,290); $LineTo(30,280); $LineTo(50,265); $LineTo(90,265); $LineTo(80,280); $LineTo(95,290); $LineTo(30,290); "ClosePoly; { end of definition } "FramePoly(myPoly); "OffsetPoly(myPoly,25,15); "PenSize(3,2); "ErasePoly(myPoly); "FramePoly(myPoly); "OffsetPoly(myPoly,25,15); "PaintPoly(myPoly); "OffsetPoly(myPoly,25,15); "PenNormal; "FillPoly(myPoly,gray); "FramePoly(myPoly); "OffsetPoly(myPoly,25,15); "FillPoly(myPoly,myPattern); "FramePoly(myPoly); "KillPoly(myPoly); "{ --------- demonstrate region clipping --------- } "MoveTo(320,262); Drawstring('Regions'); "myRgn:=NewRgn; "OpenRgn; $ShowPen; $SetRect(tempRect,260,270,460,350); $FrameRoundRect(tempRect,24,16); $MoveTo(275,335); { define triangular hole } $LineTo(325,285); $LineTo(375,335); $LineTo(275,335); $SetRect(tempRect,365,277,445,325); { oval hole } $FrameOval(tempRect); $HidePen; "CloseRgn(myRgn); { end of definition } "SetClip(myRgn); "FOR i:=0 TO 6 DO { draw stuff inside the clip region } $BEGIN &MoveTo(260,280+12*i); &Drawstring('Arbitrary Clipping Regions'); $END; "ClipRect(thePort^.portRect); "DisposeRgn(myRgn); "{ --------- draw oval samples --------- } "MoveTo(580,262); Drawstring('Ovals'); "SetRect(tempRect,510,264,570,294); "FrameOval(tempRect); "OffsetRect(tempRect,25,15); "PenSize(3,2); "EraseOval(tempRect); "FrameOval(tempRect); "OffsetRect(tempRect,25,15); "PaintOval(tempRect); "OffsetRect(tempRect,25,15); "PenNormal; "FillOval(tempRect,gray); "FrameOval(tempRect); "OffsetRect(tempRect,25,15); "FillOval(tempRect,myPattern); "FrameOval(tempRect); END; { DrawStuff } BEGIN { main program } "{----- Initialization - Generic to all applications using QuickDraw -----} "QDInit(@heapBuf, @heapBuf[10000], @HeapFull); { Must do this once at beginning } "OpenPort(@myPort); "PaintRect(thePort^.portRect); { Paint grey background } "InitIcons; "DrawStuff; "Tone(2000, 500); { Beep tone of (1/2000)*10^6 == 500 cycles/sec for 6500 milliseconds } "ReadLn; { Wait until RETURN entered before terminating program } END. 3. "6F^5D!$ǐ^  ̛WɏQD/QuickDraw.OBJ QD/Graflib.OBJ QD/GrafUtil.OBJ QD/Graf3D.OBJ QD/HWintl.OBJ QD/UnitStd.OBJ QD/UnitHz.OBJ QD/Storage.OBJ QD/FontMgr.OBJ QD/QDSupport.OBJ QDSUPPORQDINIT QDINIT QDINIT FMINIT FMINIT 0HIDECURSHIDECURS(INITCURSINITCURS$INITGRAFINITGRAF INITHEAPINITHEAPQUICKDRANJoNV/./. /.NA/NNNHnNN^ _ NDINIT FGETMOUSE GETMOUSEGETMOUSEGLOBALTOGLOBALTO MOUSELOCMOUSELOC:JoNV nHh n/N/.NN^.NuETMOUSE2MOUSEBUT MOUSEBUTMOUSEBUTKEYISDOWKEYISDOW,JoNVBg<N_N^NuOUSEBUT$TONE TONE TONE BEEP BEEP .JoNV/. /.NN^ _PONONE & INTERFACE USES {$U-} ${$U QD/UnitStd.OBJ } UnitStd, ${$U QD/UnitHz.OBJ } UnitHz, ${$U QD/Hardware.OBJ } Hardware, {NOTE: Link against QD/HWintl.OBJ} ${$U QD/Fontmgr.OBJ } Fontmgr, ${$U QD/QuickDraw.OBJ } QuickDraw; {NOTE: Link also against QD/Graflib.OBJ} {$U+} CONST "{---------- Font Numbers ----------} "FTile12 = 4; {proportional} "FTile18 = 5; {proportional} "FTile24 = 6; {proportional} "FP15Tile = 7; {Monospaced - 8 lines/inch & 15 chars/inch} "FP12Tile = 8; {Monospaced - 6 lines/inch & 12 chars/inch} "FP10Tile = 9; {Monospaced - 6 lines/inch & 10 chars/inch} "FCent12 = 10; {proportional} "FCent18 = 11; {proportional} "FCent24 = 12; {proportional} "FP12Cent = 13; {Monospaced - 6 lines/inch & 12 chars/inch} "FP10Cent = 14; {Monospaced - 6 lines/inch & 10 chars/inch} "FP20Tile = 19; {Monospaced} PROCEDURE QDInit(startPtr, limitPtr: QDPtr; ErrorProc: QDPtr); { QDInit: Initializes QuickDraw unit by setting up its heap zone, 0global vars, cursor, and the Font Manager it calls on. } PROCEDURE GetMouse(VAR pt: Point); { GetMouse: Returns the current mouse location in the local coordinates 0of the current grafPort. } FUNCTION MouseButton: BOOLEAN; { MouseButton: Returns TRUE if the mouse button is currently held down, 0otherwise FALSE. } PROCEDURE Tone(waveLength, duration: LongInt); { Tone: Produces a square wave tone of the specified wavelength 0(microseconds) for the specified duration (milliseconds). } IMPLEMENTATION QUICKDRA0 { Copyright 1983 Apple Computer Inc. } { Written by Bill Atkinson } INTERFACE CONST srcCopy = 0; { the 16 transfer modes } &srcOr = 1; &srcXor = 2; &srcBic = 3; ¬SrcCopy = 4; ¬SrcOr = 5; ¬SrcXor = 6; ¬SrcBic = 7; &patCopy = 8; &patOr = 9; &patXor = 10; &patBic = 11; ¬PatCopy = 12; ¬PatOr = 13; ¬PatXor = 14; ¬PatBic = 15; { QuickDraw color separation constants } &normalBit = 0; { normal screen mapping } &inverseBit = 1; { inverse screen mapping } &redBit = 4; { RGB additive mapping } &greenBit = 3; &blueBit = 2; &cyanBit = 8; { CMYBk subtractive mapping } &magentaBit = 7; &yellowBit = 6; &blackBit = 5; &blackColor = 33; { colors expressed in these mappings } &whiteColor = 30; &redColor = 205; &greenColor = 341; &blueColor = 409; &cyanColor = 273; &magentaColor = 137; &yellowColor = 69; &picLParen = 0; { standard picture comments } &picRParen = 1; TYPE QDByte = -128..127; %QDPtr = ^QDByte; { blind pointer } %QDHandle = ^QDPtr; { blind handle } %Str255 = String[255]; %Pattern = PACKED ARRAY[0..7] OF 0..255; %Bits16 = ARRAY[0..15] OF INTEGER; %VHSelect = (v,h); %GrafVerb = (frame,paint,erase,invert,fill); %StyleItem = (bold,italic,underline,outline,shadow,condense,extend); %Style = SET OF StyleItem; %FontInfo = RECORD 4ascent: INTEGER; 4descent: INTEGER; 4widMax: INTEGER; 4leading: INTEGER; 2END; %Point = RECORD CASE INTEGER OF /0: (v: INTEGER; 3h: INTEGER); /1: (vh: ARRAY[VHSelect] OF INTEGER); -END; %Rect = RECORD CASE INTEGER OF .0: (top: INTEGER; 2left: INTEGER; 2bottom: INTEGER; 2right: INTEGER); .1: (topLeft: Point; 2botRight: Point); ,END; %BitMap = RECORD 0baseAddr: QDPtr; 0rowBytes: INTEGER; 0bounds: Rect; .END; %Cursor = RECORD 0data: Bits16; 0mask: Bits16; 0hotSpot: Point; .END; %PenState = RECORD 2pnLoc: Point; 2pnSize: Point; 2pnMode: INTEGER; 2pnPat: Pattern; 0END; %PolyHandle = ^PolyPtr; %PolyPtr = ^Polygon; %Polygon = RECORD 4polySize: INTEGER; 4polyBBox: Rect; 4polyPoints: ARRAY[0..0] OF Point; 2END; %RgnHandle = ^RgnPtr; %RgnPtr = ^Region; %Region = RECORD 4rgnSize: INTEGER; { rgnSize = 10 for rectangular } 4rgnBBox: Rect; 4{ plus more data if not rectangular } 2END; %PicHandle = ^PicPtr; %PicPtr = ^Picture; %Picture = RECORD 4picSize: INTEGER; 4picFrame: Rect; 4{ plus byte codes for picture content } 2END; %QDProcsPtr = ^QDProcs; %QDProcs = RECORD 1textProc: QDPtr; 1lineProc: QDPtr; 1rectProc: QDPtr; 1rRectProc: QDPtr; 1ovalProc: QDPtr; 1arcProc: QDPtr; 1polyProc: QDPtr; 1rgnProc: QDPtr; 1bitsProc: QDPtr; 1commentProc: QDPtr; 1txMeasProc: QDPtr; 1getPicProc: QDPtr; 1putPicProc: QDPtr; /END; %GrafPtr = ^GrafPort; %GrafPort = RECORD 2device: INTEGER; 2portBits: BitMap; 2portRect: Rect; 2visRgn: RgnHandle; 2clipRgn: RgnHandle; 2bkPat: Pattern; 2fillPat: Pattern; 2pnLoc: Point; 2pnSize: Point; 2pnMode: INTEGER; 2pnPat: Pattern; 2pnVis: INTEGER; 2txFont: INTEGER; 2txFace: Style; 2txMode: INTEGER; 2txSize: INTEGER; 2spExtra: LongInt; 2fgColor: LongInt; 2bkColor: LongInt; 2colrBit: INTEGER; 2patStretch: INTEGER; 2picSave: QDHandle; 2rgnSave: QDHandle; 2polySave: QDHandle; 2grafProcs: QDProcsPtr; 0END; VAR thePort: GrafPtr; $white: Pattern; $black: Pattern; $gray: Pattern; $ltGray: Pattern; $dkGray: Pattern; $arrow: Cursor; $screenBits: BitMap; $randSeed: LongInt; { GrafPort Routines } PROCEDURE InitGraf (globalPtr: QDPtr); PROCEDURE OpenPort (port: GrafPtr); PROCEDURE InitPort (port: GrafPtr); PROCEDURE ClosePort (port: GrafPtr); PROCEDURE SetPort (port: GrafPtr); PROCEDURE GetPort (VAR port: GrafPtr); PROCEDURE GrafDevice (device: INTEGER); PROCEDURE SetPortBits(bm: BitMap); PROCEDURE PortSize (width,height: INTEGER); PROCEDURE MovePortTo (leftGlobal,topGlobal: INTEGER); PROCEDURE SetOrigin (h,v: INTEGER); PROCEDURE SetClip (rgn: RgnHandle); PROCEDURE GetClip (rgn: RgnHandle); PROCEDURE ClipRect (r: Rect); PROCEDURE BackPat (pat: Pattern); { Cursor Routines } PROCEDURE InitCursor; PROCEDURE SetCursor(crsr: Cursor); PROCEDURE HideCursor; PROCEDURE ShowCursor; PROCEDURE ObscureCursor; { Line Routines } PROCEDURE HidePen; PROCEDURE ShowPen; PROCEDURE GetPen (VAR pt: Point); PROCEDURE GetPenState(VAR pnState: PenState); PROCEDURE SetPenState(pnState: PenState); PROCEDURE PenSize (width,height: INTEGER); PROCEDURE PenMode (mode: INTEGER); PROCEDURE PenPat (pat: Pattern); PROCEDURE PenNormal; PROCEDURE MoveTo (h,v: INTEGER); PROCEDURE Move (dh,dv: INTEGER); PROCEDURE LineTo (h,v: INTEGER); PROCEDURE Line (dh,dv: INTEGER); { Text Routines } PROCEDURE TextFont (font: INTEGER); PROCEDURE TextFace (face: Style); PROCEDURE TextMode (mode: INTEGER); PROCEDURE TextSize (size: INTEGER); PROCEDURE SpaceExtra (extra: LongInt); PROCEDURE DrawChar (ch: char); PROCEDURE DrawString (s: Str255); PROCEDURE DrawText (textBuf: QDPtr; firstByte,byteCount: INTEGER); FUNCTION CharWidth (ch: CHAR): INTEGER; FUNCTION StringWidth (s: Str255): INTEGER; FUNCTION TextWidth (textBuf: QDPtr; firstByte,byteCount: INTEGER): INTEGER; PROCEDURE GetFontInfo (VAR info: FontInfo); { Point Calculations } PROCEDURE AddPt (src: Point; VAR dst: Point); PROCEDURE SubPt (src: Point; VAR dst: Point); PROCEDURE SetPt (VAR pt: Point; h,v: INTEGER); FUNCTION EqualPt (pt1,pt2: Point): BOOLEAN; PROCEDURE ScalePt (VAR pt: Point; fromRect,toRect: Rect); PROCEDURE MapPt (VAR pt: Point; fromRect,toRect: Rect); PROCEDURE LocalToGlobal (VAR pt: Point); PROCEDURE GlobalToLocal (VAR pt: Point); { Rectangle Calculations } PROCEDURE SetRect (VAR r: Rect; left,top,right,bottom: INTEGER); FUNCTION EqualRect (rect1,rect2: Rect): BOOLEAN; FUNCTION EmptyRect (r: Rect): BOOLEAN; PROCEDURE OffsetRect (VAR r: Rect; dh,dv: INTEGER); PROCEDURE MapRect (VAR r: Rect; fromRect,toRect: Rect); PROCEDURE InsetRect (VAR r: Rect; dh,dv: INTEGER); FUNCTION SectRect (src1,src2: Rect; VAR dstRect: Rect): BOOLEAN; PROCEDURE UnionRect (src1,src2: Rect; VAR dstRect: Rect); FUNCTION PtInRect (pt: Point; r: Rect): BOOLEAN; PROCEDURE Pt2Rect (pt1,pt2: Point; VAR dstRect: Rect); { Graphical Operations on Rectangles } PROCEDURE FrameRect (r: Rect); PROCEDURE PaintRect (r: Rect); PROCEDURE EraseRect (r: Rect); PROCEDURE InvertRect (r: Rect); PROCEDURE FillRect (r: Rect; pat: Pattern); { RoundRect Routines } PROCEDURE FrameRoundRect (r: Rect; ovWd,ovHt: INTEGER); PROCEDURE PaintRoundRect (r: Rect; ovWd,ovHt: INTEGER); PROCEDURE EraseRoundRect (r: Rect; ovWd,ovHt: INTEGER); PROCEDURE InvertRoundRect (r: Rect; ovWd,ovHt: INTEGER); PROCEDURE FillRoundRect (r: Rect; ovWd,ovHt: INTEGER; pat: Pattern); { Oval Routines } PROCEDURE FrameOval (r: Rect); PROCEDURE PaintOval (r: Rect); PROCEDURE EraseOval (r: Rect); PROCEDURE InvertOval (r: Rect); PROCEDURE FillOval (r: Rect; pat: Pattern); { Arc Routines } PROCEDURE FrameArc (r: Rect; startAngle,arcAngle: INTEGER); PROCEDURE PaintArc (r: Rect; startAngle,arcAngle: INTEGER); PROCEDURE EraseArc (r: Rect; startAngle,arcAngle: INTEGER); PROCEDURE InvertArc (r: Rect; startAngle,arcAngle: INTEGER); PROCEDURE FillArc (r: Rect; startAngle,arcAngle: INTEGER; pat: Pattern); PROCEDURE PtToAngle (r: Rect; pt: Point; VAR angle: INTEGER); { Polygon Routines } FUNCTION OpenPoly: PolyHandle; PROCEDURE ClosePoly; PROCEDURE KillPoly (poly: PolyHandle); PROCEDURE OffsetPoly (poly: PolyHandle; dh,dv: INTEGER); PROCEDURE MapPoly (poly: PolyHandle; fromRect,toRect: Rect); PROCEDURE FramePoly (poly: PolyHandle); PROCEDURE PaintPoly (poly: PolyHandle); PROCEDURE ErasePoly (poly: PolyHandle); PROCEDURE InvertPoly (poly: PolyHandle); PROCEDURE FillPoly (poly: PolyHandle; pat: Pattern); { Region Calculations } FUNCTION NewRgn: RgnHandle; PROCEDURE DisposeRgn(rgn: RgnHandle); PROCEDURE CopyRgn (srcRgn,dstRgn: RgnHandle); PROCEDURE SetEmptyRgn(rgn: RgnHandle); PROCEDURE SetRectRgn(rgn: RgnHandle; left,top,right,bottom: INTEGER); PROCEDURE RectRgn (rgn: RgnHandle; r: Rect); PROCEDURE OpenRgn; PROCEDURE CloseRgn (dstRgn: RgnHandle); PROCEDURE OffsetRgn (rgn: RgnHandle; dh,dv: INTEGER); PROCEDURE MapRgn (rgn: RgnHandle; fromRect,toRect: Rect); PROCEDURE InsetRgn (rgn: RgnHandle; dh,dv: INTEGER); PROCEDURE SectRgn (srcRgnA,srcRgnB,dstRgn: RgnHandle); PROCEDURE UnionRgn (srcRgnA,srcRgnB,dstRgn: RgnHandle); PROCEDURE DiffRgn (srcRgnA,srcRgnB,dstRgn: RgnHandle); PROCEDURE XorRgn (srcRgnA,srcRgnB,dstRgn: RgnHandle); FUNCTION EqualRgn (rgnA,rgnB: RgnHandle): BOOLEAN; FUNCTION EmptyRgn (rgn: RgnHandle): BOOLEAN; FUNCTION PtInRgn (pt: Point; rgn: RgnHandle): BOOLEAN; FUNCTION RectInRgn (r: Rect; rgn: RgnHandle): BOOLEAN; { Graphical Operations on Regions } PROCEDURE FrameRgn (rgn: RgnHandle); PROCEDURE PaintRgn (rgn: RgnHandle); PROCEDURE EraseRgn (rgn: RgnHandle); PROCEDURE InvertRgn (rgn: RgnHandle); PROCEDURE FillRgn (rgn: RgnHandle; pat: Pattern); { Graphical Operations on BitMaps } PROCEDURE ScrollRect(dstRect: Rect; dh,dv: INTEGER; updateRgn: rgnHandle); PROCEDURE CopyBits (srcBits,dstBits: BitMap; 5srcRect,dstRect: Rect; 5mode: INTEGER; 5maskRgn: RgnHandle); { Picture Routines } FUNCTION OpenPicture(picFrame: Rect): PicHandle; PROCEDURE ClosePicture; PROCEDURE DrawPicture(myPicture: PicHandle; dstRect: Rect); PROCEDURE PicComment(kind,dataSize: INTEGER; dataHandle: QDHandle); PROCEDURE KillPicture(myPicture: PicHandle); { The Bottleneck Interface: } PROCEDURE SetStdProcs(VAR procs: QDProcs); PROCEDURE StdText (count: INTEGER; textAddr: QDPtr; numer,denom: Point); PROCEDURE StdLine (newPt: Point); PROCEDURE StdRect (verb: GrafVerb; r: Rect); PROCEDURE StdRRect (verb: GrafVerb; r: Rect; ovWd,ovHt: INTEGER); PROCEDURE StdOval (verb: GrafVerb; r: Rect); PROCEDURE StdArc (verb: GrafVerb; r: Rect; startAngle,arcAngle: INTEGER); PROCEDURE StdPoly (verb: GrafVerb; poly: PolyHandle); PROCEDURE StdRgn (verb: GrafVerb; rgn: RgnHandle); PROCEDURE StdBits (VAR srcBits: BitMap; VAR srcRect,dstRect: Rect; 6mode: INTEGER; maskRgn: RgnHandle); PROCEDURE StdComment (kind,dataSize: INTEGER; dataHandle: QDHandle); FUNCTION StdTxMeas (count: INTEGER; textAddr: QDPtr; 6VAR numer,denom: Point; VAR info: FontInfo): INTEGER; PROCEDURE StdGetPic (dataPtr: QDPtr; byteCount: INTEGER); PROCEDURE StdPutPic (dataPtr: QDPtr; byteCount: INTEGER); { Misc Utility Routines } FUNCTION GetPixel (h,v: INTEGER): BOOLEAN; FUNCTION Random: INTEGER; PROCEDURE StuffHex (thingptr: QDPtr; s:Str255); PROCEDURE ForeColor (color: LongInt); PROCEDURE BackColor (color: LongInt); PROCEDURE ColorBit (whichBit: INTEGER); IMPLEMENTATION STORAGE INITHEAPQDMisc INITHEAPINITHEAPHZINIT HZINIT (STORAGE 20,PJoNVB/./. /.?<Bg/.BBBN+_+mN^ _ NNITHEAPHSETHEAP QDMisc SETHEAP SETHEAP STORAGE  ,JoNV+n+mN^.NuETHEAP $GETHEAP QDMisc GETHEAP GETHEAP STORAGE (JoNV n N^.NuETHEAP  NEWPTR QDMisc NEWPTR NEWPTR ALLOCBK ALLOCBK STORAGE >JoNV/-A/?.<N-n N^ _TONEWPTR 6DISPOSEPQDMisc DISPOSEPDISPOSEPFREEBK FREEBK STORAGE 2JoNV/-A/<NN^.NuISPOSEP*NEWHANDLQDMisc NEWHANDLNEWHANDLHALLOCATHALLOCATSTORAGE 4JoNVB/-?.N-_ N^ _TONEWHANDL,DISPOSEHQDMisc DISPOSEHDISPOSEHFREEBK FREEBK HZFROMH HZFROMH 6JoNVB/.N/.<NN^.NuISPOSEH.SETSIZE QDMisc SETSIZE SETSIZE CHANGESICHANGESIHZFROMH HZFROMH 8JoNVB/. N/. ?.NN^ _\ONETSIZE 0GETSIZE QDMisc GETSIZE GETSIZE CBDATAOFCBDATAOFHZFROMH HZFROMH 8JoNVBgB/.N/.N=_ N^.NuETSIZE 0LOCKHANDQDMisc LOCKHANDLOCKHAND JoNVN^.NuOCKHANDUNLOCKHAQDMisc UNLOCKHAUNLOCKHA JoNVN^.NuNLOCKHA INTERFACE {$U-} USES {$U obj:UnitStd } UnitStd, %{$U obj:UnitHz } UnitHz; TYPE Byte = 0..255; %SignedByte = -128..127; %Ptr = TP; { blind pointer } %Handle = TH; { pointer to a master ptr } %RelHandle = INTEGER; { 16 bit offset from heap start to a master ptr } %ProcPtr = TProc; { pointer to a procedure } VAR theHeap: THz; $ordHeap: LongInt; PROCEDURE InitHeap(startPtr,limitPtr: Ptr; errorProc: ProcPtr); PROCEDURE SetHeap(hz: Thz); PROCEDURE GetHeap(VAR hz: Thz); FUNCTION NewPtr(byteCount: INTEGER): Ptr; PROCEDURE DisposePtr(p: Ptr); FUNCTION NewHandle(byteCount: INTEGER): Handle; PROCEDURE DisposeHandle(h: Handle); PROCEDURE SetSize(h: Handle; newSize: INTEGER); FUNCTION GetSize(h: Handle): INTEGER; PROCEDURE LockHandle (h: Handle); PROCEDURE UnlockHandle (h: Handle); IMPLEMENTATION PROCEDURE InitHeap(* startPtr,limitPtr: Ptr; errorProc ProcPtr *); WHERE SegHz WHERE WHERE /WTOA?HNuWNOT SegHz WNOT WNOT  _>FWNЁWXOR SegHz WXOR WXOR  _02@>NЁ PREGGLOBSegHz PREGGLOBPREGGLOB _.NЁWAND SegHz WAND WAND  _02A>NЁ FINSET SegHz FINSET FINSET  _02BWAgNЁWSHLFT SegHz WSHLFT WSHLFT  _02i>NЁ WSHRT SegHz WSHRT WSHRT  _02i>NЁ DSHRT SegHz DSHRT DSHRT  _0"_""NЁASGNFIELSegHz ASGNFIELASGNFIEL _02i42_0BA2NЁVALOFFIESegHz VALOFFIEVALOFFIE _20F@2_Qh>NЁCALLSEQ SegHz CALLSEQ CALLSEQ  _"W.NсCALLFREESegHz CALLFREECALLFREE _"W.NсPXHCS SegHz PXHCS PXHCS  _"W.NсCALLFINDSegHz CALLFINDCALLFIND _"W.NсCALLGENCSegHz CALLGENCCALLGENC _"W.NсCALLGENISegHz CALLGENICALLGENI _"W.NсCALLHILISegHz CALLHILICALLHILI _"W.NсCALLFSELSegHz CALLFSELCALLFSEL _"W.NсCALLCBMOSegHz CALLCBMOCALLCBMO _"W.NсCBOFN SegHz CBOFN CBOFN  _"W.NсFSWAPINNSegHz FSWAPINNFSWAPINN _"W.NсSWAPOUTNSegHz SWAPOUTNSWAPOUTN _"W.NсCALLHEURSegHz CALLHEURCALLHEUR _"W.NсCALLERR SegHz CALLERR CALLERR  _"W.NсIPNMAPN SegHz IPNMAPN IPNMAPN `NVH` n B6($."HAAYƒ "h g$qg RACgX`=ALN^ _PONЁXIBINSEARSegHz IBINSEARIBINSEARfNVH|BA6. "n 8.4CBAg0@qm2`6`0@qm =C` =A`L>N^ _PONЁ^MOVEOVRGSegHz MOVEOVRGMOVEOVRG B2 _"_/JAg(?04 BJd4m SAQNuSA QNu4 Amܱm0HdSA0HS@"QAfNu0Hd SA0HS@# QAg`UNITHZ @"CBOFHZ QDMisc CBOFHZ CBOFHZ 4JoNV n (r Ё-@ N^.NuBOFHZ ,IPNCHOOSQDMisc $3000000IPNCHOOSWAND WAND RJoNVH&n<<8<>+ =GBE k @(p g@,f8Bg+$H,HA??<N0<_=@no8<.RE EgBg R@??+N>ng`=D 7G LN^.NuPNCHOOSHLOCKN QDMisc HLOCKN HLOCKN IPNMAPN IPNMAPN UNITHZ >`JoNV/ n h/Bg/./. N0 _@(p g LXPP@-m(_N^ _ NLOCKN XUNLOCKN QDMisc UNLOCKN UNLOCKN IPNMAPN IPNMAPN RJoNV/ n h/Bg/. /.N0 _@(p gl(_N^ _PONNLOCKN JSETFDIRTQDMisc SETFDIRTSETFDIRTIPNMAPN IPNMAPN dJoNV/ n h/Bg/./. N0 _@(p g.H LX@HPP(_N^ _ NETFDIRT\PXN QDMisc $5000000PXN %W_LN %W_LN %W_C %W_C f@%W_I %W_I zV0%W_STR %W_STR JoNV/ A(H/- HzBgN/- HH/?<N/- < ?<N/- ,HH/?<N/- < ?<N/- 0,H/?<N/- <]?<N/- N(_N^.NuXN [ifil bhi iblo]: [CBPXBK QDMisc $6000000CBPXBK %W_C %W_C r"%W_LN %W_LN Hz*؉*%W_I %W_I v@bFjN0%W_STR %W_STR h$T8x\@$5000000PXN IPNMAPN IPNMAPN XJoNVH(nH@J@g0@?@H.` .-G/- HzBgN/- / ?<N/- HzBgN/- /?<N/- HzBgNH@gS@gpS@gS@gL`/- HzBgN/- /,?<N/- HzfBgN/- /,?<N/- N`/- Hz6BgN/- N`Jll n &h 0,jD@`&n  LX,gX/- N/- HzBgN/- /?<N/- HzBgN/- /?<N/- <)?<N/- N/- HzdBgN/- 0,H/?<N/- N`Bg/. /,N:/- HzBgN/- H/?<N/- HzBgN/,N LT(/- HzBgN/- ,HH/?<N/- HzBgN/- ,V@H/?<N/- N n h @g4/- HzDBgN/- /?<N/- <)?<N/- NLN^ _PONBPXBK Nob error - rgpnob[ipn] <> nob ( ; fDirty:; ubt: ; N; ipn: Std; oh: ) <> bk^.data (Back pointer error - h^ (Nrel ; bkfPrv: Free; bkfNxt: ; tybk; cb:bk: PPXHZ QDMisc PXHZ PXHZ %W_C %W_C B%W_LN %W_LN J0%W_I %W_I 2rN,dF*2%W_STR %W_STR "\:rT8$6000000CBPXBK JoNVH(n/- HzBgN/- / ?<N/- HzBgN/- /?<N/- HzBgN/- /,?<N/- HzBgN/- /,?<N/- N/- HzPBgN/- /, ?<N/- Hz$BgN/- 0,H/?<N/- HzBgN/- /,?<N/- HzBgN/- /,?<N/- N/- HzBgN/- /,?<N/- HzlBgN/- 0,H/?<N/- Hz>BgN/- ,$HH/?<N/- HzBgN/- 0, H/?<N/- N&T\_gB/ / N`/- HzBgN/- NB&lB/ / Nޟ&kf r gR/- HzrBgN/- /?<N/- HzDBgN/- /,?<N/- <)?<N/- NLN^.NuXHZ ) <> hz^.cbFree( cbFreeT ( Free List: , ipnCur: , ubtCur: , mskIpnLst: rgpnob: , cbFree: , hFstFree: , ipPoolMac: pBase: , bkfFst:  bkLst: , bkFst: hz: HEAPERR QDMisc $7000000HEAPERR %W_LN %W_LN \lV%W_C %W_C TN%W_I %W_I D&> %W_STR %W_STR 4zd.Jo\NV\/ n CJp"S@n2(n/- Hz2BgN/- /, ?<N/- <)?<N/- N/- HnBgN/- N/- HzBgN,HgS@g S@g0S@g>S@gL`ZA\Cp S@n`HA\Cfp S@n0`4A\C.p S@n`"A\Cp S@n`A\Cp S@n/- Hn\BgN/- N/- HzBgN/- 0.H/?<N/- HzJBgN/- /.?<N/- <)?<N/- NB,(_N^ _NEAPERR >; Suspected bad value: ( Error ID: <&Contiguous check of named objects pool'Contiguous check of master pointer pool"Free master pointer list traversalFree block list traversalContiguous block checkError found during *Heap error found during check heap. hz: (FCHKBK QDMisc $8000000FCHKBK IPNMAPN IPNMAPN h$7000000HEAPERR XJJoNVH&n(n l \ l _DgnH@J@f  n `0@?@H n H@.H@g?<H@H/Hz/.NH@gS@gvS@gS@g` l +\ l "+_ l "+\ l "+_D(+-k DW" nW`Jkl l 0+jD@HШ ,` 0+HЬ , KX-H F gB?</Hz/.N`@Bg/, /+N=_ KT* l h0.@gB?</HzL/.N`?</ Hz&/.NGLN^ _NCHKBK vBk out of boundsName mismatch in tybkN block#Back pointer error in tybkStd block!tybk does not match expected typeBCHECKCONQDMisc $9000000CHECKCON$8000000FCHKBK RJoNVH(nB, l &P lBP l \ l _,g8Bg/ H@Hn/.N_H@ @f lRP`LN^.NuHECKCONCHECKFREQDMisc $0100000CHECKFRE$7000000HEAPERR $8000000FCHKBK 0JoNVH(n| l &hBBg/ BgHn/.N,@,gޮ&k l W,  l ^@g r l V,g?< /Hz/.NLN^.NuHECKFRE Too many (few) free bytes found̀CHECKPTRQDMisc $1100000CHECKPTR$8000000FCHKBK $7000000HEAPERR `,UNITHZ 2f"\JoNVH(n| l &hBV l 2(H\ l A:_ l "l 2)AA:^g&SR`g4 l 0(Hl?</Hz/.N`?</ Hz|/.N|B l 0(S@=@BF` l @*0: l "l 0)@A:nT l l,R Y-@Bg/.<Hn/.N,@`?< l @/0:Hz/.N`2V l A:^g?< l @/0:Hz|/.NRFinoN Є l 2(Hg?< Є/Hz/.NLN^.NuHECKPTR(free + used master pointers <> ipPoolMacmaster pointer out of boundsmaster pointer out of boundsMaster pointer out of bounds%Too many master pointers in free listTCHECKRGPQDMisc $2100000CHECKRGP$8000000FCHKBK PJoNVH(n| l =hBG`< l h @&p g$ U,Bg/<Hn/.N,@RGinoLN^.NuHECKRGPzFCHECKHZQDMisc FCHECKHZFCHECKHZ$2100000CHECKRGP$$1100000CHECKPTR$0100000CHECKFRE$9000000CHECKCONFJoNV|/N/N/N/NnN^ _PONCHECKHZ>HZFROMH QDMisc HZFROMH HZFROMH UNITHZ "RJoNV/ n0-H"(AJll-m `0,H".-A (_N^.NuZFROMH JDELETEBKQDMisc $4100000DELETEBKRJoNV/ (n l!l l!l n f n !l(_N^ _PONELETEBKJMAKEBKF QDMisc $5100000MAKEBKF %I_DIV4 %I_DIV4 lJoNVH(n ../.p/N( G)h G h&h)K'L G h!L G!LLN^ _ NAKEBKF dBKFINDCBQDMisc $6100000BKFINDCB$4100000DELETEBK>UNITHZ pJoNVH,. F(h . Ї&@ FlH@J@f*// N Д(` F]\g-L``(l Ff-m``LN^ _PONKFINDCBBKFLOW QDMisc $7100000BKFLOW XJoNVH n (h&L(l n g\^g&L`-KLN^ _PONKFLOW PBKCOMPACQDMisc $8100000BKCOMPAC$5100000MAKEBKF ؉MOVERGCHMOVERGCHIPNMAPN IPNMAPN $4100000DELETEBKZ$7100000BKFLOW UNITHZ  JoNVH,. F(PB// N(_&LBl0@?@H*H@g S@gS@gD`f *ޅ// N`h`TJkl F0+jD@HШ (` 0+HІ( LX"D"`& F h/Bg//+N0 _@"LT!``/ / ?Nž l`ZJg // /N`6Jg // /N m-L`-mLN^ _ NKCOMPACFREEIPN QDMisc $9100000FREEIPN BREAK BREAK ډIPNMAPN IPNMAPN ‰WAND WAND FREEBK FREEBK tSWAPOUTNSWAPOUTNFJoNVH(n >. Gg l @&p g+g K\*///,2N l @ p(f/ l @A/<N l @B0,"R@9@"Bg R@??,N> l @&p g< l @BBg/ /N< l @Jg?<N l @!`LN^ _\ONREEIPN SETCBFREQDMisc SETCBFRESETCBFRE$9100000FREEIPN ~$6100000BKFINDCBlENLARGEHENLARGEH^CALLCBMOCALLCBMORCMAX CMAX B$3000000IPNCHOOS JoNVH(n , lhBg/ N> GfN.gFBg . ??<N<Bg/ ?/,&N:/ H/NB/ /`>Bg??<N>Bg/ ?/,&N:/ H/NB/ H/N-_LN^ _\ONBKNRELGALLOCBK QDMisc ALLOCBK ALLOCBK $5100000MAKEBKF 6$4100000DELETEBK$1200000ZBKNRELG$8100000BKCOMPAC$6100000BKFINDCBpSETCBFRESETCBFREdCMAX CMAX @WAND WAND 8$UNITHZ v$JoNVH&n>. ,. BgBg.HA@20GRA?? | Ho/ | H/<NB/ H/N(_f@B/ H//+N(_W .Wg B/ ?N(_f F ` .f@\]g 8`, \"+ Ҽ^g + 8` F `/ / N * | HnH Ї-@/ /.H /N`>H +'@ H@?TT.H@H?.HS@gS@gS@g` LT"F"` LX"F"9D` LT"F"LN^ _ NLLOCBK CBMOREGRQDMisc CBMOREGRCBMOREGRSIZE_DATSIZE_DATINFO_DATINFO_DATVINFO_ADDINFO_ADD@WAND WAND .WNOT WNOT *JoNVH>. GwlBg |S@?Bg?<NN>Hn/. HnNJnf>Hn?.HnNJnf(JfBF`<Hn?.H/HnH/HnNJngBn` .=@LN^ _\ONBMOREGRENLARGEHQDMisc ENLARGEHENLARGEH%I_DIV4 %I_DIV4 .$5100000MAKEBKF LvJoNVH(n .. @gS m2/p/N l Ь)@/ /,p /N Ь)@LN^ _PONNLARGEHnCBSHRINKQDMisc CBSHRINKCBSHRINK%I_DIV4 %I_DIV4 $5100000MAKEBKF $4100000DELETEBKl$8100000BKCOMPAC8SETCBFRESETCBFRE&JoNVH(n .. @gR/ /BgNB/ /,` @): @A:)HRGino0,|9@0-H",)A-l LN^.NuMAKEMOR؀GROWHINPQDMisc $4200000GROWHINP$5100000MAKEBKF $4100000DELETEBK$2200000CBMAKEBKt$8100000BKCOMPAC\SETCBFRESETCBFRE2CBDATAOFCBDATAOFJoNVH&nBg/ /. N<0.F>/ H/<NJG^HǾ_g n (PB/ / n Y( D"D0@?"H@A?PPH +'@LN^ _ NROWHINPINCLOGIPQDMisc $5200000INCLOGIPIPNMAPN IPNMAPN CHANGESICHANGESI*JoNVH(n0,R@@</ A/ @?N S@9@9F"=lBG` l @BRGino&TlR0@?@H*H@gU@g `2 *`* l/Bg/ /+N0 _@"KT!0,"S@9@"`LN^.NuNCLOGIPƀHALLOCATQDMisc HALLOCATHALLOCATALLOCBK ALLOCBK <$3200000HMAKEMOR UNITHZ PB&tJoNVH&n (kf B/ N(_g('T/ / ?.<N f ('L(m-LLN^ _\ONALLOCATlPALLOCATQDMisc PALLOCATPALLOCATALLOCBK ALLOCBK >JoNV/. A/?.<N-nN^ _\ONALLOCAT6CBDATAOFQDMisc CBDATAOFCBDATAOF@JoNV n Y-@ n0@?@Y@=@N^ _PONBDATAOF8FREEBK QDMisc FREEBK FREEBK $5100000MAKEBKF NUNITHZ JoNVH(n&n .HA@20H , F0@?@>H Ь)@/ /H/NA:\]g&)KLN^ _ NREEBK FREEH QDMisc FREEH FREEH FREEBK FREEBK 2JoNV/. /.<NN^ _PONREEH *FREEP QDMisc FREEP FREEP FREEBK FREEBK 4JoNV/. A/<NN^ _PONREEP ,FREEN QDMisc FREEN FREEN $9100000FREEIPN IPNMAPN IPNMAPN 8JoNV/. Bg/. /.NNN^ _PONREEN 0CHANGESIQDMisc CHANGESICHANGESIFREEBK FREEBK 8MOVERGCHMOVERGCHCMIN CMIN HALLOCATHALLOCAT$4200000GROWHINP$5100000MAKEBKF CMAX CMAX :WAND WAND 2CBDATAOFCBDATAOFUNITHZ …ZJoNVH&n>.Bg/ /. N8BgBg R@?? X@=@ | @mH n Y(@0.H@?TT/ 0.HЌ/ GH/N GHЫ'@`0.Ho/ /. ?N`B/ ?N,gt F Y* E=h n Y(@Bg E0@??0@??N0@U@=@ ET/ LT/?.N9n n "F" EX"n "/ /<NLN^ _ NHANGESIRPCREATENQDMisc PCREATENPCREATEN%I_DIV4 %I_DIV4 &BREAK BREAK IPNMAPN IPNMAPN ALLOCBK ALLOCBK h$5200000INCLOGIPJSETCBFRESETCBFRE<JoNVH(n0.@H",/r/N"Ҁ.o / /BgN l"n/ N0,"S@9@"/ A/?.<N n nl$ nh nhBg/ /. N< l @Jg?<N l @!,$HR@@$ n\-HLN^ _ NCREATENPMAPN QDMisc PMAPN PMAPN $9100000FREEIPN FSWAPINNFSWAPINNPCREATENPCREATENHCBOFN CBOFN DIPNMAPN IPNMAPN Z"JoNVH&n ,. k/Bg/ /N0 _@(p fB/ /Bg//+*NN. k/Bg/ /N0 _@(p* LXPP@Bg///+.N gBl/ Bg/ /NN`& k/Bg/ /N0 _@(p L\.l` k$ L\.-GLN^ _PONMAPN RELEASEBQDMisc RELEASEBRELEASEBFREEBK FREEBK vUNITHZ JoNVH,. .gb F(P F&hoTH@J@f .` 0@?@H.\IA AWg LT-H/A/<N`LN^ _PONELEASEBPLSTFREEQDMisc PLSTFREEPLSTFREE$6100000BKFINDCBUNITHZ PJ8(vJoNVH..B//RDino/ A/ @?<N S@9@9G"=lBE` l @BREinoB,$B,%-L(LN^ _ NZINIT  (* copyright 1983, Apple Computer Inc. *) { 3/14/83 B. Silverberg BkNrelGrow routine called within AllocBk; *add scrambler version info to TAHz (fScramble, fCheck, cCompact) } { 2/10/83 B. Silverberg added (hz^.cbFree >= db) test to GrowHInPlace } { 2/9/83 Bruce Daniels Commented out the lock & unlock of HZ fSemMapping } INTERFACE USES {$U Obj:UnitStd.obj} UnitStd, %{$IFC fOS} %{$U Obj:Syscall.Obj } Syscall; %{$ELSEC} %{$U Obj:OSStub.obj} Syscall; %{$ENDC} CONST tybkFree = 0; &tybkStd = 1; &tybkN = 2; &tybkNrel = 3; &{$IFC NOT fDbgOk} fTstHz = FALSE; {$ENDC} &ipPoolMax = 8100; {8192 is exactly correct +-1} &cbMinAsk = 512; { The least I will ask to grow the heap by} TYPE TH = ^TP; TArgh = ARRAY [0..0] OF TH; TRgh = ^TArgh; TTybk = 0..3; THz = ^TAhz; {All this stuff is here so THz can exist in interface} TPpn = ^TPn; TStn = PACKED RECORD ubt: TB; fDirty: TF; fLock: TF; fill: 0..63; END; TNob = RECORD n: TN; stn: TStn; data: TW; END; TPnob = ^TNob; TPpnob = ^TPnob; TArgpnob = ARRAY [0..MAXINT] OF TPnob; TRgpnob = ^TArgpnob; TBk = ^TAbk; TAbk = RECORD $CASE {free block?} TF OF $FALSE: +(hdr: PACKED RECORD 0tybk: TTybk; 0cw: 0..16000; 0END; +CASE TTybk OF +tybkNrel: (dataNrel: TW); +tybkStd: (oh: TC; dataStd: TW); +tybkN: (nob: TNob); +); $TRUE: +(cwFree: TL; +bkfNxt: TBk; +bkfPrv: TBk; +); $END; TAhz = RECORD $bkFst: TBk; $bkLst: TBk; $bkfFst: TBk; $pBase: TP; $ipPoolMac: TC; $hFstFree: TH; $cbFree: TL; $rgpnob: TRgpnob; $mskIpnLst: TW; $ipnCur: TC; $cpnAvail: TC; $ubtCur: TB; $fSemMapping: TF; {semaphore for PMapN and ???} $procCbMore: TProc; $procCbOfN: TProc; $procFSwapInN: TProc; $procSwapOutN: TProc; $fScramble: TF; { scramble flag } $fCheck: TF; { if true, check hz } $cCompact: TC; { # of compactions } $argpPool: ARRAY [0..0] OF TP; $END; VAR hNil: TH; $pNil: TP; $hzNil: THz; #{$IFC fDbgOk} fTstHz: TF; {$ENDC} FUNCTION HAllocate(hz: THz; cb: TC) : TH; FUNCTION HzInit(pFst: TP; pLim: TP; pBase: TP; ipPoolMac: TC; logIpnLim: TC; procCbMore: TProc; procCbOfN: TProc; procFSwapInN: TProc; procSwapOutN: TProc) : THz; PROCEDURE PxHz(hz: THz); PROCEDURE ChangeSizeH(hz: THz; h: TH; cbNew: TC); PROCEDURE FreeBk(hz: THz; h: TH; tybk: TTybk); PROCEDURE AllocBk(hz: THz; hDst: TH; cb: TC; tybk: TTybk); FUNCTION PMapN(hz: THz; nSrc: TN) :TP; FUNCTION PCreateNob(hz: THz; nSrc: TN; cbData: TC) : TP; PROCEDURE SetFDirty(hz: THz; n: TN; fDirty: TF); PROCEDURE SetCbFree(hz: THz; cbFree: TL; fEnlargeHz: TF); FUNCTION CbDataOfH(hz: THz; h: TH) : TC; FUNCTION PAllocate(hz: THz; cb: TC) : TP; PROCEDURE FreeH(hz: THz; h: TH); PROCEDURE FreeP(hz: THz; p: TP); PROCEDURE FreeN(hz: THz; n: TN); PROCEDURE ReleaseBkNrel(hz: THz; pFstRelease: TP); FUNCTION PLstFree(hz: THz) : TP; FUNCTION HzFromH(h: TH) : THz; FUNCTION FCheckHzOk(hz: THz; VAR cBkStd: TC) : TF; FUNCTION HLockN(hz: THz; n: TN; fNeedH: TF) : TH; PROCEDURE UnlockN(hz: THz; n: TN); PROCEDURE EnlargeHz(hz: THz; cbMore: TL); FUNCTION CbShrinkHz(hz: THz; cbLess: TL) : TL; FUNCTION CbOfHz(hz: THz) : TL; {$IFC fOS} FUNCTION CbMoreGrowSeg(hz: THz; cbNeed: TC) : TC; {$ENDC} IMPLEMENTATION UNITSTD  UPPERCH QDMisc UPPERCH UPPERCH DJoNV nam0.| =@`=n=n N^ _TONPPERCH <MAKESPUPQDMisc MAKESPUPMAKESPUPUPPERCH UPPERCH .XJoNVH(n~@Gm /Bg4pA?N2 RG`LN^.NuAKESPUPPICHCR QDMisc ICHCR ICHCR %_SCANE %_SCANE d4JoNVH(n .g. T0,A&H0,l??< / N> l=@`0 T0,S@A&H0,l??< / N>0,S@G=@LN^ _\ONCHCR MOVEOLLEQDMisc MOVEOLLEMOVEOLLEJoNVH,.:.(. (F nJPg* nPf n0JTg &F7lJlg&F6 D8 DJPg, D0HІ. G9h GJhg &F G6 G1E`Bl D0LN^ _NOVEOLLEINITOLLEQDMisc INITOLLEINITOLLEMOVEOLLEMOVEOLLE0VJoNVH(n >. Bn0.Gln/ ?/ HnNn`LN^ _PONNITOLLENCMIN QDMisc CMIN CMIN 8JoNV0. nl=n `=n N^.NuMIN 0CMAX QDMisc CMAX CMAX 8JoNV0.n l=n `=n N^.NuMAX 0MOVERGCHQDMisc MOVERGCHMOVERGCHMOVEOVRGMOVEOVRG4JoNV/./. ?.NN^ _ NOVERGCH,MOVEACHAQDMisc MOVEACHAMOVEACHA%_MOVEL %_MOVEL HhJoNVH.. n P"n0)A(H G P"G0)A&H/ / G"G0(i?NLN^ _PONOVEACHA`DIVMOD QDMisc DIVMOD DIVMOD HJoNV0.H n 00.HH@J@ n0N^ _ NIVMOD @BREAK QDMisc BREAK BREAK %W_LN %W_LN D%W_I %W_I <%W_C %W_C (%W_STR %W_STR pJoNVH/- HzNBgN/- <?<N/- 0.H/?<N/- NLN^ _TONREAK Break: hPXLLD QDMisc PXLLD PXLLD %W_LN %W_LN t"%W_I %W_I lL*"%W_STR %W_STR Z8tJoNVH&n/- HzPBgN/- / ?<N/- Hz(BgN/- 0+H/?<N/- HzBgN/- 0H/?<N/- N>JGg(K/- HzBgN/- H/?<N/- HzBgN/- / ?<N/- HzjBgN/- 0H/?<N/- Hz>BgN/- 0,H/?<N/- N>`nLN^.NuXLLD L , ollePrv: , olleNxt: , lle:  olle: , olleFreeFst: , olleLim: lld: l (* Copyright 1983, Apple Computer Inc. *) { edited by bas 9/10/81 } INTERFACE {$Setc fDbgOK := FALSE} {Compiler constants.} {$Setc fOS := TRUE} {$Setc fSymOK := TRUE} {Compiler constants.} (*$R-*) CONST chLst = 127; chSp = 32; chCr = 13; chTab = 9; olleNil = 0; procNil = 1; {$IFC NOT fDbgOk} fTstStd = FALSE; {$ENDC} TYPE TC = INTEGER; TB = -128..127; TA = 0..127; {7-bit Ascii.} TP = ^TB; TPc = ^TC; TPa = LONGINT; TF = BOOLEAN; TX = TC; TY = TC; TL = LONGINT; TW = INTEGER; TCh = TB; TCd = TC; { coordinate } TN = TL; TPn = ^TN; TFd = RECORD iFil: TB; bhi: TB; iblo: TW END; TPFd = ^TFd; TNOrFd = PACKED RECORD &CASE TC OF &1: (fd: TFd); &2: (n: TN); &END; TArgch = ARRAY [0..0] OF TCh; TRgch = ^TArgch; TAchad = RECORD &rgch: TRgch; &ichFst: TC; &ichLim: TC; &END; TChad = ^TAchad; TArgb = ARRAY [0..0] OF TB; TRgb = ^TArgb; THrgb = ^TRgb; TAbad = RECORD &rgb: TRgb; &ichFst: TC; &ichLim: TC; &END; TBad = ^TAbad; TArgc = ARRAY [0..0] OF TC; TRgc = ^TArgc; TArgx = ARRAY [0..0] OF TX; TRgx = ^TArgx; TCmp = (cmpLs, cmpEq, cmpGr); TAlld = RECORD &olleFreeFst: TC; &olleLim: TC; &END; TLld = ^TAlld; TAlle = RECORD &olleNxt: TC; &ollePrv: TC; &END; TLle = ^TAlle; TSp = STRING[80]; TPsp = ^TSp; THsp = ^TPsp; TARgCHAR = PACKED ARRAY[0..0] OF CHAR; TRgCHAR = ^TARgCHAR; TProc = TP; {$IFC fDbgOk} VAR "fTstStd: TF; {$ENDC} {$IFC NOT fSymOk} {$D-} {$ENDC} FUNCTION CMin(c1: TC; c2: TC) : TC; FUNCTION CMax(c1: TC; c2: TC) : TC; PROCEDURE MoveAchad(VAR achadDst: TAchad; VAR achadSrc: TAchad); {PROCEDURE MoveRvsAchad(VAR achadDst: TAchad; VAR achadSrc: TAchad);} PROCEDURE MoveRgch(rgchDst: TRgch; rgchSrc: TRgch; cb: TC); PROCEDURE MoveOvRgch(rgchDst: TRgch; rgchSrc: TRgch; cb: TC); PROCEDURE DivMod(num: TC; denom: TC; VAR quotient: TC; VAR rem: TC); FUNCTION IBinSearch(rgc: TRgc; icLst: TC; c: TC) : TC; PROCEDURE Break(bkcd: TC); PROCEDURE MoveOlle(lld: Tlld; olle: TC; VAR olleDstFst: TC; VAR olleSrcFst: TC); PROCEDURE PxLld(lld: TLld); PROCEDURE InitOlleFree(lld: TLld; olleFreeFst: TC; cbAlle: TC); FUNCTION IchCr(VAR achad: TAchad; fFwd: TF) : TC; FUNCTION WAnd(w1,w2: TW): TW; FUNCTION WXor(w1,w2: TW): TW; FUNCTION WNot(w: TW): TW; FUNCTION WShLft(w: TW; cbitSh: TW) : TW; FUNCTION WShRt(w: TW; cbitSh: TW) : TW; PROCEDURE AsgnField(p: TP; ib: TW; mskNotFld: TW; val: TW; cbitSh: TC); FUNCTION ValOfField(p: TP; ib: TW; mskNotFld: TW; cbitSh: TC) : TW; FUNCTION UpperCh(ch: CHAR): CHAR; PROCEDURE MakeSpUpper(VAR sp: TSp); IMPLEMENTATION hPASLIB FPLIB STDUNIT XIUMAN ZOBJIO [FILEIO \UTILITY ]GRAPHS ^TREES _REFS `PARTS aLISTS bMEMMAN cPASDEFS dBLKIOINTfBLOCKIO gPASHEAP hHd(h$N$4"X/Nњ PASLIB1 initfp Sfplib2 Tfpmodes Uf32 Vx80 Wx80elem Xfptrap YPASIOLIB`SULib cObjIOLibdMainProg $`bbU0R*zc͠`RJ_&_ggZ˺*c*kb_!b7zpas0R*ߤzc͠`RMJ__.:Bm$^CRkF ..#g@j^Bzm_" gug(A0lA~@EC p VRf|RE` g.^*͞ߵ'*Er@7?0*͞'כkכ*͞' Rm~SAC(~@CARkF`$F͹߈*͞߈ R'gbGvTEADFILEmUnable to open file: .OBJB404تggj0k0戫n͞߈k͞߈ kHتMkFW `*0g(G*TEADEACHRead: VV*ggB0*RJ_n ͋*kVAVz\p<a20kRJ_.n ͫ`B\͞߈''g1͞߈k͞߈ G?TEADMANYetopen C an.TEXT)*zHkZR]J__@ gzt|gHkܛHkHkHk p'4AE Acount : longint; 9var actual : longint ); "procedure WRITE_LABEL ( var ecode : integer; act_family : boolean); "procedure Kill_Process (var errnum : integer; proc_id : longint); "procedure Terminate_Process (var errnum : integer; event_ptr : p_s_eventblk); "procedure Make_Process (var errnum : integer; var proc_id : longint; :var progfile : pathname; var entryname : namestring; :evnt_chn_refnum : integer); "procedure Sched_Class (var errnum : integer; non_preempt : boolean); (* Memory Management system calls *) "procedure make_dataseg(var errnum: integer; var segname: pathname; 9mem_size, disc_size: longint; var refnum: integer; 9var segptr: longint; ldsn: integer; dstype: Tdstype); "procedure kill_dataseg (var errnum : integer; var segname : pathname); "procedure open_dataseg (var errnum : integer; var segname : pathname; :var refnum : integer; var segptr : longint; :ldsn : integer); "procedure close_dataseg (var errnum : integer; refnum : integer); "procedure size_dataseg (var errnum : integer; refnum : integer; :deltamemsize : longint; var newmemsize : longint; :deltadiscsize: longint; var newdiscsize: longint); "procedure info_dataseg (var errnum : integer; refnum : integer; :var dsinfo : dsinfoRec); "procedure setaccess_dataseg (var errnum : integer; refnum : integer; ?readonly : boolean); "procedure unbind_dataseg (var errnum : integer; refnum : integer); "procedure bind_dataseg(var errnum : integer; refnum : integer); "procedure info_ldsn (var errnum : integer; ldsn: integer; var refnum: integer); "procedure flush_dataseg(var errnum: integer; refnum: integer); "procedure mem_info(var errnum: integer; 5var swapspace, dataspace, 9cur_codesize, max_codesize: longint); "procedure info_address(var errnum: integer; address: longint; 9var refnum: integer); (* Exception Management system calls *) "procedure declare_excep_hdl (var errnum : integer; ?var excep_name : t_ex_name; ?entry_point : longadr); "procedure disable_excep (var errnum : integer; ;var excep_name : t_ex_name; ;queue : boolean); "procedure enable_excep (var errnum : integer; :var excep_name : t_ex_name); "procedure signal_excep (var errnum : integer; :var excep_name : t_ex_name; :excep_data : t_ex_data); "procedure info_excep (var errnum : integer; 8var excep_name : t_ex_name; 8var excep_status : t_ex_sts); "procedure flush_excep (var errnum : integer; 9var excep_name : t_ex_name); (* Event Channel management system calls *) "procedure make_event_chn (var errnum : integer; !|A>!A>!A>!A>!A>!A>!A>!A>!A>!A>!A>!A>!A>!A>!A>!A>!A! NuF1Bx/BN! 1dDxdJPg/ xP| _Jxg !POPH.xQJxgC xP1d1f!h1l3XD#X@!P`nF1Bx/BNf! 1dDxdJPg/ xP| _Jxg !POPH.xQJxgN N*N(A^/HNuAj/HNu/><NE./><NE.NuH/><NE.pB/><NE.JgJg gB@L _>N 8g 8Tg @Nu |!! JPAJ8Lf 0(D@f8 8g2YA!@@0(D 1@DBx J8Lf JyJy BNHxNANu _"_/NNuNVNJ@g0./><tNE.N^ _TONNV n0NlJ@g/><rNE. n0N^.Nu8;f:A"x<NE.JgPO"oHNaLA.hL/(@?(D h WJPg/ xP| _/BN@! 1NsNI 8g 8fDA "OBg<Hh@HiHi/ N h\ _f PNOfA&!AhDO"oHNaLA.hL/(@?(D h `Z _"_ < ""N _"_BN _"_QN W!!!N x.x,xNKBgN%"xA+HA+HA+HA+HA+HA+H+xPAf+HA+HA+HNuNXJ@g /><NE.NuNDJ@fB` /><NE./@Nu _C3_DN _ 8̐.N 8g$"@B"xJQfJif JifJig"@Nu _!N!N _$" // ///NW*_Nu _ /C@DF'/ //NHVNGn*_CFDNu _ /C@DF'/ /NINBNH&*_CFDNu$ ""_J8LgB`A|g "AB`B"ABJf x f BN _BnJf C!4nNП "OBg<HxHiHi/ N\"_f A|""2Nu"x A!I@Nu< N^Nu 8` 8 _g/ @NuNNNNNNNN NNNNNNNNNN NN$NN(NN,NN0NN4N|N8NtN<NE./><0NE./><NE.</><NE.B8&|$AJBoa4N  g garSBnaNuaf< a^`|`a FF)ZF)F)F)hF)F)F)vNuBCC"xBC+Nu?6a I2< "SAn6 NuR  caNuSnNuS+n|NuR+ +Xc|XNu f|Nu f6Nu g g g g f|Nu2<Y+o&aB'/NSL<`֓B'`ДJ?<`h?<`^fN<`&NVdfNJFHx/N/ </NW֤?<`"NY^ΦNLNENV"nB"n Q PNVf JhgkT2<:M8L6K0HtBBBB2@2;Nj  T $ lN0@$_ABA0AN?<aBTST?<aBCHG?<aBCLR?<aBSETgh EgaaVaj??BgaHNu?<ahMOVEP 0@R@?axJja"a6?<?BgaNu?<?Bgaa?a6NuA BA00AN?<aORI ?a"?aa Ef> Ff80@f`?<aANDI`?<aSUBI?a?aFa??0@ @W?anNu?<aADDI`a?<?<BgaL`?<alEORI`b?<a\CMPI`Nu?<aHMOVE.Baa&??BgaNu?<a&MOVE.L???EXT.L `?<a.MOVEM.L `0@ @f?<aTAS `?<aTST `?<aMOVEM 0@R@?a?aZaaNu0@A BA0ANNu0@f?<aTRAP?aPNuA \BA0PAN?<axJSR `?<ahJMP `Nu?<aRLINK?axa0?<?<Bga Nu?<a,UNLK?aRNu?<aMOVE?a>a?<aUSP Nu?<aMOVE?<aUSP a?a NuA BA0`AN?<aRESET Nu?<aNOP Nu?<aSTOP?<?<BgabNu?<aRTE NuNu?<apRTS Nu?<abTRAPV Nu?<aRRTR Nu0@ @f Ef0H@E2@2;N ,8DP\ht?<aDBT ?<aDBF ?<aDBHI?<aDBLS?<aDBCC?<aDBCS?<aDBNE?<aDBEQ?<aDBVC?<aDBVS?<a~DBPL?<arDBMI?<afDBGE?<aZDBLT?<aNDBGT?<aBDBLEaa"?<?<BgaNu0H@E2@2;N *4@LXdp|?<aST?<aSF?<aSHI ?<aSLS ?<aSCC ?<aSCS ?<aSNE ?<aSEQ ?<aSVC ?<a~SVS ?<arSPL ?<afSMI ?<aZSGE ?<aNSLT ?<aBSGT ?<a6SLE `g?<a SUBQ` ?<aADDQ?a,0J@fP@?a`D0H@E2@2;N ,8DP\ht?<aBRA ?<aBSR ?<aBHI ?<aBLS ?<aBCC ?<azBCS ?<anBNE ?<abBEQ ?<aVBVC ?<aJBVS ?<a>BPL ?<a2BMI ?<a&BGE ?<aBLT ?<aBGT ?<aBLE Jfa. MU`?<a.S4<E 0H?` M"HaHNu$_?BB? UWj?<a*-$ DWW`?<ar*+$ W`$_?0H?`H-H=|/ // *n(n nNLNugNu?<aJMOVEQ Jj?<a#-$ ` ?<a#$0@?a`0@ @f?<aSBCD` Df?<aDIVSaj` Df?<aDIVU`?<aOR?aga`a`zgj0@0fb0@ @gV?<aSUBX?a Ef6?<?0@ @W?a2aF?<?0@ @W?aNua` Df2?<a*SUBA.W Df???ADDA.L`Nu?<a*ADD ``$_ABA0AN?<aASR ?<aASL ?<aLSR ?<aLSL ?<aROXR?<aROXL?<aROR ?<aROL 0@ @f0H@av?<a`0@@gR@aV?aga<`0J@fP@?aa>`Nu*6JX"JxFV228^r2"0LZ`n~ ,8DP\hNVAC\ T=@N^NuNV m=hD.V@@@N^NuNVBgNJW@@N^NuNV/ m`gB`?<<HnHnHnNt=|?<BgHnHnHnNX~ l R/N"?<<HnHnHnN. nW Wg?<BgHnHnHnN+G.N^NuNVNR n N^.NuNVNB+|L`.g N&HmHm/-N.-Ҁ-@N^ _TONNV/ m(h-n g0. -t (_N^.NuNVB/-N-_N^NuNV/-HH. ]/B/N" VgR`-G .N^.NuNVNؖBgN,g/-N?.././. /.N/-NN^ _NNV mJhV mJPV mJPVDBgN|N^NuNVH~(mJG^T_" $. V$ &. V‚g  ".f D@>`RG`ToBG=GLN^ _PONNVH~(mJG^T_"$. V$&. V‚g ".f D@>`RG`ToBG=GLN^ _PONNVH~(mJG^l_"$.V$&. VgRG`ʾloBG` . g D@>=GLN^ _PONNVH-g"BgNg~`~//<NI-_` (| -TLN^NuNV-gpm//<NH-_`-| n-PN^NuNV-nHnN .-@ N^.NuNVH-gb nB|BN-_gHB n ]" gjBg</.HnHnHnNl  n-PHnNL .萮(@g WD  g n м n `BgNՎ0,HЌ( :-nHn?/././. N n .쐮ѐ&n츮^ SNVWJk_D@ n.g" ng n"n .쐑" n `*nl$|n n/B"n/N  _м ``"/.?./././. NL n "n"LN^ _NNVH(n&n| P-@ACfp S@n nBp4A: Eo n |:0k|nA(2IDA0 <gBBp4A8 Do  |80k|nA2IDA0 <gB~`(4p@k|nA2IDA0 <gBRG Gog6~`, n0p@k|nA2IDA0 <gBRG Gog: n "L n p n pg n"n `/.NҬ` nBBFLN^ _N !NV=n na\ nz_g 0.| =@ N^ _TONNVp A/?<NݤN^ _TONNV?<N?<*NN^NuNVp A/?<NjN^NuNV?< NN^NuNV/=n~`NRGino.N^ _TONNVHz NN^NuIllegal AddressNVHz NN^Nu Break PointNVHz NN^Nu Patch PointNVHz NܶN^Nu Timing PointNVNNHNN@NHzN܄NN^Nu already existsNVHzN`NN^Nu Table OverflowNVH8.BGJ g`>JGf S@?NL?<0N~`$ G?N6<`6`@?NSF Fl=DGl=GLN^ _\ONNVH<. AC nB=| JFo-n Fo|` Fl|pF>`d Q@F: @g* "SABA 6+CRC60A`( "RABA 6+CRC60ARG Go=F~` nC nC n .HS@gU@g` .ؐ n0 nLN^ _NNVH:.(. /HnHnHnHnHnNV ,BGBn .lp6A A gD0.R@6A A V n]gRn0.6A?NP`Rn?<.NB R@6A A V G]gRG6p@?N`n?<+N-HgS@g`(/?<NvZG` R@/Bg/?<N<2 @>JGf/?NL~ En> G?NLN^ _\ONNV/.?<NHzN6/.?<NN^.Nu --> NVH -Ю -@B.Bg<HnHn HnHnNϐ g(m&TV. gN .f|`p `.gA"K `.@ /BN" _/BN" \g(. .U-@|Hn?HnHnHnHnN .W".XW D PJoW".t ҂W D P OWgB<<@Hn?HnHnHnHnN.gBg/.HnHnHnHnN<_.gp~=| nB G^6pA A WgSG`=Gz`8p6PA n//.HnHn?<N4 _C 0REinoLN^ _ NNVH/. ?< NN.H8J.fx .fTBG`HH Ю -@A/?<<Nd np6pHH/?<N GfNnNjRG Go`jBEBG`^TEH Ю HЇ-@AH ЇHЇ(@A/?<<N n80H/?<N@ GfNEfBENRG GoBG` 6p  _ \g|.H?N|RG GoN=|LN^ _\ONNVHBN(,Bg//.N>BgNg JGl D@>| JGn0Bg//.N(>BgNg JGl D@>B. JGo| LN^.NuNV&H-n A /?<<N*. /.HnHn*Hn2HnHnNP .W .W .W .Wg6Bg/.<N< n0Jng n0no n0`B/.?< Nh-| *! &Bg/.NHR@A%0A?N . +@/-A//./. Hn:HnAv/NӚBG`6 nPl n 0pHH/?<NH`?<N @gNRG GoB.A/?<<N/./.HnN (nHnHzvN/g TNVW lJoW l OW‚gB.HnN.@r @?NHn:N.:@r@?N~HnN˶NDLN^ _PONNV nCJ""2HnNˈ/. ?.NZN(N^ _ NNVH(m,C@  gBg<Hl@HnHnHnN  gd m,(@((m=T=|`0.Gf,+ Rni 0.noڸf-FBg<HnHnHnHnNn  gv(m=T*.  JnV E PNOWg80.@G,+-FBg<HnHnHnHnN*.Sn`-F  g /.HnN(mHz/,@?<NHz|0,DH/?<NN-g ?<ONh`-g ?<LNX`?<PNN?<NHz0/,H?<NBgNfg JGl D@>JGo(m "4@WD@BN -@JoH ln0,A0H8`,H8JDo" A-H n .Ш n!@.gF0,R@9@ ln0,A`,H> A-H n R n ` 0,S@9@NdBg//+@N>BgNjg JGl D@>JGlN:JGo`| n PfNHzNTN`B/+@N n0R@ n0 n"n0@!@ m 'p@Bg<N|Bg//+@N>BgNg JGl D@>JGlNJGo BNjN f< nJPg(| n"n0@'p@ n0S@ n0Nj` N,HzNŒLN^.NuTrap FReturnNVH>.JG]Dg D@> H>(m   G W ,V ,Vg,&mJkDl0+D|@|@7@DB,Bg<Np`b G/V ,VgNx G l0Y@kv @npH0;N&0:DV`HzNİ`LHzNĦ`BHzNĜ`8HztNĒ`.HzZNĈ`$ ,gHz/+HkN2RFino/NBLN^.NuNVH(m=T~` G/+HkNRGinoLN^NuNVH<N݀B/.N.*-&m=S|`N  I ]"WJWg&Jf BNB` /N+G/,HlNbRFino/NBLN^.NuNVH m-h@Bg<HnHnHnHnN g(n>BN,N*8LN^NuNV/ Bg<Hn HnHnHnNr g(n TNOf8(_N^ _\ONNVH(.<NZB/N,*-&m=S~`J  I ]WJWg&Jf BNB` /N+F/,?,NNRGino&m=S~`J I ]WJWg&Jf BNxB` /Nl+F/,?,NRGino&m=k~`\ I ]WJWg4Jf BNB` /N+F/,?, N/,?,NRGino/NBLN^.NuNV. @g N&NNJFfBgHn/.N`g n"n"`Bg/./. /.NGLN^ _ NNV/ (n(l n0( H/,/N"0. HП)@Rm(_N^ _\ONNVHB0-Ac0A> G0\ G9_g |0?/N`V n f|`J GA\ GF_g |A| ?/N\`& Ga\ Gf_g |a| ?/N8`|gtLN^ _\ONNVH(n0-X@>0-Ac0A A'V2-Ȳm]mVg$ ,2-Ac0BHԀ)BRm`mW2-Ac0B B'Vg$Um0-Ac 0-R@Ac'`0-ȰmlRmLN^.NuNVHB0-Ȱml0-Ac0A> G$f6Rm0-Ac0A A V2-Ȳm]g ?</N<` G&f4Rm0-Ac0A A V2-Ȳm]g ?< /N`b G'fRm0-Ȱml/N`F<-BgHnHnHnN g(;F-HgS@g`?< /N` ?</N-nLN^NuNV0-Ȱm]2-Ac0B B WgRm`N^NuNVHzN6?. NچNڼN^ _\ONMissing NV/BgNF _g?<> n h/(N`Rm`zBgN _(fdRmB n h/(N./NL-GA/?<<N n-P BgN _)g?<) n h/(N`Rm` BN-_ .N^.NuNV/B/N.BgNf0k|/nAT2IDA0 <f0BgN _*fB/N/Nz.`/B/NN.`-G .N^.NuNV/B/N~.BgN0k|/nAH2IDA0 <f$BgN _+f B/NDޟ` B/N8`-G .N^.Nu(NVH(nBl<-~0-Ȱm]2-Ac0B B Vg40-Ac0Ak|nAt0HD@0 <gBRm`:-g;FBgHnHnHnNgBg FR@H9@G ;FLN^.NuPNVHNBmB0-Ȱml|B/N.Bm0-Ac0Ak|?nAd0HD@0 <WDBg/Ngg;nJnf Bg/N;_`g Bg/N;_-GLN^NuNVBNN-_BgN _ gHzNN\NN^NuIllegal symbolNV;|BN -_Jmo/.NNN^NuNVH(mBg/. /.N>JGnHzLN`N`4/.N뤾Tl" R@Ht Ht?<NRG`0S@8LN^ _PONDoes not existNVH(mBg/. /.N>JGn/. /.NX`,Tl" R@ Ht  Ht?< N&RG`0S@8LN^ _PONNVH,.~(mJG^T_" VgRG`ToBGJGo/  /4NRJGf~(mJG^T_"VgRG`ToBGJGo/ /4NJGfLN^.NuNVBg/. /.NJ_^/Bg/. /.N2 JA^/Bg/. /.N42 JA^D@N^ _PONNVH..,. *.BgNX GBP(m f/N&mBBk`J @g G0`: Tm G0`,Bg//NFg G0`0R@80 G&'FNLN^ _ NNVHBNt-_(mJmffJTfHzNNԀ`RNHzN=T~`8  G/?<Nע?<:N/+NhNBTl?<NdRGino`tJmonBgN _:f,.BN-_`BN͠,JmoB//.HnN0.S@g S@g S@g`NԢ`NFN`HnNBN-_`LN^Nus = No Break PointsNVH(m~` GBBRG G o9|0,AB0LN^NuNV/ (m gBl)nN(_N^.NuNVBN-_ m-H ngN`Jmo /.N` BN̎NN^NuNVBN|NN@N^NuNVHBNbNlBN:.JmotBN,,(mJmo\ l lJBg/,/NBg/,/NgNB`$0,R@9@0,GBB'G'F`NNJ`N`NLN^NuNVHBNNBN.(mJm^J^2,H\g80,Ho" RHt Ht?<NR`0,S@9@`NLN^NuNVHBNFNP&m=k~`h IBgH/?<NҦ<Bg/,?Jmo8BgN _:f ,BN.`BN",Jmo//NBND.`N@LN^NuNVHBN.Jmo?<$N/0-@?N|Jl@HzN D/Bg D/N0@?NTHz^NnBg D/?<N<`Hz>NRBg/?<N<?<=Nϔ/?<NڴNBN:.`hLN^Nu=&=-&=-$NVH>. G^ G]g~(mBN-_JmoHnN(nBN*Jmo>BFFo/ HnN"RF0.H`+LLN^ _TONNV/BN.Jmn m.(@-GA/?<<N/?<N6HzNP/.?<N"N.N^Nu --> NV/BN:.Jm^J\ _g /NN.N^NuNVHBN-_BN-_ .g.@gS..HnNTHnNL .Ю, .l,.*.Bg/.N^8HބHڄnLN^ _TONNV/BN|./NJmo m!G@N.N^NuNV/BNP.JmoJ\ _g?N`N`,HnN ngHz N0.H/?<NN~.N^Nu NMI keycode $NVHBN-_ m-H(mJmfhJTfHzNN6`TNHzNN$=T~`6 G?<N8/+?< NN/+ ?<NNRGino`rHnNBNP-_JmfHzdN,N̺`LHnN Tl6Bg//.NgNb`0R@80G&'n'n `NNpNBLN^NuMissing destination addresss: Insertion DestinationNo Patch PointsNVHHzvNt(mJTfHz\NdN`>HzDNVN=T~`$ @G?<N/+?<NְN˼RGinoLN^Nu : Address is empty Return stackNVH>.BN, GW GW GW GWg/Nn(mJmf GnN Gl ?<DN`?<ANBg HH@J@H/?<N2:?<=N @/4?<N<``0@gS@gS@g.S@g<`JHz/,@?<Nܔ`8Hz0,DH/?<N~`"Hz/,H?<Nl`Hz/,L?<NZNʊ`d Gn @)`T0@gS@gS@gS@g&S@g0`:)F-_JmoJgH;DH0U@gU@g(`L @gS-GA/?-BgNl n0`j @gS-GA/?-BgNF n `D0-S@=@BF`0H І-@A/?<BgN E X@m"nRFino0-Hހ`4LN^ _TONNVBNh-_Jmo00.g S@gS@g`BN^`p/NT`p/NJ`NN^NuNVH&n(mJfB. `d-g ,<_D@ `L 4f&.<@ G-PHnNZ ,<]D@ ` ,<_"+4_D@ LN^.NuNVH(m-l8BN*|Jmo<HzNb/,@?<NN~Bg/N2 JF^gHzN2/.?<NBg<HnHnHnHnNgB` .R lBgP .X&@-SHnNlJfB`2Hz@N .Y/?<N8&n-SHnN:SFJfBN*`FLN^Nu called from Stack frame at At NV nCJ""A/?<N^?<=Nƚ/. ?<NNN^ _ NNVHNBgHnHnHnN _p6A A fBGBn(m&Tg / /+/NnRG GfN\BGp `BN*BN>,o-EB.(  @o .м@( =@Hn?.HnHnHnHnNB.gBg/.HnHnHnHnN_.gJ-n n hJofY` n h Ofp RnHn/./NRG GfNłBGnDJGgNp`BN./N&Jmo)G@JlDm0,D|@|@9@D|BgBgN`B mf JlDm0,D|@|@9@DBgBgN`JlDl0,D|@|@9@DB+LN^ _TONNV/ (nHnNhpppHn/. N(_N^ _PONNV/ (m=|R=|D=|0`0.|0@/4/NRn n7o=|A=|0`0.|0P@@/4/N`Rn n7o=|P=|C=| /,@/N8=|U=|S/,H/N"=|S/,L/N(_N^NuNVBN-_Jmo JVD@N^NuNVH(|L,@g~B`l/N8BG`4?JWD @AHp @AHp @AHpN&RG Go0.X@=@?<}BgHnHnHnN=|R oBNLN^NuNV0-^jD@ @W2-^jDA A Wg ?-^Nך`?-^NڒN^NuNVH<NB- mHh@Nx.gN|B-B-N`BNN(m&m+l@ +fXJlDl0,D|@|@9@D n$ gNB+N `,BNp @_/BNj" @\gBgBgN;n ^NNPN|-g*B m/(4Np|//<N WDN`(mNH,HS@g S@gS@g`$?<:N8`NLB,`/-?< NJNtBm?<>NBgNd<: E \ E]g$?N0-R@ @PlRm0-Ac`P Ef.Jmo&Sm-| ppA/?<N\` E fRm0-Ac N E fl;|N,HS@gU@g ` BgNl`NJ,W2-Ȳm]g;m0-Ac0A A gRm`Bg0-T@Ac0A?N=_Bg0-R@Ac0A?N>Bg0-Ac0A?N8 G0\ G7_g0 DAf |0P@?NX` DDf |0?ND`N`: DA\ DZ_ GA\ GZ_ G W‚g???.N^`NF`LN^.NuN(NV,_NU\N>NzN8N]NNuN^NuNV,_NuN^Nu%_BEGIN NV,_NuN^Nu%_END NV,_H瀀 |0< BXQLNuN^Nu%_INIT NV,_Hr`N^Nu%S_NE NV,_HBA o"oB@f`fS@j AA/oL\NuN^Nu%S_EQ NV,_H"o ov`dN^Nu%S_GT NV,_H"o oBC`BN^Nu%S_LE NV,_H o "ov` N^Nu%S_LT NV,_H o "oBCB@BA@m4`4`fSBj@n C`cC"/oL\NuN^Nu%S_GE NV,_H0/ oC"4JBAR`$aBBB`SBjS@j oC"0/H#//IL._NuN^Nu%_CAT NV,_H oB@BA"o BBBlBA`$HR` fSBj`RS@`?A"/oL\NuN^Nu%_POS NV,_H o0/2/SA"o BBA@m`S@j/o L NuB`N^Nu%_COPY NV,_$_02 _ @o0 Ao*BBAm"6@SCBoSA`@"H`RCoNN^Nu%_DEL NV,_$_0"_ _/ S@m.BABB@m"6B$I&I”@`#SBj`SAjNuN^Nu%_INS NV,_$_0 _"_S@kQNN^Nu%_MOVEL NV,_$_0 _"_S@k!QNN^Nu%_MOVER NV,_$_02 _SAkQNN^Nu%_FILLC NV,_HBB o0/2/gk gRBSAn` R gSBRAk?B/oL\NuN^Nu%_SCANE NV,_HBB o0/2/gk fRBSAn` R fSBRAk?B/oL\NuN^Nu%_SCANN NV,_//0/2/ AH@B@2/Ё/@" /WXNuN^Nu%I_MUL4 NV,_// /"/ NP/A" /WXNuN^Nu%I_DIV4 NV,_// /"/ N/@" /WXNuN^Nu%I_MOD4 H>*jD,jD$&BBx㉰mRSDlJjDjDL|NuNV,_NuN^Nu%_TERM |NVnN^ _TONNVH.BNd.A*A T(@A&HJmoBN>-_JmoJgH;DH0U@gU@g(`L @gS-GA/?-ėn R  &n8" 02NqN HzBgNN?<NNMainProg 28*A !! NuN/N.N"N/N/N.>N0N N HNrN N N N dN NN  _!N _"_BN _"_QN  _"_/!C|""2Nu _2"_02N _"_B@// ?NNuNVN."8g^ Ah`hP|`|a>f|h@| `|`a (hgn`nN^"_TONHNLNu xN xN xN xN xN xN xN xN xN xN$ xN( xN, xN0 xN4 xN8 xN< xN@ xNL xNT xN\ xN` xNd xNh xNl xNp xNt xNx/ "|݁ga"_NuH"|݁ |BA((BJAgg(_wgDg.J8gB8BAB|a3`2<`J8fB|avg| B(a\<`g| |a@<`g|B(a(<`||a<`CELNu|J(fNu |"_24B8J8f|B( B( B( B(AB|NJ8fB@8 @ g _0NNVB8HHnHnHnHn?. aJ.f n0`J8f |B( n n nnB(a @ g"n2A"nH"H "H"A"n0<H"H "H"H" QLN^ _N"_0 _jB N2<S@oAv:<`2<@oA:<6" @n2BDBB(`EB@nAJEk:<`BE _0 _0 _0N Xc"A)-*S#e CNNVB8HHnHnHnHn?. a&J.f n0`J8f |B( n n nn|A"n Jn f "" "A"n0<"" "" Q |a @ gn"n2LN^ _N|N,J8fB@8NuNVp A/?<N.N^ _TONNVp A/?<N N^NuNV?< NN^NuNV/=n~`NRGino.N^ _TONNVHzN*NN^NuWhat ?NVH(nJ\ _gjJ\ _gVJ\ _gB \ _g*>,=l=l=l?BgHnHnHnNLN^.NuNV/ (n l\ l_gHHz^N` lfHlN HlNHz6N@/,?<NHzN,/,?<N(_N^.Nu] Stop[Start[] NVH*. (nJ\ _gdJ\ _gR=E<,`>>?<HnHnHnNHzbNBgNg ?<0N` /-?<N(Hz.NxH/?<NHzNd0.H/?<NHzNL0.H/?<NHzN40.H/?<NH//<N.-_BgBgHnHnHnHnN" g/Nh`V R@H//<N.l0.R@H/</N.X "-ABgBgHnHnHnHnN g/N?<]NNRFinoLN^ _PON ] Control[] Limit[ ] Origin[ ] Segment[D[NVHBN-_JmoBN-_JmoBN-_JmorBN-_Jmo`|BgNTJW@g|}BN.Jmf..`l ЮS. n/NR쾮]HƼ]g`" .l .ЮS-@/./Nn` /./NbLN^NuNVN^ _ NNV/B0. S@gS@g `.<``.<h/N.N^.NuNVBN-_Jmo/.NN^NuNV. NN^ _TONNVHJf(|`(|`?<N?<TN?<1N?<6N|Y`?<N?<EN?<N?<>N?<N?<N|?<GNt?<0Nl?<3Nd?<6N\?<4NTH Д&@A*~` EpZRRG GloBG`A0pN.RG Gko?< NSFJFl^?<N?<N?<AN?< NLN^.NuNV/BN|.JmoJW Wg/N.N^NuNVHp/N-gBNNN m (@r -@HnNL(nBG Gl/ HnNRG0.H` m (8r -@.@gS,.HnN*. .м-@Bg/<NR8H܄Hڄm?< NBNLN^NuNVp/NN&N^NuNVp/NpNN^NuNVHzPNJn\ nc_g,0.H |0?N0.H H@J@|0?NNN^ _TONFloppy Disk Error NVHBN.Jmo@ W Wg, fBF`<<Hn?< ?NJng?.NBLN^NuNVHBN.Jmo@ W Wg, fBF`<<Hn?<?N"Jng?.NLN^NuNVH<.-| n//<N)D м=@ no=|Hn?<?NHzdN:JFf HzRN.`HzBN$Hz2NNHn?<?N ngJng ?.NB`Hn?<?N`Jng ?.N"`BG`B6pRG GoAC HnHn?< N'BG` AB0pRG GoA&H=|-H=@-H=@HnHn?<N&HnHn?<N&HnHn?<N&HnHn?<N&HnHn?Bg/ NtJng ?.N\`~ ]@H/NBE`@?<HnHnHnN: @AI8n LT0.@RE Eo/-NA&HHnHn??/ NRG G WJnVgxJng ?.N`$n ~ HnHn??/ NRGnWJnVgJng ?.Nz`BG` AB0pRG GoA( DIBT9|Bl L\C 9|9|9|b DI89| 9| L\C 09|9|b DI48 9|9| L\Cz 9|9|bA&HHnHn??</ NJng ?.N` Hz$NNNHn?<?NLN^ _TONMemory dump complete. MEMORY.DATAMMU.DATAMEMDUMPLISABUG DUMP Drive.LowerUpperPlease Insert Disk in NVH8.AC Hn?< ?NJng ?.N` HnHn?BgA/NNJng ?.N`HnHn?< N#ACp VgHzN8N` ngHzN N`~HnHn??A/NJnfn ]@H/NBF`X GW F_ F}\‚Rg< @AI=T0,@=@,@=@?BgHnHnHnNRF Fo/-NRG G WJnVg\Jng ?.N`B0.| =@~ GlZHnHn??A/N G f<&|Hn/ ?<PN"&|Hn/ ?<N"~&|Hn/ ?<N"j`HnHn??/NڼRGnWJnVgvJng ?.N`0.@@.@@-Ҁ-@HzNNLN^ _TONMemory retrival complete.Invalid revision number.Invalid block zero header.LISABUG DUMPNV=n .AV@@H.AV@@H.AV@@H߁.AV@@H.AV@@H.AV@@H.AV@@H.AV@@.AV@@HPP.AV@@HPP.AV@@HP߁P.AV@@HPP.AV@@HPP.AV@@HPP.AV@@HPP.AV@@PP=nN^ _\ONNVH<. nDfBG` nAf~`~JG\ F0\ F7_g F|0>`~=GLN^ _PONNV/ (nBl l@9@(_N^.NuNV4H(n=|Bn| n@nogNBg n0.BA0? n0.R@BA0?/.N*>JGl/Nx`Hn?NHBTn` n0.BA0 A/f |Rn` n0.BA0 A-f8Rn n@nofBg n0.BA0? n0.R@BA0?/.N>D]JG]g/N`"=G4:`Hn?NREin4oBTn`/N`/N`Jngf=|L:=n. (n&lHz/, NBJ_oHzn/, N*J_o l B@0p @1\ l BA0p A7_g l B@0p|0HѬ0+@7RkLN^ _\ON.L,ANVH..(nJl D.=|- /?.HlN$ l /HnHn Hz4Hl/, Hn?<N _Cp S@n0LN^ _N$NV n/(?<?:?:/.NnN^.Nu+*NV n/(?. nHhNN^ _\ONNVH&n(k. g(0,@A'H k Tl?</.N`0,@9Rl?</.NLN^ _\ONNV n CJ""2Hn n/( NrJ_WD@N^ _PONNV H(n n @=@ ~`  n BA0pAcRGin o n @R@;@0-Ac n pBA0 A*fj;|BN-_ .U-@|Hz"/. NJ_f 0,@9Rl n B/N^`/. ?<Hz/. N0S@?N0Hz/. NxJ_f* n //. HzHn?<N _Cp S@n0BgHz/NBgHz~/NgHzj/. Hz`/. NNHzN/. N n @_o:/. Hz./. N0R@? n @/Hz/. N2 A?Nl=nB.0.H-@Hz/. N0T@?/N4/NF`V n pBA0 A#f;|BN-_BgHz/.NHg n B/.?<?:r?:l/N|`BgHzX/.NBgHzF/.N/BgHz./.N /BgHz/.N /BgHz/.N /BgHz/.N g ?</N`HzHlNJ_^D/N n /HzHnHn?<N _Cp S@n0`2Hzh/. NZJ_f;|BN-_BgHzB/.N&Bg?</NR/BgHz/.N HBg?</N*L/BgHz/.N /BgHz/.N g@ .< U@2,A9Rl| n BH/?<?:?:/N`FJ] ^D/Nt n /HzVHnHn|?<N _C|p S@n0` Hz,/. N4 _^/BgHz/N g/. ?<Hz/. N0S@?N;|BN-_Hz/. NJ_f0,@9Rl?</N`XBgHz/NBgHz/NgHzv/. n @?NHz\/. Nz0T@?/N?</NF n /Hz2Hn/. Hn"?<N _C"p S@n0LN^ _PON$,.W.L).W),(-(($+*DBFDBTDBB(#$.LTRAPSUBQADDQROLSAS#MOVEQ()))).W.L).W)))((NV/ (n B.@ @fjpBA4k|OnA0HD@0 <WrBB4k|?nA~2IDA0 <W/ HzZNҀ/ HzJNƀ@@@ @f/ Hz&N/ HzN@(_N^ _PONUSPCCRSRSPNV/ (n, g\9nNߺBBHl/,Hl"HltA/N Hl"HlN g|`0. l0,nW,@g(_N^ _ NNVN0-Ȱm]2-BBAc0 B Vg^p nH瀀Bg2-BBCc1?N޺2L n //. "nHiHn?<N _Cp S@n0Rm`N^ _PONNVH=|B.B.B-B. mJ(f&BN6-_Jm^D@nHnN0` -m|=| B.B.,B.~B.BBNAC >-Bmʾm]BAAc0p A VBAAc0p A:Vg0Rm mn 0-/BgBAAc0p?Nݘ2 RG`B@Ac0p @:f R@;@Hn/.NxHn/N\Hn,/NRHnHz :NgBgHz $/NzHz HnN| _WrBBA0 BBWg|.@ @W.rBBA0 BBW@g`FHz HnN J_WHnHz Ng&HnHz Hnz?<NACzp S@n0Hn,Hz bNTg^zBGB.RGB@A,0pk|/nA 82IDA0 <f|  B@A,0p @,W".,@GWAg=GB..,@nojRn0.BAA,0k|/nA0HD@0 <f|  0.BAA,0 A,W".,@nWAg.,@Gol Go(Hn,?< S@?Hn(NA~C(p S@n0.,@Go0Hn, R@?.,@G?HnNACp S@n0`A~C,p S@n0g`=|H. g"A~/HzHnN>J_VD/N>`.. g=|LA/Bg/N`0.@BvRnBgA~//NH_Hn~HzXN \g(. " g. g A~//NXBgA//N_HnHz N g(. " g. g A//N.gpBAA0 AAfHzHnN D>JGf .@>`SGBgHz/NHnHzN g"B@A0p @AfHn??<N `BgHzH/NBgHz6/N/BgHz/N /BgHz/N BAA0pk|_nA4JDB0 <W@g`HzHn R@?N hpBAA~0 A#fBgHz/N:BgHzz/N./BgHzd/N /BgHzL/N gL. gBHz.HnN >JGf .@>`SGB@A0p @IgHzHn R@?N HnHzN LgA,C~p S@n0`*Hn~HzHnHn4?<N $A,C4p S@n0HzHn,N j>JGo T@A,pHzpHn,N J>`Hz\Hn,N :>JGo* A,A R@A,7Hz,Hn,N >`HzHn,N >JGo T@A,PHzHn,N >`-g\HnN֠N0Hn,N֔NHzNֈ no00.S@=@~` @26H/?<NNRGinoNHnHzvN.g=|Np0.P@=@A-HBBHn/.Hn"HntA߬/N֠Hn"HnN _f|`Rn0.nW"Ag|  g&.gB.g=n|`x?<?<?</NBgBg?<@/N..gn@?<@?FH Ю-@.HgS@g S@g4U@gh`-nA/?<<N n6pWD`-nA/?<<N H@ nC21PWD`v=|-nA/?<<NϤ .T-@A/?<<Nψ H@ nC21PW"HRAA nC41PWD F@W" @g  g 0.HѮ .^"AggHz2N/.N `HzNNpLN^ _TON Not found Found at N(NV,_NU\N>N.N8N]NNuN^NuNV,_NuN^Nu%_BEGIN NV,_NuN^Nu%_END NV,_H瀀 |0< BXQLNuN^Nu%_INIT NV,_Hr`N^Nu%S_NE NV,_HBA o"oB@f`fS@j AA/oL\NuN^Nu%S_EQ NV,_H"o ov`dN^Nu%S_GT NV,_H"o oBC`BN^Nu%S_LE NV,_H o "ov` N^Nu%S_LT NV,_H o "oBCB@BA@m4`4`fSBj@n C`cC"/oL\NuN^Nu%S_GE NV,_H0/ oC"4JBAR`$aBBB`SBjS@j oC"0/H#//IL._NuN^Nu%_CAT NV,_H oB@BA"o BBBlBA`$HR` fSBj`RS@`?A"/oL\NuN^Nu%_POS NV,_H o0/2/SA"o BBA@m`S@j/o L NuB`N^Nu%_COPY NV,_$_02 _ @o0 Ao*BBAm"6@SCBoSA`@"H`RCoNN^Nu%_DEL NV,_$_0"_ _/ S@m.BABB@m"6B$I&I”@`#SBj`SAjNuN^Nu%_INS NV,_$_0 _"_S@kQNN^Nu%_MOVEL NV,_$_0 _"_S@k!QNN^Nu%_MOVER NV,_$_02 _SAkQNN^Nu%_FILLC NV,_HBB o0/2/gk gRBSAn` R gSBRAk?B/oL\NuN^Nu%_SCANE NV,_HBB o0/2/gk fRBSAn` R fSBRAk?B/oL\NuN^Nu%_SCANN NV,_//0/2/ AH@B@2/Ё/@" /WXNuN^Nu%I_MUL4 NV,_// /"/ NP/A" /WXNuN^Nu%I_DIV4 NV,_// /"/ N/@" /WXNuN^Nu%I_MOD4 H>*jD,jD$&BBx㉰mRSDlJjDjDL|NuNV,_NuN^Nu%_TERM 8"JDB0 <W@g`HzHn R@?N hpBAA~0 A#fBgHz/N:BgHzz/N./BgHzd/N /BgHzL/N gL. gBHz.HnN >JGf .@>`SGB@A0p @IgHzHn R@?N HnHzN LgA,C~p S@n0`*Hn~HzHnHn4?<N $A,C4p S@n0HzHn,N j>JGo T@A,hPASLIB STDUNIT XIUMAN ZOBJIO [FILEIO \UTILITY ]GRAPHS ^TREES _REFS `PARTS aLISTS bMEMMAN cPASDEFS dBLKIOINTfBLOCKIO gPASHEAP hH (A$N$/"X/NњNPASLIB1 PASIOLIB`SULib cObjIOLibdMainProg A$JoNV/- HzHBg/-  /- HzBg/-  /- HzBg/-  /- HztBg/-  /- HzBg/-  /-  /- HzBg- g/- HzBg`/- HzBg- g/- HzBg`/- HzBg- g/- HzhBg`/- HzRBg-g/- Hz:Bg/-  `/- HzBg/-  N^NuRINTOPT4-W+W-I +I -F +F -C +C Current option settings: B+W Write warnings at the beginning of the Cross Reference Listing4+I Add include files to the Cross Reference Listing$+F Print file/unit name when opened4+C Prompt for compile-time expression clarificationAvailable options are:JoNV nCJp@"S@nHnHzDHn",?<"| .@ @fpA0A A+fpA0Ak|onA0HD@0 <f| pA0Ak|onA0HD@0 <f| pA0Ak|onAr0HD@0 <f| pA0Ak|nA40HD@0 <f|`pA0Ak|onA0HD@0 <fB- pA0Ak|onA0HD@0 <fB- pA0Ak|onAx0HD@0 <fB- pA0Ak|nA<0HD@0 <fB-`B. N^.NuETOPTIOz@@@@.TEXTJoNV/R>JGo nC?<"z 0 n(P(BBBB n&`zHn n P P/"g$ n PHhA?<"z//.NR`@Hn n P P/"g$ n PHhA?<"z//.N` n LN^ _ NINDNODEJoNV/ B. (m8Jg*"n i/ l h/"g| `(l`(_N^.NuNAMEFOUJoNVH n CJp@"S@n nCJ""2HmN n?<"z/HnNZ-G -IgTBg/NN gD m`0Hm$HzHn?<"A?<"zC$p@"S@nRG G o@=@~`$A$/O24p@??<HnRGino?<"zA"Lp S@nRF(l4 fHm$HzHn?<"A?<"z/NHzN`A$?<"z/NHzN/HzHn?<"A?<"zC$p"S@n2Jg S@<`A$/?< ?<HnRF F o*+BF FfHm$HzBHn?<"A?<"z/NBFB-$~`0Hm$HzHn?<"A?<"zC$p@"S@nRG Go E P@=@~`(A$/ E PO0p@??<HnRGino E P?<"zC""2`JFgXA$/?<,?<Hn.@>`0Hm$HzTHn?<"A?<"zC$p@"S@nRG G o E P@=@~`(A$/ E PO0p@??<HnRGino E P?<"zC""2RF E*(JftHm$HzHn?<"A?<"z/NtHzNl`PJ+ f./HzhHn?<"A?<"zC$p"S@n2A$?<"z/N"Hz&NHzNLN^ _PONRINTINFL could not be found..  , uses: .  , is used by:JoNVJg" n/(N/./N n/(NN^.NuRINTTREJoNV/ (n lPf(HlVHlN?<?,NJ_g BlPRlN`|S,S g*0,PR@A9@P0,P2SACAM0A9AT(_N^.NuKIPCHARJoNV/ (nB-JAJ/?,T?<Hn/.NN0,Tk|nAH2IDA0 <V,S@gAJ/(_N^.NuETIDENT JoNVH(n(l(lB. ~`0S@AA3J0pf`RG Go| LN^.NuFCTEST JoNVH>. &n(k l$Tf`0,Tk|nA2IDA0 <g n/(NT` n/(NHmJHz"g n/(N( l Tf n/(N` l+TV l-TVlTVgJ|GB,R l TVlTVg$AR/?,T?<Hn n/(N`AR/`HmJHz"gRl8B. n/(NlTg$A/?,T?<Hn n/(NZ`A/B-3BgA?<"z/N%g0,8l:2SACA3`0,8l:2SACA3B0Bg/NgB-H`|H`HmJHz*"g\0,Tk|nA2IDA0 <VlTVg n/(N`ȾlTf`l n/(NAJ?<"zCp@"S@n l=TVlTVg n/(NH`lTf`B. n/(N,lTg$A/?,T?<Hn n/(N`A/A/pA0Ak|?nA0HD@0 <fB-J;|AJ/0-AA0A??<HnRm.@R@mW2-CA0Bk|?nA2IDA0 <VgA?<"z/<AJ?<"z/N*F`HnHz@"HnHz."g(A?<"z/BgA?<"z/N)`^B-3BgA?<"z/N#gAJC 0` AJC 0A?<"z/BgAJ?<"z/N)`THmJHz"g:0,8l:2SACA3Rl:Bg/NHgB-H`|H` HmJHz0"gl0,8l:2SACA3 0f0,8l:2SACA3B0`0,8l:2SACA3Bg/NgB-H`|H`HmJHz"g|0,Tk|nA2IDA0 <VlTVg n/(Nh`ȾlTf`< n/(NAJ?<"zC4p@"S@nA4/Hz$?<HnLN^ _\ONHECKCOMx.OBJ UELSECENDCFALSETRUEFALSETRUE SETCIFCI JoNV/ (n|R l'Tf/.Np l'TW,S@g` l{Tf4/.NJ?<}/N l}TW,SR@g /.N$`` l(Tfb/.N l*TfL/.N?<*/NT l*TW,SR@g /.N`/.N l)TW,S@g`B,R`8 l;TW-H g;lTD` m\0,Thf/.N9| T,Sg n,HN ,Rg/.N\(_N^.NuETNONIDJoNVH&md~`@ n @Gl0S@A  `0S@A  n O0pARG GoB.BGBRG0S@A @AJg0S@A @A(pAp"L Vf|z|, H2SAC?@C q?<"zCp"S@n2 n @ @o4 n B|`$/. 0S@A6`@??<HnRF Fo GW@g8LN^ _PONUUNIT JoNVH(n/.N/.N0,TH//<"./.N0,THހ/.N0,THހ//<" 9@N9|P/.N//<" 9@P/.NxLN^.NuOVETOTEJoNVH(n0<AlTV,S g /.N2`~` /.N$RG GoB.~`@/.N 0,Tk|nA2IDA0 <fA/?,T?<HnRG GoHnHl"g /.N`0,PX@A9@PHnHl",SgvLN^.NuIBTEXT  JoNVH(n0<AlTV,S g /.N:`~` /.N,RG Go/.NLN^.NuBJTEXT JoNVH(n lF.(Jf<&lFHkN k/N k P"l<?<"z 0 kB` G P/ l lF&h/ N S"l<?<"z 0'G`tB GJV" g$ G h P/ lA4?<"z/A?<"z/N`HnHmJHzfHn4?<"Hn4?<RJ_oB.A-m4B nBJ4g(HmJ nB h4/"g|A nB-h4B`.A g-g(HzHmJHn4?<"A4?<"z/NZ/- HzBg/- HmJBg/-  nJB( nBHh4N nB h4-H, n,CJ?<2"zp S@n n,B4B-IBAJ/NHz.A?<"z/N\`hHmJHz Hn4?<"A4?<"zCp@"S@nBAJ/NA?<"z/A?<"z/NHnBg(B-G0.Tk|nA2IDA0 <V.S -G g/N"`-Gg- gLAR/A /A/A /BA/N n ?<"z/A?<"z/NVHnRA?<"z/Nd0.PS@A=@PB.S/N(``HnVBg(`d/- HzBg/- /. Bg/- Hz~Bg/-  -g,HzZ/. HzFHn4?<"A4?<"z/NO .0/"LN^ _PONREF for input. Can't open for input. Can't open  .TEXTWarning -- Can't find Can't find .TEXT USES PROCEDUREFUNCTIONTYPECONSTVAR.TEXTJoNVH(n/- Hz>Bg/-  ~B,/- HzBgA/HlHzHzHzP ,f n,HN ,W"g n,HN` ,fN`BpA0Ak|/nA0HD@0 <f BgA?<"z/Ng| ,W ,Wg6A/A/A /A/A /HlHz"gHlHl?<RJ_nr mSF Fl=E LN^.NuTRTOINTJoNV/- HzxBg/-  /- HzJBg/- nHhBg/-  n| n,HN N^ _\ONXPERROR@Expression/Variable = 'Warning -- Bad compile-time expression.JoNV n CJp@"S@nHnHzD"gB.`HnHz*"g|`|N^ _PONTRTOLO NOTANDJoNVH nCJp@"S@n(n n B)mB lJ4V" g& l h4/Hn"g l)h4`~`g" l h4/Hn"g l"n "4LN^ _ NINDCOMPJoNV n CJp@"S@n.@ @fTHnHz"g|`:HnHzƠ"g|`"HnHz"gB.` ?</.N`p.@ @fVHnHzv"g|`"g|` ?</.Nf` ?</.NXN^ _PONETOPER <>>=<=><=JoNVH. <.:.Bn f Ff=|`V f Fn=|`DJf Fl=|`4 f Fm=|`" f Fo=|` f Fg=|LN^ _ NVALINTEJoNVH>. (n0S@A @AG f +f R@2SAC @AJ0frB R@2SAC @A pfBk`7| R@2,SA=A<`, R@2SAC @2SAC "AAC#RFinoSl` ?</.N`J+f S@2SAC @AJ0f R@2SAC @AJ0f S@2SAC @A pW"RA4SBE AA pWg` S@2SAC @ABp0,U@=@<`, T@2SAC @2SAC "AAC#RFinoUl` ?</.N` ?</.N` +f S@2SAC @AJ0f R@2SAC @AJ0f S@2SAC @A pW"RA4SBE AA pWg S@2SAC @A1` S@2SAC @ABp0,U@=@<`, T@2SAC @2SAC "AAC#RFinoUl` ?</.N` ?</.N`R R@ln: S@2SAC @A0Hk|nA:0HD@0 <f R@2SAC @"SA4SBE AA0Aȴ0f S@2SAC @AB0 S@2SAC @/Bg"SA4SBE AA?0"RA4SBE AA?0+/.N2 A1 R@2,SA=A<`, T@2SAC @2SAC "AAC#RFinoUl` ?< /.N` ?< /.N` ?< /.NzLN^ _\ONVALUATEJoNVHB"-_ nCJp@"S@nB. B.=|Bn0.AA0A A W.ARAnVgRn`B.0.AA0A A V.ARAnVg60.AA0A A(f=|BnB.Rn0.ngA/0.AA0A??<Hnʠ0.AA0A A(fRnRn.@nl ?< /N$0.AA0A A)fRn`rBgA?<"z/NgACD 0`.g`` AC$ 0Rn`,A/0.AA0A??<HnʠRn`HnHz"HnHzҠ"HnHz"HnHz"HnHz"HnHz"gTRn0.2SAC @A0.2SAC @/BgA?<"z//N A`npA0Ak|?nA0HD@0 <f.@=@=|`@0.AA0Ak|?nA0HD@0 <g ?< /NhRni 0.noRn0.2SAC @A0.2SAC @/BgA?<"z/N2 A1`A/HnHz,"HnHz"HnHz"gTRn0.2SAC @A0.2SAC @/BgA?<"z//N: A`HnHz"HnHz"gPRn0.2SAC @AB00.2SAC @/BgA?<"z/Nd2 A1`A?<"z/Hn/N Jg>Rn n0.2SAC @C8 n0.2SAC @C3:`:Rn0.2SAC @AB00.2SAC @ABp?</Nv.@R@nf>=nBnJnoTRn no&BnRn0.2SAC @A 0f$0.2SAC @A 0f ?./Nh0.nmBnRn0.2SAC @A 0f"0.2SAC @AJ0f ?./N0.nmBnRn0.2SAC @A 0f$0.2SAC @A 0f ?./N0.nmBnRn0.2SAC @A 0f ?./N0.nmJ.f nf| ` ?</NO ./"LN^.NuXPSTRTRFFALSETRUENOTORAND<><=>=<>=FALSETRUEJoNVH nCJp@"S@n nCJp@"S@n. &mBBJ4V" g k4/Hn"g&k4`z`J4g\ k4/Hn"gJ(k4G8JfBgA?<"z/N<9_:` fBgA?<"z/Nf9_:|  gt(+4Hk4?<<p(k4A?<2"z"Lp "S@n)D4G8JfBgA?<"z/N9_:` fBgA?<"z/N9_:LN^ _ NDDCOMPTA3. "6F^5D!$ǐ^ƚZpaslibcall, ppaslibc,      ??          '"MNLOMPNQORPSQTRUS VT WU XV YW ZX[Y\Z][^\_]`^a_b`cadbecfdgehfigjhkilj mk!nl"om#pn$qo%rp&sq'tr(us)vt*wu+xv,yw-zx.{y/|z0}{1~|2}3~456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^"   ""      !"#$"                "                                    ! " # $ % & ' ( ) * +  ,! -" .#! /$" 0%# 1&$ 2'% 3(& 4)' 5*( 6+) 7,* 8-+ 9., :/- ;0. <1/ =20 >31 ?42 @53 A64 B75 C86 D97 E:8 F9" < =; >< ?= @> A? B@ CA DB EC FD GE HF IG JH KI LJ MK NL OM PN QO RP SQ TR US VT U" X YW X" [ \Z ][ ^\ _] `^ a_ b` a"decfdgehfigh"kljmkl"opnqop"strusvtwuxvywzx{y |z }{ ~| } ~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_"     """            " "" ! "  #! $" %# &$'%(&)'*(+),*-+.,/-0.1/20314253647586 97!:8";9#<:$=;%><&?='>"AB@CADBECFDGEHFIG JH I"LMKNLOMN"QRPSQTRUSVTWUXVYW ZX [Y \Z ][ ^\_]`^a_b`cadbecfdgehfigjhkiljmknlompn qo!rp"sq#tr$us%vt&wu'xv(w"z{y|z}{~|}~      !"#$%&'()*+,-./0123456789:;<=>"     "      !"