-not a Macintosh disk-c‰�I® c�@c�Æc‰ÀBH¯>¨¯Ó @%€˜m+¹^NúªªF,’ þ 8¨âˆ!À"@$|GúÿÜ×üµËn"Ú`øIú ÙÀ™üNÔ.@žüAúÿ¶,HÝü<( F<B<H…1Å1è1üBx<kNNºâÜüF`ì, 8¨€€!À•Ê "—ËNùþ„Hç€@"|üÙJ(g gø`ðLßNu"_ |üÀaÖ|ÿÿ|…aÈ0â@||�9üÝ�gö|w|…aœ|ˆ|‡NÑH瀀 |üÀ(_@"g2<@gBA?NºÿŠ—Ë`ÿFaÿ`|ÿÿ|…aÿPLßNu  fBR$N"NÒüB�â™áH€‚@&|üÝ� |üÀB€$<0HçNºÿ~N¹þ”Lß@ðdBgg>¼Nºÿ&|)æ`þÈRNuB§B§B§Aúþ*2h/ B§B§B§Ðè NÐ _"_$_"Hçþ&|üÝ� |üÀB€$<0NºÿN¹þ”d 0<ÿÿ`L$|üÃèJ HA Hà  2êI<FøÒFìI<<ÿÈF¸FfH„HÄÊFºFfH…HÅHÑ?B@Lßð"_2€NÐ _0Hç €2<@âI6²@o Aúz:<ÿÿ2`6²@oJAú~:<26" ²@nø2BDBB(`ØE’B²@nø�AJEkz`z2<€HAáILß0.�NÐLß0.¼ÿÿÿÿNÐ  À/ p? O @ 0   0 Ð €XO _,_2_!ß.NB§B§B§/ B§B§B§NÐ08ü @ gNu@À f"_Eú!Ê NH\O/ ?`@ç&x|NÓ _!ü¨@˜"|xEúx EúÿèµÀn"Ú`öCúÿÚEú•É"|xÓÊNÑ"Ò¸¤< ì©A ÀüàÀüà Àüà3Á¨€3üÛ¨€Àüà"|¨@Eú Eú4µÀn"Ú`öCú&Eúü•É"|¨@ÕÉ.ŠNÐ _LŸHçNFLßðNÐ*8¤à�â�&E@ÄCúÌáJãJÒÂåKÒÃäK fÁüà`Áüà  fÁüà `Áüà><遲€$CS*<ÁüàFÄ|Áüà4>BRIBC Gff&<ÔCBSC`D GnÔK†G4ƒ5BÕÅQÉÿ²ÁüàfÁüà`Áüà fÁüà `ÁüàNs |0< B�XHQÈÿú!üüÙ4 _$_"_!ßXOHçžHç/8˜/ $ f0<?‘È üÿÿÿÿQÈÿøNú !Ï N‘.x $_$ g !Ï N’.x !ߘCú !Éœ!üðLßðLßyp�€!ÀNÐ\OFÀNÐ À€à€¿ÿÿúÀ×ÿÿ×à ¯ÿàl0õPÿð߀†¯ €AÀÇ€` €° Ø6€ãlo÷6Û÷ÿë°@€ ÿýà0ÿú¿ÿàÿ÷_ÿÀÿû¿ÿÀÿÖ×ÿàaªní*þß÷>]¿û†> j­ª øÀÀÛýýà5ëÿÿ°¯À6Ø, ìlØË602à€ À€à€ßÿÿöÀ·ÿÿÛà ·ÿçÛ°íPÿ÷o€o€ €¿€AÀ¿€`ÿ€° Ø&€ãllÿ6Èÿÿíp@€ ÿù 0ÿù?ÿàÿößÿÀÿößÿàÿÛ·ÿðaªÎæ•ÿ?ùŸ^þ† ê­• øÀÀÛûý¿ð5íÿÿ°oà6Ø, ìlØË602à€ 8¨€€!ÀEúÿD9üÀ1kEúþŽ—Ë"03üÿÿ69þ?ü CoNùþ„GúNùþ„OS BOOT FAILED TRY A NEWER MACHINE AND BOOT PROM _"_N‘NÐ o0<BAN¹þ¼ o0ƒ _PONÐ _"_$|üÁ�0<J"ÁPJQÈÿöNÐ _"_$|üÁ�0<"ÊPJQÈÿöNÐHçLï$ oÆrÂD?äˆ|?Ì@ìˆ?±Ée\ÑÄÓÄSFk!!QÎÿüSWk:CéÿLé<ÿÐHàÿLé|ÿhHàÿ>Lé|ÿ4Hàÿ>LÑ|ÿHàÿ>SWjÈTO>SGk\!QÏÿü`TSFk ÙQÎÿüSWk8LÙ|ÿHÐ|ÿLÙ|ÿHè|ÿ4LÙ|ÿHè|ÿhLÙ|ÿHè|ÿœLÙ<ÿHè<ÿÐAèSWjÈTO>SGkÙQÏÿüLßxð _Oï NÐNVÿ€Hç8=| ®fÚ=|GîÿÀ* GëÿÀ, &N(N n"n$n 0. ÐÀ S@âZeJ S@BÒîBDBG S@g’g.BC ÖCJDg720·ÅfaL`·Æfa:` 320³Èf8<S@`JDg  ·Åfa$` ·Æfa`  U@o$SBjªt`ž(N&N><`JGg (Ev#$#$QËÿúNukJDg`¹Ëg 3$¹Æfö(N`òBnLßøN^ _ÞüNÐUNPACK NV;n ãN^.ŸNuÄEVINIT NVÿøHç,. †“^ÀJ†]Á€g n0¼ÿÿ`4B§?Nºø„. ‡ÿÿÿÿf n0‡`/.//. /.Nº÷Ö(n)FLßÀN^ _ÞüNÐÒEAD_BLONVÿü/ (n Jno./.?././ /.Nºÿj nJPg`ØüR®Sn`Ì(_N^ _ÞüNÐÒEAD_SEQHçNTÿ"|þ€Eï.¼|r |üøBBByüàByüàgRBfø~NuL‘ÿH’ÿPŠPŠNqNqpS—_Èÿþnæ.¼0<«QÈÿþL‘ÿH’ÿPŠPŠNqNqpS—_Èÿþnæ|~Byüà&JMï*NÛüp|azJGfb|a¸|,MÛüpa`JGfH|až<<Aïa´JGf0AïÑüìvtpÀü ÐBQËÿövrÂü ÒBQËÿöH@02N\LßhðLß"€4�NÐtB@6ãKd a"JDfò`02ãIãP ÿg a JDfì`Nu»Îb SBg �üpxNuBDNu><Nu4< vB@»Îbœüp2ãIãPSCfîÀSBfäNuÑüpÑüpB@(4<dÀÂBC(4< ÆÂÐCBC(ÐC"H4<BAÒCSBfø(ÒC°Ag><NuJoðNV?-ãNºôh.H€Ð|)ä?NºúpN^ _TONÐÔRAP NV.H€gVS@g`’J.f& -ÿXмS€//<Nº(/<Nºê+_ÿX-mÿX . Ñ­ÿX -ÿX°­ÿÈo<Nºÿp`B . ‘­ÿTJ.f/-ÿT/<NºÜ/<Nºž+_ÿT-mÿT -ÿT°­ÿÄl<Nºÿ,N^ _PONÐÂGETSPACNVÿü .мS€//<Nºˆ/<NºJ-_ÿü .ÿü�®=@ N^.ŸNuÆINDSPARNVHç.. Bg/Nºÿ¨0HÀÞ€ mÿü0.å@Ið/./<Nº( 8€//<Nº @n ?.Bg?<BgNºö(L߀N^ _Þü NÐÓETMMU NV0. S@g S@gS@g`=|`=|` =|`BnN^ _\ONÐÃONV_DEVNVÿ¢Hç nCîÿ¾Jp"ØS@nú2�BgHnÿ¾Nº°E g BgNºN=_ÿº   nÿºVÁ€@g8B. Bmýh|` ã@Bv¢RF Foð mýXf=|ÿ¨;|ÿ@`Bmÿ@`|BgNºö;_ýhBgNºì> Gÿÿgd G]À G^Á€g$ GdfBgNºÈ;_ÿ@BgNº¾>`<NºýD`.BgNºª8JD]À D^Á€g<Nºý$ ã@=„¢BgNº„>`–|ÿ§`.ÿ§H€ã@AíÿBpR.ÿ§ .ÿ§oäBg?.ÿ¨/NºþŠ;_ÿ"Bg?.ÿª/Nºþz;_ÿ,Bg?.ÿ¬/Nºþj;_ÿ.Bg?.ÿ®/NºþZ;_ÿ0-|üÿ¢ nÿ¢BPLßðN^.ŸNuÒEAD_CONNVÿ¶Hç nCîÿÀJp"ØS@nú~`LH‡6pÈ@ÿJ@^ÀH‡6pÈAÿ A_ÁÀgH‡6pÈ@ÿH‡"ãAAíÿ1€`H‡ ã@AíÿBpR o®;nÿúýh0.ÿüèH@;@ÿ@AîÿÀ r<Ð�(@&|üêH@6€L߀N^.ŸNuÐROCESS_NVýLHç nCîÿ¾Jp"ØS@nú2�BgHnÿ¾NºýžAîýx/NºöØAîýx/HnýdNºö®JnýdVÀ nýxVÁ€gB-ýe`|ýe  gHnýxNºþàAîý¼&HAîý¼(AîýL,*<Hnýf?-ýZ E0-ÿNÐPHÀ///Nºø¢Jnýfg<Nºû(AëÒ(H/ HnýdNºö.JnýdVÀ TVÁ€g B-ýfmýeýg`l-ýeg*0.ýz°lWÀ"-ÿB²«ÌWÁÀD@ýf-ýf @ýg` B-ýg -ÿB°«Ìf|ýf/ Nºö`B-ýf  -ýe ÀÀ-ýfg/ NºþLßðN^.ŸNuÉNIT_CONNVÿøHç+| ÿ\+|lÿ”+|(ÿ|+|ˆÿt+|€ÿŒ+|ÿl+|ÿ¤(|;TÿN(|;TýZ(|;TýX&| n!Sÿ¢LßN^.ŸNuÓETVARS NVÿ¢Hç/Nºÿt;|ÿ¼ .ÿ¢�¼/Ä+@ÿÈ .ÿ¢Ð¼/Äм+@ÿÄ+|ÿX*<”(<¤ E"D �‘+@ÿT&|?-ýZ0-ÿNÐS?Nº¼Hnÿ¦HmÿBNº÷¶Jnÿ¦gp+@ÿBAîÿ¼Cú6 Ù Ù Ù0‘Hnÿ¼NºýŠB§Bg/-ÿŒBgNºù„+_ÿ� -ÿŒÐ­ÿ�+@ÿPB§B§<0<ÁüHÀ/BgNºùZNºð<+_ÿH+mÿHÿüBG`„ mÿü å@Ið G~VÀ GTVÁÀgd Gl|p@ á@8€`$ Gf|p@BT`| p@BT HÀ�ü€< ï@"’@=Aÿ°?.ÿ°??<BgNºðJRG Gÿoÿx mÿüIèø|p@BT mÿüIèP|p@/-ÿH/<NºÜ 8€LßðN^NuÂOOTINIT system.configNVÿìHç(nB¬ÿ BgNº@BgNº8H€HÀ,BgNºp0HÀѬÿ ÿžf,/,ÿ NºŒBgNºBgNºH€HÀ,BgNº>0HÀѬÿ ÿ™f,/,ÿ NºZBgNºÜBgNºÔH€HÀ,BgNº 0HÀѬÿ ÿ¡f:J­ý`f< Nº÷‚/,ÿ NºBgNºœBgNº”H€HÀ,BgNºÌ0HÀѬÿ ÿ˜g<Nº÷HB§Nºþ,B§Nºö+_ÿ´ n/B§Nºæ  _r Ð�0€p//-ÿXNº /-ÿ´/-ÿXNº&mÿX:=E E0o<Nºöð0<ÁüHÀ+@ÿd+|àÿœ -ÿdЭÿ\ n2HÁÒ€ -ÿœÐ�"-ÿ´Ò€(Bg Эÿ”/Nº÷”0HÀÑ­ÿ” -ÿ”Є+@ÿ¬B§</-ÿ¬BgNºö¼+_ÿ°+mÿ°ÿ` -ÿ\Эÿ`+@ÿh -ÿdЭÿh, n0HÀІ+@ÿ  -ÿœÐ­ÿ +@ÿ¸ -ÿ´Ð­ÿ¸+@ÿ˜?<f/-ÿ°/-ÿ¬?<Nº÷^-mÿ¸ÿö/ /.ÿö/-ÿ´Nºñ† n ­ÿ¸LßðN^ _Þü NÐÂUILD_SYNVÿÐHç(nBGBF. gB¬ÿ `P-nÿØ nÿØ0. °PoB."`° nÿØ0. Áü Aðö-Hÿì&nÿì/+/<Nº&  n0€>+<+/,ÿ Nº$BgNº¦BgNºžH€HÀ-@ÿäBgNºÔ0HÀ(Ù¬ÿ J®ÿäVÀJ„_Á€gB."`4JGWÀ ÿ…WÁÀJGVÁ ÿ W€gJFf n „`HÆ n † n/B§."n/BgNºõ.  _ €B§Nº¬-_ÿÞJGf n Q€/ n P€/NºÜ` Q@HÀ/ n P€/NºÄ|ÿ…ÿøB.ÿù n=hÿú-nÿÞÿüAîÿø-Hÿô n-Pÿð/.ÿô/.ÿðp/NºïèJGgR-mý`ÿÐBg nÿÐ/( n r Ð�/ n P€/ nÿÐPˆ/ �| ? Q@?Nºð„9_ÿþJlÿþg< Nºô( nQ� ÿ�fþ�|"LßðN^ _ÞüNÐÌOADSEG NVÿü/ B§Bg/-ÿlBgNºô+_ÿp -ÿ��­ÿp"-ÿŒÒ€+Aÿl(|`p}//<Nº -ÿ�П�­ÿp(€(|p}//<Nºô -ÿˆÐŸ�­ÿp(€?<}/-ÿp/-ÿl?<Nºô¬(_N^.ŸNuÁLLOC_SCNVÿŒHçAîÿ¸Cúì Ù Ù Ù0‘BgHnÿ¸Nº _ý_mý_ý^+mÿŒÿ„-ý^gB§Bg/-ÿ„BgNºóX+_ÿˆ`+mÿ�ÿˆ-ý_gÆB§Bg/<BgNºó4 м,BgBgB§HnÿúBgHnÿ¨Hnÿ¬Bg/.Nºüà g<NºòÊAîÿ¸CúD Ù Ù Ù0‘BgHnÿ¸Nº p g B®ÿ°-nÿ¬ÿ´`.BgBgB§HnÿúBgHnÿ°Hnÿ´Bg/.Nºü„ g<Nºòn .ÿ´�¼@+@ýn -ÿ„Эÿˆ�­ýn+@ýj` B®ÿ¨ -ÿˆ�¼@+@ýn -ÿ„м@+@ýj?</-ýn/-ýj?<NºóH <é€�­ýn.J®ÿ°fB®ÿ´` .ÿ´Ð‡P€-@ÿ´J®ÿ¨fB®ÿ¬` .ÿ¬Ð‡P€-@ÿ¬-ý_g -ÿˆÐ‡/ -ÿˆÐ‡//.ÿ¬/.ÿ´Nºê\`/-ÿˆ/-ÿˆB§B§NºêJ(|p(­ÿˆ(|t(­ÿ�LßÀN^.ŸNuÌOAD_DEB SYSTEM.DEBUG2 SYSTEM.DEBUGNVÿ°Hç nCîÿ¾Jp"ØS@nú2�&n (nB“BgHnÿ¾Nº ôgZB¬ÿ /,ÿ Nº ÄBgNº FBgNº >H€HÀ(BgNº v0HÀ* ÿ¡f&.B§</BgNºñ&ŸB¬ÿ /,ÿ Nº ~//Nº âLßðN^ _Þü NÐÌOAD_UNPNVÿþBgBgB§Hnÿþ</. /.Bg/.Nºú  g<NºðŠN^ _Þü NÐÌOAD_LLDNVÿîHç(n 0-ÿFÐ|>J”g,, .�”* Ю(HÇ//<Nº ’(Ÿ Д-@ÿò`,.(.HÇ//<Nº p-_ÿò?//?<Nºñ6 .ÿòP€/Nºë LßðN^ _ÞüNÐÉNSTALL_NVÿÎHç(n=n ÿÎ~`°/,ÿ Nº dBgNº æ_ÿâBgNº ÜH€HÀ(BgNº 0HÀ-@ÿÚJ®ÿÚg .ÿÚѬÿ `<Nºï† .ÿ€ÿâf²B§Nº 4(B§Nº ,( GfAíýqB0pB5pËB`ÀAîÿòCúZ Ù Ù0‘z`BgNº f_ÿæ .ÿæAÿ�òRE EoàHnÿò?<?<HnÿÐNº ¶AîÿèCîÿÐ Ù Ù0‘HnÿèHzNºdg(AíýqB0p¼pË å@Aíþ^B° å@AíýžB°`2HnÿèHzÆNº,gAíýqB0pB5pËB`Aíýq¼p¼pË| 5pËgnBg?/.Hnÿü å@AíýžHp å@Aíþ^Hp</.Nºød g<NºîN?.ÿü å@Aíþ^/0 å@Aíýž"0Ò¼/?<NºïPRGi¾nÿÎoþLLßðN^ _Þü NÐÌOADCODEkrni NVB§Bg/-ÿ¤BgNºî +_ÿ¨?<e/-ÿ¨/-ÿ¤?<NºîðN^.ŸNuÍAKESUPSNVÿøHç(mÿ¸ . R€Áü Aôö T€&@-kLßN^ _Þü NÐÆINDMAINNVBg/-ÿ|NºîN0HÀÑ­ÿ|B§</-ÿ|BgNºí€+_ÿ€?<g/-ÿ€/-ÿ|?<NºîdBg/-ÿtNºî0HÀÑ­ÿtB§</-ÿtBgNºíF+_ÿx?<{/-ÿx/-ÿt?<Nºî*N^.ŸNuÃREATEOPNVÿü/Jmýho@ mFýhomFýh0-ýhHÀ.//<Nº .0<ÁüAHÀЭÿX"-ÿT’‡²€oŸ­ÿT.N^.ŸNuÃONFIG_DNVÿ Aîÿ0Cú Ù Ù ÙAîÿrCú Ù Ù0‘Aîÿ´Cúè Ù Ù Ù0‘/NºøîHnÿ´Hmý`/NºúèBgHnÿ0Nº g< Nºì0HnÿöHnÿú/NºûfBgHnÿrNºØ g<Nºì/NºøBg/.Hnÿ$/NºóÆ;_ÿF/.ÿö/.ÿúHmý`/Nºûh-ÿMgNºâ´/.ÿ$?-ÿF/Nºûâ/NºýÔ n /B§/.ÿ$0-ÿFHÀ//Nºýô  _ €/Nºþ&/Nºþ¨N^ _PONÐÌOADSYS $ SYSTEM.UNPACK SYSTEM.OS SYSTEM.LLDNº ˆNV,_NUýTŸíNº z+|ýT mýT PÿÿVÀD@ÿMNºñ0Hmÿ¾HmÿÂNºþ’Hmÿ¼?-ÿ -ÿtЭÿx//-ÿ¾NºáÈNºÞ¨NºRN]Nº (NuN^NuÌOADER NVÿöHçAíãT(HAíã<&HHnÿþ?-ã0-ãHÀ".Ò€// / Nºè Jnÿþg<Nºê¦LßN^.ŸNuÒEAD_PAGNVÿú0.HÀ�íã HÀ"-ã"Ò€-Aÿü0.HÀ�íã H@J@Áü=@ÿú/.ÿüNºÿvAíãT0.ÿúHÀЈ-@ N^ _TONÐÆIND_SENNVýÞHç n-hýê .ýêS€/0-ãHÀ/Nºœ ;@ã8-nýê pÿ+@ã4;mãã:BF` AíåTÁüIðB”BlRF Fÿoä=mãýøAîýþ-HýðAíã<-HýôBE n0-ãHÀÐ�(BnýÞJ„f<Nºé¤Hnýî?-ã0-ãHÀЄ//.ýð/.ýôNºæòJnýîg<NºéxBGAîýþ0.ýøHÀЈ&@Bnýø=kýä¾nýänZ Eÿo<NºéJ AíåTÁüIð Áü(³ Áü9s Jlf<Nºé0,ÑnýÞ0.ýÞ°mã8o`RERG` (-ãL`ÿHLßðN^.ŸNuÏPEN_FILNVÿúHç(n| @ÿ=@ÿú~`84p@ÿk°|nAúP2æIDA0ÿ <f 4pAÿ’F�RGi¾nÿúoÂLßÀN^.ŸNuÓHIFTNAMÿÿþNVÿøHç(n @ÿ:JEnBn`pp4Aÿ4P@ÿR@ÃÀHÁ. Eo U@<`BFJFo$ R@4Aÿ T@4BÿRBÃÂHÁÞ�SF`ØJ‡l D€./0.HÀ/Nº† =@LßàN^ _\ONÐÌDHASH NVÿ~Hç n CîÿÞJp"ØS@nú2�B§Aíã&/Nºýb 8<-ãHnÿÞNºþ¨BgHnÿÞ?-ãNºÿ>HÇ/p6/NºÂNºBp6/Aîÿ¨/NºdAîÿ€Cîÿ¨p ÙS@nú0‘Hnÿ€Nºþ^J.ÿÊgHHnÿÞHnÿ€Nºš .ÿÊWÀÀgz n/B§?.ÿÌNºü~  _ €`SFRG¾mãfBGB§Nº”JFfŠELßðN^ _PONÐÌOOKUP_ENVÿôHç;n ã;mãã?.?-ãNºä;nãB§NºûÆAíãT(HJ¬‚g<Nºæ–;l~ã+l”ã";l˜ã ;lÀã;l¬ã;lãB§?,¾NºûØ&_+Sã&+kã*+kã.LßN^.ŸNuÉNITMEDINVÿöBg/.HnÿúNºþr_ÿÿnÿÿ .ÿÿgB§/.ÿúNºûà-_ÿöN^.ŸNuÏPENINPUNVÿúHç(.BGBF Gÿo<Nºåä AíåTÁü:0JEf<NºåÊ ÐEHÀ¸€l@ AíåTÁüHÆ"’†Ò° n � n J�f<Nºå–HÅHÆ �†"’€ n �``RGÜE`ˆLßðN^ _Þü NÐÆIND_POSNVÿô-mã4ÿü/.0-ãHÀ/NºÒ+_ã4J­ã4]À2-ã8HÁ²­ã4]Á€g<Nºå&0-ãHÀ/-ã4/Nºl .�Ÿ;@ã: -ã4°®ÿüg/-ã4HnÿøHnÿôNºþò/.ÿøNºúN^.ŸNuÆILLBUF NV0-ã:°mãf -ã4R€2-ãHÁ//NºNºÿT0-ã:AíãTpRmã:N^NuÇETBYTE NVÿüHçBgNºÿ®H€HÀá€<BgNºÿžH€>JGl HÇ м> ÐG=@LßÀN^NuÇETWORD NVÿøHçBgNºÿ¦0HÀ//<Nº~,BgNºÿŽ0HÀ.J‡lÞ¼ Ї-@LßÀN^NuÇETLONG NVÿäHç,. 0-ã�mã:>HǼ‡l>JGo0-ã:AíãTAð//.HÇ/Nºß$HÇß®HÇœ‡ßmã:0-ãHÀ°†n¾J­ã4]À2-ã8HÁ²­ã4]Á€g<Nºã‚ -ã4R€/HnÿäHnÿèNºýn-nÿøAíã<(H/0-ãHÀ/NºÞ*º®ÿèl-EÿèJ®ÿèoZHnÿö?-ã0-ãHÀ".ÿäÒ€/?.ÿê/.ÿø/ NºàüJnÿög<Nºã0-ãHÀ/.ÿè/NºV(Ù®œ„ .ÿèÑ®ÿä .ÿèÑ­ã4`ÿ:J†o -ã4R€2-ãHÁ//Nº"NºýhJ†fþÚLßðN^ _PONÐÍOVEMULT//0/Áï2/ ÃïÐAH@B@2/ÂïÐ�/@" /WX�Nu// /"/ Nº2/A" /WX�Nu// /"/ Nº/@" /WX�NuHç>*jD€,jD�$&B€B�xã’ã�㉰ƒm�ƒR�SDlîJ…jD€»†jD�Lß|NuHçàà0/ oCï"4åJÒÂBARˆ`$aJBBÒB`ÚQÊÿüQÈÿì o�Cï"0/åHÒÀ#//ILß._NuHçàà oJB@BA"o JBB°BlBA`$HR�`³ fQÊÿú`RˆS@`Ø?A"/oLß\�NuHçàÀ o0/2/SA"o JBB”A”@mÒÁÀ`ÙQÈÿü/o Lßßü NuB`ê$_02 _ @o0 Ao*BB´Am"6Ö@SC–BoSA�`”@‚ÐÁ"HÒÀ`ÙRCoúNÒ$_0"_ _J/ S@m*BABB´@m6ÖBÃ$IÔÃÒ”@`!QÊÿü`ØQÉÿüNuHçÀÀr`HçÀÀBA 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`cøC"/oLß\�NuNuNuJoÿœNu�•@C [MacSupplement 116j@¨÷÷ËÀf/Nºÿt0. @ g0@#g2S@g6U@g:_@ [�uÕ�x€û*ü`$ k€T" k [ ©&Á„$D÷ûz€€ÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ’LT\XˆŒ„Î$àD $Œb gi6 „*!™N"À#Ãn$ú:%"&( '-(0)1B*RB+s ,xŠ-½ .Âx12<= rootcatalog÷Ë�÷÷ì–¾÷Æp8Ö@�uÖŸ—à£�3± [�  Intrfc/Graf3D.Texth.Texth÷ÎOBJ/MEMTYPES.OBJÎhOBJÎh÷ÎObj/MacPasLib.Objh.Objh÷Îintrfc/QUICKDRAW.TEXTRAW.TEXT÷Î Obj/Graf3D.Obj"Îhj"Îh÷ÎIntrfc/MacPrint.Textnt.Text÷ÎIntrfc/Elems.TexthTextÌ�÷ÎObj/QuickDraw.Objh.ObjÄ÷÷ÎObj/OSTraps.ObjÎhbjHÄ÷÷ÎObj/MacPrint.ObjÎhObjÎh÷ÎIntrfc/Sane.TextÎhextÎh÷Î Obj/Elems.Obj"Îh"Îh÷ÎFragment/StringList.Textist.T÷Î!Intrfc/QuickDraw2.Textaw2.Tex÷Î Obj/ElemsAsm.ObjÎhObjÎh÷Î Obj/Sane.ObjÎ"Îh"Îh÷ÎObj/PrLink.Obj"Îhj"Îh÷ÎOBJ/PACKTRAPS.OBJh.OBJÄ÷÷Îobj/tooltraps.objh.objÄ÷÷ÎObj/PrScreen.objÎhobjÎh÷ÎFragment/ZoomRect.Textect.Tex÷Î"intrfc/OSINTF.TEXTh.TEXTÄ÷÷Î intrfc/TOOLINTF.TEXTTF.TEXT÷÷ÎObj/OSIntf.Obj"ÎhjšHÄ÷÷Î RMAKER.OBJÎ"Îh¶šHÄ÷÷Î INTRFC/PACKINTF.TEXTTF.TEXT÷÷Î Obj/ToolIntf.ObjÎhObjHÄ÷÷ÎINTRFC/MEMTYPES.TEXTES.TEXT÷ÎObj/SaneAsm.ObjÎhbjÎh÷ÎOBJ/PACKINTF.OBJÎhOBJHÄ÷÷ÎIntrfc/Elems.TexthTextÌ�÷Î�•@D [&™%Dc�'³Ê™%DfÌÌ LIntrfc/Graf3D.Texth.Texth÷Î�•@E [&œmÁ1�'³ÐœmÁ3ÌÌ TIntrfc/MacPrint.Textnt.Text÷Î�•@F [&œäðê�'³ÚœäðïÌÌ, \,INTRFC/MEMTYPES.TEXTES.TEXT÷Î�•@G [&œ½PY�'³Þœ½P\ÌÌ ˆintrfc/OSINTF.TEXTh.TEXTÄ÷÷Î�±! [&œþÉŠ�'³íœþÉ‘ÌÌB ŒBINTRFC/PACKINTF.TEXTTF.TEXT÷÷Î�±" [&�êÎ�'³ò�êÑÌÌ Îintrfc/QUICKDRAW.TEXTRAW.TEXT÷Î�±# [&� 6ê�'³û� 6ðÌÌ" à"Intrfc/QuickDraw2.Textaw2.Tex÷Î�•@K [&œYßN�'´œYßQÌÌ Intrfc/Sane.TextÎhextÎh÷Î�•@L [&œ`Ø�'´œ`ØÌÌ  intrfc/TOOLINTF.TEXTTF.TEXT÷÷Î�±$ [&�ë{�'´�ë…ÌÌF F Obj/Elems.Obj"Îh"Îh÷Î�•@N [&™%LZ�'´™%L[ÌÌ bObj/ElemsAsm.ObjÎhObjÎh÷Î�•@O [&œ`Û1�'´œ`Û5ÌÌ gObj/Graf3D.Obj"Îhj"Îh÷Î�•@P [&œmÁx�'´$œmÁ‚ÌÌ iObj/MacPasLib.Objh.Objh÷Î�•@Q [&œs(Ø�'´,œs)OÌÌ „Obj/MacPrint.ObjÎhObjÎh÷Î�•@R [&œÁ›�'´5œÁ¤ÌÌ' ™'OBJ/MEMTYPES.OBJÎhOBJÎh÷Î�•@S [&œôC¶�'´9œôC¼ÌÌ ÀObj/OSIntf.Obj"ÎhjšHÄ÷÷Î�±% [&œþÏŸ�'´FœþÏ«ÌÌ7 Ã7Obj/OSTraps.ObjÎhbjHÄ÷÷Î�±& [&�ž|�'´O�ŸÌÌ úOBJ/PACKINTF.OBJÎhOBJHÄ÷÷Î�•@V [&œôD=�'´VœôDAÌÌ OBJ/PACKTRAPS.OBJh.OBJÄ÷÷Î�•@W [&œôEµ�'´\œôEêÌÌ (Obj/PrLink.Obj"Îhj"Îh÷Î�•@X [&œÀ<ú�'´aœÀ=(ÌÌ -Obj/PrScreen.objÎhobjÎh÷Î�•@Y [&œÁCÏ�'´eœÁCøÌÌ 0Obj/QuickDraw.Objh.ObjÄ÷÷Î�•@Z [&œãHR�'´mœãHYÌÌ! 1! Obj/Sane.ObjÎ"Îh"Îh÷Î�•@[ [&œ`Ûo�'´vœ`ÛvÌÌ! R!Obj/SaneAsm.ObjÎhbjÎh÷Î�•@\ [&œ`Û|�'´|œ`Û€ÌÌ sObj/ToolIntf.ObjÎhObjHÄ÷÷Î�±' [&��2�'´‹��=ÌÌE xEobj/tooltraps.objh.objÄ÷÷Î�±( [&�F·�'´‘�FÝÌÌ ½ RMAKER.OBJÎ"Îh¶šHÄ÷÷Î�±  [&� !¡�'´ � !ÁÌÌ< Â://-  À /- HzèBg À/-  À /- Hz¬Bg À/-  À /-  À /- HzlBg À/-Hm÷~?<ÿ Àò/- Àæ/-  À -÷~@ÿJ@fAí÷~Cú( Ù Ù0‘HzHm÷~ ",J_f$Hm÷~HzHm£>?< "ÆAí÷~Cí£>p@ ÙS@núAí¥>CúÚ Ù0‘Aí¤>CúÈ Ù0‘BmæHAí÷~?<ÿ "z/Nº÷êB­þŠ|ö]/-  À /-  À /- HzvBg À/- Hmø~Bg À/- <.?< Àþ/-  À /-  À NºþB+mþŠöf/-  À /- HzBg À/- -ön�­öj/?< À/- HzÞBg À/-  À /- Hz¼Bg À/- -öf�­ön/?< À/- HzŠBg À/-  À B­þŠB-ö]/-  À /- HzPBg À/-  À /-  À Nº�NºýŠNº�–.m£:,m£6 -£2/ "ð "€N] "ÞNuN^NuÒMAKER starting pass 2... bytes long. The map is  bytes of resource data. There are The output file is BIUOS^/!<(.TEXT sysResDef!Input file [sysResDef] [.TEXT] - $Copyright 1983, Apple Computer, Inc.6MacIntosh Resource Compiler Version 6.0 May 1984?o.ŸNu?o.ŸNup/ _TO>€NÐp/ _TO>€NÐ"_ _02�0�NÑ"_ _02Á0�NÑ�vjFragment/StringList.Textist.T÷Î� •û& [&œuÄ�,éðœuÄÌÌ 2 3Þ÷È÷Ó.½Î "˜6Fø€^5’D!$÷Ç�÷ð™àðšªð™Ü^DèZHZH” še;***********=============*************==============***************============== ; >>>>>>>>>>>BBBBBRRRRRRRUUUUUUUCCCCCCCCEEEEEEEE<<<<<<<<<<<<< ; I sparcely commented and generalized your GetStrList call as ; shown below. ('GetStr' is already used, yes?) Did I do OK? ; Can I distribute to developers? Your code has been oh so slightly ; modified. ; ; I also copied your ICON definitions for Sony, Folder, etc. for Lotus ; and whoever else asks. Is that OK? ; ; ----- CARY ;***********=============*************==============***************============== ; This assembly code allows you to combine the strings required by your application ; into one or more string lists. The lists are accessed by both an ID number, and ; an index into the string list, counting from 1. The finder, as an example, contains ; all of its strings in two lists. ;=================================================================================== ; ; PROCEDURE GetStrList(VAR theStr: Str255; 8(SP) ; index: INTEGER; 6(SP) ; ID: INTEGER); 4(SP) ; ; Copy the string in the string list with the corresponding ID ; and index to the destination string. ; by Bruce Horn ; ;=================================================================================== GSID .EQU 4 ; ID of string list STR# GSIndex .EQU GSID+2 ; index of requested string GSStr .EQU GSIndex+2 ; VAR of string returned StrLType .EQU 'STR#' ; String list ,.PROC GetStrList,0 ,SUBQ #4, SP ; Save space for handle ,MOVE.L #StrLType, -(SP) ; Push STR# ,MOVE.W GSID+8(SP), -(SP) ; Push ID ,_GetResource ; Get the string list ,MOVE.L (SP)+, A0 ; and copy to A0 ,MOVE.L GSStr(SP), A1 ; Get string in A1 ,CLR.B (A1) ; assume empty ,MOVE.L (A0), A0 ; Dereference stringlist. ,MOVE.W (A0)+, D0 ; Get count ,MOVEQ #0, D0 ; zero high order ,MOVE.W GSIndex(SP), D1 ; Get the index GSLoop ,SUBQ #1, D1 ; Decrement index ,BEQ.S GSCopy ; if zero, have right string ,MOVE.B (A0)+, D0 ; Get string length ,ADD D0, A0 ; Skip over ,BRA.S GSLoop ; and loop back GSCopy ,MOVE.B (A0), D0 ; Get string length ,ADDQ #1, D0 ; include length byte ,_BlockMove ; Copy the string GSExit ,MOVE.L (SP)+, A0 ; Get return address ,ADDQ #8, SP ; Pop parameters ,JMP (A0) ; and return. .END ;A sample RMOVER string list definition follows: Comments ; ------------------------------ ; Type STR# ; ,128 (36) 36 = purgable, preloaded ; *** Initial object names *** comments are allowed in the list ; Untitled this is string 1 ; A serious error has occurred. this is string 2 ; Sorry, out of memory! this is string 3 ; Are you sure you want to quit? ...and so on ; ; put two blank lines at the end ; ,129 0 = nonpurgable ; Even more string items ID 129, index 1,...and so on Fragment/ZoomRect.Textect.Tex÷Î� •û' [&œuŧ�,ë œuÅ©ÌÌ =3Þ÷È÷Ó.½Î "˜6Fø€^5’D!$÷Ç�÷ð™àðšªð™Ü^DD›ÍSA PROCEDURE ZoomRect(VAR smallRect,bigRect: Rect; zoomUp: BOOLEAN); { Given two rectangles in global coords, interpolate one into the other, } { making a zooming rectangle image on the screen. The rectangles and the } { screen image are not altered } CONST zoomSteps = 16; VAR rect1,rect2,rect3,rect4: Rect; $i,j: INTEGER; $savePort: GrafPtr; $fract,factor,one: Fixed; { reals are too slow } #FUNCTION Blend(smallCoord,bigCoord: INTEGER): INTEGER; #VAR smallFix,bigFix,tempFix: Fixed; #BEGIN %smallFix:=one * smallCoord; { scale up to fixed point } %bigFix :=one * bigCoord; %tempFix :=FixMul(fract,bigFix) + FixMul(one-fract,smallFix); %Blend :=FixRound(tempFix); #END; BEGIN "GetPort(savePort); "SetPort(deskPort); "PenPat(gray); "PenMode(notPatXor); "one:=65536; { fixed point 'const' } "IF zoomUp "THEN $BEGIN &rect1:=smallRect; &factor:=FixRatio(6,5); { make bigger each time } &fract:=FixRatio(541,10000); { 5/6 ^16 = 0.540877 } $END "ELSE $BEGIN &rect1:=bigRect; &factor:=FixRatio(5,6); { make smaller each time } &fract:=one; { start full size } $END; "rect2:=rect1; "rect3:=rect1; "FrameRect(rect1); { draw initial image } "FOR i:=1 TO zoomSteps DO $BEGIN &rect4.left :=Blend(smallRect.left,bigRect.left); &rect4.right :=Blend(smallRect.right,bigRect.right); &rect4.top :=Blend(smallRect.top,bigRect.top); &rect4.bottom :=Blend(smallRect.bottom,bigRect.bottom); &FrameRect(rect4); { draw newest } &FrameRect(rect1); { erase oldest } &rect1:=rect2; &rect2:=rect3; &rect3:=rect4; &fract:=FixMul(fract,factor); { bump interpolation fraction } $END; "FrameRect(rect1); { erase final image } "FrameRect(rect2); "FrameRect(rect3); "PenNormal; "SetPort(savePort); END; O^Õ§7¦5P÷ÍæH r÷ô…àô†ªô…Ü^  ÷™%Dc{$C Copyright Apple Computer Inc., 1983 } UNIT Elems; ${ Macintosh version. } ${------------------------------------------------------------------------} $INTERFACE (USES ,{$U OBJ/SANE.OBJ } -{ ^^^^ changed 'Obj:' filename reference to 'Obj/' for Workshop-2/24/84 MB} 0SANE { Standard Apple Numeric Environment } ; (procedure Log2X (var x : Extended); ,{ x := log2 (x) } (procedure LnX (var x : Extended); ,{ x := ln (x) } (procedure Ln1X (var x : Extended); ,{ x := ln (1 + x) } (procedure Exp2X (var x : Extended); ,{ x := 2^x } (procedure ExpX (var x : Extended); ,{ x := e^x } (procedure Exp1X (var x : Extended); ,{ x := e^x - 1 } (procedure XpwrI (i : integer; var x : Extended); ,{ x := x^i } (procedure XpwrY (y : Extended; var x : Extended); ,{ x := x^y } (procedure Compound (r, n : Extended; var x : Extended); ,{ x := (1 + r)^n } (procedure Annuity (r, n : Extended; var x : Extended); ,{ x := (1 - (1 + r)^-n) / r } (procedure SinX (var x : Extended); ,{ x := sin(x) } (procedure CosX (var x : Extended); ,{ x := cos(x) } (procedure TanX (var x : Extended); ,{ x := tan(x) } (procedure AtanX (var x : Extended); ,{ x := atan(x) } (procedure NextRandom (var x : Extended); ,{ x := next random (x) } ${$p----------------------------------------------------------------------} $IMPLEMENTATION (procedure Log2X { (var x : Extended) } ; EXTERNAL; (procedure LnX { (var x : Extended) } ; EXTERNAL; (procedure Ln1X { (var x : Extended) } ; EXTERNAL; (procedure Exp2X { (var x : Extended) } ; EXTERNAL; (procedure ExpX { (var x : Extended) } ; EXTERNAL; (procedure Exp1X { (var x : Extended) } ; EXTERNAL; ({ ,Since Elems implementation expects pointer to integer argument, ,use this extra level of interface. (} (procedure XpwrIxxx(var i : integer; var x : Extended); EXTERNAL; (procedure XpwrI { (i : integer; var x : Extended) } ; (begin 0XpwrIxxx(i, x); (end; (procedure XpwrY { (y : Extended; var x : Extended) } ; EXTERNAL; (procedure Compound { (r, n : Extended; var x : Extended) } ; EXTERNAL; (procedure Annuity { (r, n : Extended; var x : Extended) } ; EXTERNAL; (procedure SinX { (var x : Extended) } ; EXTERNAL; (procedure CosX { (var x : Extended) } ; EXTERNAL; (procedure TanX { (var x : Extended) } ; EXTERNAL; (procedure AtanX { (var x : Extended) } ; EXTERNAL; (procedure NextRandom { (var x : Extended) } ; EXTERNAL; $END ${========================================================================} ${========================================================================} ${=======================================================================}. W^£·¢È56P÷Î:H r ÷ð™àðšªð™Ü^÷œmÁ2{$X-} {$S Graf } UNIT Graf3D; { three-dimensional graphics routines layered on top of QuickDraw } INTERFACE USES {$U-} %{$U obj/QuickDraw } QuickDraw, %{$U obj/Sane } Sane, %{$U obj/Elems } Elems; CONST radConst='57.29578'; TYPE Point3D=RECORD /x: extended; /y: extended; /z: extended; -END; %Point2D=RECORD /x: extended; /y: extended; -END; %XfMatrix = ARRAY[0..3,0..3] OF extended; %Port3DPtr = ^Port3D; %Port3D = RECORD 3GPort: GrafPtr; 3viewRect: Rect; 3xLeft,yTop,xRight,yBottom: extended; 3pen,penPrime,eye: Point3D; 3hSize,vSize: extended; 3hCenter,vCenter: extended; 3xCotan,yCotan: extended; 3ident: BOOLEAN; 3xForm: XfMatrix; 1END; VAR thePort3D: Port3DPtr; "PROCEDURE Open3DPort (port: Port3DPtr); "PROCEDURE SetPort3D (port: Port3DPtr); "PROCEDURE GetPort3D (VAR port: Port3DPtr); "PROCEDURE MoveTo2D(x,y: extended); PROCEDURE MoveTo3D(x,y,z: extended); "PROCEDURE LineTo2D(x,y: extended); PROCEDURE LineTo3D(x,y,z: extended); "PROCEDURE Move2D(dx,dy: extended); PROCEDURE Move3D(dx,dy,dz: extended); "PROCEDURE Line2D(dx,dy: extended); PROCEDURE Line3D(dx,dy,dz: extended); "PROCEDURE ViewPort (r: Rect); "PROCEDURE LookAt (left,top,right,bottom: extended); "PROCEDURE ViewAngle (angle: extended); "PROCEDURE Identity; "PROCEDURE Scale (xFactor,yFactor,zFactor: extended); "PROCEDURE Translate (dx,dy,dz: extended); "PROCEDURE Pitch (xAngle: extended); "PROCEDURE Yaw (yAngle: extended); "PROCEDURE Roll (zAngle: extended); "PROCEDURE Skew (zAngle: extended); "PROCEDURE TransForm (src: Point3D; VAR dst: Point3D); "FUNCTION Clip3D (src1,src2: Point3D; VAR dst1,dst2: POINT): BOOLEAN; "PROCEDURE SetPt3D (VAR pt3D: Point3D; x,y,z: extended); "PROCEDURE SetPt2D (VAR pt2D: Point2D; x,y: extended); IMPLEMENTATION {$I intrfc/GRAF3DIMPL} 3Þ÷È÷Ó.½Î "˜6Fø€^5÷’D!$÷Ç�÷ð™àðšªð™Ü^Öèóó÷œäðë{ ---------------------------------------------------------------------- } UNIT MacPrint; {$U-} {Turn on/off the Lisa Libraries.} {$X-} {Turn on/off stack expansion.} {$R-} {Turn on/off range checking.} {$D-} {Turn on/off debug symbols.} INTERFACE { ---------------------------------------------------------------------- } USES {$U Obj/MemTypes } MemTypes, &{$U Obj/QuickDraw } QuickDraw, &{$U Obj/OSIntf } OSIntf; {Interface compile flags, also check CONST's} {$SETC fWordBkOK = TRUE } {Turn on/off word breaking in spool file.[PfWrite]} {$SETC fULFixOK = TRUE } {Turn on/off fixing UL.[PfWrite, PrBand]} { ---------------------------------------------------------------------- } CONST #iPrPgFract = 120; {Page scale factor. ptPgSize (below) is in units of 1/iPrPgFract } #iPrPgFst = 1; {Page range constants} #iPrPgMax = 9999; #iIOBufBytes= 522; {Size of file sys buf.} #iIOBlkBytes= 512; {Size of disk block} #iPrRelease = 2; {Current version number of the code.} #iPrintX = 19; {Spare integers in print rec} {The TPrint Resource type & ID's} #lPStrType = $53545220; {"STR ": Res type for the Pr Rsrc file name} #iPStrRFil = $E000; {-8192} {Str $E000 [in SysRes] is the current printer's rsrc file} #iPStrPFil = $E001; {-8191} {Str $E001 is the default print file name} #lPrintType = $50524543; {"PREC": Res type for the hPrint records} #iPrintDef = 0; {Default hPrint } #iPrintLst = 1; {Last used hPrint} #iPrintDrvr= 2; {.Print's parameter record; not a Print rec} #iMyPrDrvr = $E000; {-8192} {My copy of the above.} {PicFile constants} #iPfMaxPgs = 128; #lPfType = $5046494C; {"PFIL"} #lPfSig = $50535953; {"PSYS"} #iPfIcon = 140; #lPrType = $4150504C; {"APPL"} #lPrSig = $50535953; {"PSYS"} #iPrIcon = 138; {Driver & Resource constants} #sPrDrvr = '.Print'; #iPrDrvrID = 2; {Driver's ResID} #iPrDrvrRef = $FFFD; {Driver's RefNum = NOT ResID} #iPrDrvrDev = $FD00; {Driver's QD Dev num = RefNum in Hi Byte, variant in lo} #iPrBitsCtl = 4; {The Bitmap Print Proc's ctl number} #lScreenBits= $00000000; {The Bitmap Print Proc's Screen Bitmap param} #lPaintBits = $00000001; {The Bitmap Print Proc's Paint [sq pix] param} #lHiScreenBits= $00000010; {The Bitmap Print Proc's Screen Bitmap param} #lHiPaintBits = $00000011; {The Bitmap Print Proc's Paint [sq pix] param} #iPrIOCtl = 5; {The Raw Byte IO Proc's ctl number} #iPrEvtCtl = 6; {The PrEvent Proc's ctl number} #lPrEvtAll = $0002FFFD; {The PrEvent Proc's CParam for the entire screen} #lPrEvtTop = $0001FFFD; {The PrEvent Proc's CParam for the top folder} #iPrDevCtl = 7; {The PrDevCtl Proc's ctl number} #lPrReset = $00010000; {The PrDevCtl Proc's CParam for reset} #lPrPageEnd = $00020000; {The PrDevCtl Proc's CParam for end page} #lPrLineFeed= $00030000; {The PrDevCtl Proc's CParam for paper advance} #lPrLFSixth = $0003FFFF; {The PrDevCtl Proc's CParam for 1/6 th inch paper advance} #lPrLFEighth= $0003FFFE; {The PrDevCtl Proc's CParam for 1/8 th inch paper advance} #iFMgrCtl = 8; {The FMgr's Tail-hook Proc's ctl number} ;{ [The Pre-Hook is the status call] } {General Dlg/Alert[=Ax] Constants:} $iOK = 1; iCancel = 2; #iPrStlDlg= $E000; {-8192} #iPrJobDlg= $E001; {-8191} #iPrCfgDlg= $E002; {-8190} #iPgFeedAx= $E00A; {-8182} #iPicSizAx= $E00B; {-8181} #iIOAbrtAx= $E00C; {-8180} {Sys Error & Deap Shit Constants:} #iMemFullErr = -108; #iPrAbort = 128; #iPicLim = 129; #iPicMax = 130; #iIOAbort = -27; #iPrDeapShit = 29; {The PrVars lo mem area:} #pPrGlobals = $00000944; #bDraftLoop = 0; #bSpoolLoop = 1; #bUser1Loop = 2; #bUser2Loop = 3; { ---------------------------------------------------------------------- } TYPE #TN = 0..15; {A Nibble} #TStr80 = String[80]; {A medium size string} #TPStr80 = ^TStr80; {..its pointer} #TPRect = ^Rect; {A Rect Ptr} #TPBitMap = ^BitMap; {A BitMap Ptr} #TWord = PACKED RECORD {General purpose "alias" record for a word & long.} &CASE Integer OF )0: ( c1, c0: Char ); )1: ( b1, b0: SignedByte ); )2: ( usb1, usb0: Byte ); )3: ( n3, n2, n1, n0: TN ); )4: ( f15, f14, f13, f12, f11, f10, f9, f8, f7, f6, f5, f4, f3, f2, f1, f0: Boolean ); )5: ( i0: Integer ); #END; #TLong = RECORD &CASE Integer OF )0: ( w1, w0: TWord ); )1: ( l0: LongInt ); )2: ( p0: Ptr ); )3: ( h0: Handle ); )4: ( pt: Point ); #END; 5{NOTE: Changes will also affect: PrEqu, TCiVars & TPfVars} #TPrVars = RECORD {4 longs for printing, see SysEqu for location.} &iPrErr: Integer; {Current print error. Set to iPrAbort to abort printing.} &bDocLoop: SignedByte; {The Doc style: Draft, Spool, .., and ..} D{Currently use low 2 bits; the upper 6 are for flags.} &bUser1: SignedByte; {Spares used by the print code} &lUser1: TLong; &lUser2: TLong; &lUser3: TLong; #END; #TPPrVars = ^TPrVars; #TPrInfo = RECORD {Print Info Record: The parameters needed for page composition.} &iDev: Integer; {Font mgr/QuickDraw device code} &iVRes: Integer; {Resolution of device, in device coordinates} &iHRes: Integer; { ..note: V before H => compatable with Point.} &rPage: Rect; {The page (printable) rectangle in device coordinates.} #END; #TPPrInfo = ^TPrInfo; {These are types of paper feeders.} #TFeed = ( feedCut, feedFanfold, feedMechCut, feedOther ); #TPrStl = RECORD {Printer Style: The printer configuration and usage information.} &wDev: TWord; {The device (driver) number. Hi byte=RefNum, Lo byte=variant.} &iPageV: Integer; {paper size in units of 1/iPrPgFract} &iPageH: Integer; { ..note: V before H => compatable with Point.} &bPort: SignedByte; {The IO port number. Refnum?} &feed: TFeed; {paper feeder type.} #END; #TPPrStl = ^TPrStl; {Banding data structures. Not of general interest to Apps.} #TScan = {Band Scan direction Top-Bottom, Left-Right, etc.} &( scanTB, scanBT, scanLR, scanRL ); #TPrXInfo = RECORD {The print time eXtra information.} &iRowBytes: Integer; {The Band's rowBytes.} &iBandV: Integer; {Size of band, in device coordinates} &iBandH: Integer; { ..note: V before H => compatable with Point.} &iDevBytes: Integer; {Size for allocation. May be more than rBounds size!} &iBands: Integer; {Number of bands per page.} &bPatScale: SignedByte; {Pattern scaling} &bULThick: SignedByte; {3 Underscoring parameters} &bULOffset: SignedByte; &bULShadow: SignedByte; &scan: TScan; {Band scan direction} &bXInfoX: SignedByte; {An eXtra byte.} #END; #TPPrXInfo = ^TPrXInfo; #TPrJob = RECORD {Print Job: Print "form" for a single print request.} &iFstPage: Integer; {Page Range.} &iLstPage: Integer; &iCopies: Integer; {No. copies.} &bJDocLoop: SignedByte; {The Doc style: Draft, Spool, .., and ..} &fFromUsr: Boolean; {Printing from an User's App (not PrApp) flag} &pIdleProc: ProcPtr; {The Proc called while waiting on IO etc.} &pFileName: TPStr80; {Spool File Name: NIL for default.} &iFileVol: Integer; {Spool File vol, set to 0 initially} &bFileVers: SignedByte; {Spool File version, set to 0 initially} &bJobX: SignedByte; {An eXtra byte.} #END; #TPPrJob = ^TPrJob; #TPrint = RECORD {The universal 120 byte printing record} &iPrVersion: Integer; {Printing software version} &PrInfo: TPrInfo; {the PrInfo data associated with the current style.} &rPaper: Rect; {The paper rectangle [offset from rPage].} &PrStl: TPrStl; {This print request's style.} &PrInfoPT: TPrInfo; {Print Time Imaging metrics} &PrXInfo: TPrXInfo; {Print-time (expanded) Print info record.} &PrJob: TPrJob; {The Print Job request} &PrintX: Array[1..iPrintX]of integer; {Spare to fill to 120 bytes!} #END; #TPPrint = ^TPrint; #THPrint = ^TPPrint; {Printing Graf Port. All printer imaging, whether spooling, banding, etc, happens "thru" a GrafPort.} #TPrPort = RECORD {This is the "PrPeek" record.} &GPort: GrafPort; {The Printer's graf port.} &GProcs: QDProcs; {..and its procs} &lGParam1: TLong; {Some params: Our relocatable stuff etc.} &lGParam2: TLong; &lGParam3: TLong; &lGParam4: TLong; &fOurPtr: Boolean; {Whether the PrPort allocation was done by us.} &fOurBits: Boolean; {Whether the BitMap allocation was done by us.} #END; #TPPrPort = ^TPrPort; #TPPort = RECORD {Pascal Yuk: Alias to merge a grafport & prport} &CASE Integer OF )0: (pGPort: GrafPtr); )1: (pPrPort: TPPrPort); #END; #TPrStatus = RECORD {Print Status: Print information during printing.} &iTotPages: Integer; {Total pages in Print File.} &iCurPage: Integer; {Current page number} &iTotCopies: Integer; {Total copies requested} &iCurCopy: Integer; {Current copy number} &iTotBands: Integer; {Total bands per page.} &iCurBand: Integer; {Current band number} &fPgDirty: Boolean; {True if current page has been written to.} &fImaging: Boolean; {Set while in band's DrawPic call.} &hPrint: THPrint; {Handle to the active Printer record} &pPrPort: TPPrPort; {Ptr to the active PrPort} &hPic: PicHandle; {Handle to the active Picture} #END; #TPPrStatus = ^TPrStatus; {PicFile = a TPfHeader followed by n QuickDraw Pics (whose PicSize is invalid!)} #TPfPgDir = RECORD &iPages: Integer; &lPgPos: ARRAY [0..iPfMaxPgs] OF LongInt; #END; #TPPfPgDir = ^TPfPgDir; #THPfPgDir = ^TPPfPgDir; #TPfHeader = RECORD {Print File header.} &Print: TPrint; &PfPgDir: TPfPgDir; #END; #TPPfHeader = ^TPfHeader; #THPfHeader = ^TPPfHeader; {Note: Type compatable with an hPrint.} (* This is not included here due to requiring $Use-ing the entire world! #It's only used by those desiring to customize the print dialogs. #TPrDlg = RECORD {Print Dialog: The Dialog Stream object.} &Dlg: DialogRecord; {The Dialog window} &pFltrProc: ProcPtr; {The Filter Proc.} &pItemProc: ProcPtr; {The Item evaluating proc.} &hPrintUsr: THPrint; {The user's print record.} &fDoIt: Boolean; &fDone: Boolean; &lUser1: TLong; {Four longs for user's to hang global data.} &lUser2: TLong; &lUser3: TLong; &lUser4: TLong; #{ ...Plus more stuff needed by the particular printing dialog.} #END; #TPPrDlg = ^TPrDlg; {== a dialog ptr} *) { ---------------------------------------------------------------------- } { --Init-- } PROCEDURE PrOpen; #{ Open the .Print driver, get the Current Printer's Rsrc file %name from SysRes, open the resource file, and open the .Print driver %living in SysRes. %PrOpen MUST be called during init time. } PROCEDURE PrClose; #{Closes JUST the print rsrc file. Leaves the .Print driver in SysRes open.} { --Print Dialogs & Default-- } PROCEDURE PrintDefault ( hPrint: THPrint ); #{ Defaults a handle to a Default Print record. %Note: You allocate (or fetch from file's resources..) the handle, +I fill it. Also, I may invoke this at odd times whenever +I think you have an invalid Print record! } FUNCTION PrValidate ( hPrint: THPrint ): Boolean; #{ Checks the hPrint. Fixes it if there has been a change in SW %version or in the current printer. Returns fChanged. %Note: Also updates the various parameters within the Print +record to match the current values of the PrStl & PrJob. +It does NOT set the fChanged result if these +parameters changed as a result of this update. } FUNCTION PrStlDialog ( hPrint: THPrint ): Boolean; FUNCTION PrJobDialog ( hPrint: THPrint ): Boolean; #{ The Dialog returns the fDoIt flag: )IF PrJobDialog(..) THEN BEGIN ,PrintMyDoc (..); ,SaveMyStl (..) )END -OR )IF PrStlDialog(..) THEN SaveMyStl (..) &NOTE: These may change the hPrint^^ if the version number ,is old or the printer is not the current one. } PROCEDURE PrJobMerge (hPrintSrc, hPrintDst: THPrint); #{ Merges hPrintSrc's PrJob into hPrintDst [Source/Destination]. %Allows one job dialog being applied to several docs [Finder printing] } { --The Document printing procs: These spool a print file.-- } FUNCTION PrOpenDoc ( hPrint: THPrint; 5pPrPort: TPPrPort; 5pIOBuf: Ptr ): TPPrPort; #{ Set up a graf port for Pic streaming and make it the current port. %Init the print file page directory. %Create and open the print file. %hPrint: The print info. %pPrPort: the storage to use for the TPrPort. If NIL we allocate. %pIOBuf: an IO buf; if NIL, file sys uses volume buf. %returns TPPrPort: The TPPrPort (graf port) used to spool thru. } PROCEDURE PrCloseDoc ( pPrPort: TPPrPort ); #{ Write the print file page directory. %Close the print file. } PROCEDURE PrOpenPage ( pPrPort: TPPrPort; pPageFrame: TPRect ); #{ If current page is in the range of printed pages: 'Open a picture for the page 'Otherwise set a null port for absorbing an image. %pPageFrame := PrInfo.rPage, unless you're scaling. %Set pPageFrame to NIL unless you want to perform PicScaling on the printer. %[The printing procs will call OpenPicture (pPageFrame^) and DrawPicture (hPic, rPage);] %Note: Use of QuickDraw may now cause File IO errors due to our Pic spooling! } PROCEDURE PrClosePage( pPrPort: TPPrPort ); #{ Close & kill the page picture. %Update the file page directory. %If we allocated the TPrPort then de-allocate it. } { --The "Printing Application" proc: Read and band the spooled PicFile.-- } PROCEDURE PrPicFile( hPrint: THPrint; 5pPrPort: TPPrPort; 5pIOBuf: Ptr; 5pDevBuf: Ptr; 5VAR PrStatus: TPrStatus ); #{ Read and print the spooled print file. %The idle proc is run during Imaging and Printing. } (* Removed: fources assumption of use of Pic spool files! PROCEDURE PrPic ( hPic: PicHandle; 2hPrint: THPrint; 2pPrPort: TPPrPort; 2pDevBuf: Ptr; 2VAR PrStatus: TPrStatus ); #{ Print a memory resident picture (one page). } *) { --Get/Set the current Print Error-- } FUNCTION PrError: Integer; PROCEDURE PrSetError ( iErr: Integer ); { --The .Print driver calls.-- } PROCEDURE PrDrvrOpen; PROCEDURE PrDrvrClose; #{ Open/Close the .Print driver in SysRes. Make it purgable or not. %ONLY used by folks doing low level stuff, not full document printing. } PROCEDURE PrCtlCall (iWhichCtl: Integer; lParam1, lParam2, lParam3: LongInt); #{ A generalized Control proc for the Printer driver. %The main use is for bitmap printing: )PrCtlCall (iPrBitsCtl, pBitMap, pPortRect, lControl); )== )PROCEDURE PrBits ( pBitMap: Ptr; --QuickDraw bitmap >pPortRect: TPRect; --a portrect. use bounds for whole bitmap >lControl: LongInt ); --0=>Screen resolution/Portrait %This dumps a bitmap/portrect to the printer. %lControl is a device dep param; use 0 for screen res/portrait/etc. %Each different printer will use lControl parameter differently. %Thus PrCtlCall (iPrBitsCtl, @MyPort^.ScreenBits, @MyPort^.PortRect.Bounds,0) %performs a screen dump of just my port's data. %Two special control calls are included in the driver for Screen printing from the %key board: ,PrCtlCall (iPrEvtCtl, lPrEvtAll, 0, 0); Prints the screen ,PrCtlCall (iPrEvtCtl, lPrEvtTop, 0, 0); Prints the top folder %These are handled by the system for key board access but can be called by anyone %at any time. They can be very cheap printing for ornaments, for example! %Another useful call is used for sending raw data to the printer: )PrCtlCall (iPrIOCtl, pBuf, lBufCount, pIdleProc); } {These .Print driver calls are only available in the PrScreen module.-- } PROCEDURE PrPurge; PROCEDURE PrNoPurge; FUNCTION PrDrvrDCE: Handle; FUNCTION PrDrvrVers: Integer; { --Semi private stuff-- } (* The dialog customizing stuff: FUNCTION PrStlInit ( hPrint: THPrint ): TPPrDlg; FUNCTION PrJobInit ( hPrint: THPrint ): TPPrDlg; FUNCTION PrDlgMain ( hPrint: THPrint; pDlgInit: ProcPtr ): Boolean; *) PROCEDURE PrCfgDialog; PROCEDURE PrHack ( lParam1, lParam2, lParam3: TLong ); { ---------------------------------------------------------------------- } {Misc Utilities} {File Utilities: IO68K} {FUNCTION PrStr80Ptr (sName:TStr80): TPStr80;} FUNCTION PrCreateFile(sName:TStr80; iVol: Integer; bVersion: SignedByte): Integer; FUNCTION PrDeleteFile(sName:TStr80; iVol: Integer; bVersion: SignedByte): Integer; FUNCTION PrOpenFile (sName:TStr80; iVol: Integer; bVersion: SignedByte; 4fTrunc: Boolean; pBuf: Ptr; VAR iRefNum: Integer): Integer; FUNCTION PrWriteBlk (iRefNum, iMode:Integer; lPos:LongInt; p:Ptr; lBytes:LongInt ):Integer; FUNCTION PrReadBlk (iRefNum, iMode:Integer; lPos:LongInt; p:Ptr; lBytes:LongInt ):Integer; FUNCTION PrCloseFile(iRefNum: Integer): Integer; {Scc utilitys: Scc68k} FUNCTION PrSCCInit (iBaudEtc: Integer; lHndShk: LongInt): Integer; FUNCTION PrBlockOut (pIdleProc: ProcPtr; pData: Ptr; lBytes: LongInt): Integer; (*FUNCTION PrIOCheck (lTimeOut: LongInt; pData: Ptr; lBytes: LongInt): Integer;*) PROCEDURE XPrIdle (pIdleProc: ProcPtr); PROCEDURE PrAbortCheck; {Other Utilities: PrMacMisc} FUNCTION lPrMul (i1, i0: Integer): LongInt; FUNCTION lPrDiv (lTop: LongInt; iBot: Integer): LongInt; {Performance tool} Procedure SpyInit; Procedure SpyClose; Procedure Spy (iBucket: Integer); { ---------------------------------------------------------------------- } IMPLEMENTATION PROCEDURE PrOpen; EXTERNAL; PROCEDURE PrClose; EXTERNAL; PROCEDURE PrintDefault; EXTERNAL; FUNCTION PrValidate; EXTERNAL; FUNCTION PrStlDialog; EXTERNAL; FUNCTION PrJobDialog; EXTERNAL; PROCEDURE PrJobMerge; EXTERNAL; FUNCTION PrOpenDoc; EXTERNAL; PROCEDURE PrCloseDoc; EXTERNAL; PROCEDURE PrOpenPage; EXTERNAL; PROCEDURE PrClosePage; EXTERNAL; PROCEDURE PrPicFile; EXTERNAL; PROCEDURE PrCfgDialog; EXTERNAL; PROCEDURE PrHack; EXTERNAL; FUNCTION PrError; EXTERNAL; PROCEDURE PrSetError; EXTERNAL; PROCEDURE PrDrvrOpen; EXTERNAL; PROCEDURE PrDrvrClose; EXTERNAL; PROCEDURE PrPurge; EXTERNAL; PROCEDURE PrNoPurge; EXTERNAL; PROCEDURE PrCtlCall; EXTERNAL; FUNCTION PrDrvrDCE; EXTERNAL; FUNCTION PrDrvrVers; EXTERNAL; {FUNCTION PrStr80Ptr; EXTERNAL;} FUNCTION PrCreateFile; EXTERNAL; FUNCTION PrDeleteFile; EXTERNAL; FUNCTION PrOpenFile; EXTERNAL; FUNCTION PrWriteBlk; EXTERNAL; FUNCTION PrReadBlk; EXTERNAL; FUNCTION PrCloseFile; EXTERNAL; FUNCTION lPrMul; EXTERNAL; FUNCTION lPrDiv; EXTERNAL; FUNCTION PrSCCInit; EXTERNAL; FUNCTION PrBlockOut; EXTERNAL; (*FUNCTION PrIOCheck; EXTERNAL;*) PROCEDURE XPrIdle; EXTERNAL; PROCEDURE PrAbortCheck; EXTERNAL; Procedure SpyInit; EXTERNAL; Procedure SpyClose; EXTERNAL; Procedure Spy; EXTERNAL; { ---------------------------------------------------------------------- } END. {Change Log $2/ 9/84: Removed PrPic Procedure: Assumes Pic based print file. } 3Þ÷È÷Ó.½Î "˜6Fø€^5ÿÿ’D!$÷Ç�÷ð™àðšªð™Ü^è÷œ½PY UNIT MemTypes; { Copyright 1983 Apple Computer Inc. } {types which are basic to all Macintosh applications} {RS Apr 30 84 created by taking types from quickdraw and toolintf} INTERFACE TYPE "SignedByte = -128..127; { any byte in memory } "Byte = 0..255; { Unsigned byte for fontmgr } "Ptr = ^SignedByte; { blind pointer } "Handle = ^Ptr; { pointer to a master pointer } "ProcPtr = Ptr; { pointer to a procedure } "Fixed = LongInt; "Str255 = String[255]; "StringPtr = ^Str255; "StringHandle = ^StringPtr; IMPLEMENTATION END. { of UNIT } W^£g¥“5P÷ÍæH r÷ð™ÈðÀ¸ð™Ä^$%1010÷œþÉŠ Unit OSINTF; { Copyright 1983 by Apple Computer, Inc. All Rights Reserved. } { Created 23 Nov 83 by Rony Sebok from heapZone.text and osMisc.text.} { Modification history: } { 12 Apr 84 JTC Cleaned up a la Hacker. } Interface USES {$U-} %{$U obj/MemTypes } MemTypes, %{$U obj/QuickDraw } QuickDraw; CONST "{for Event Manager} "everyEvent = -1; "NullEvent = 0; "mouseDown = 1; "mouseUp = 2; "keyDown = 3; "keyUp = 4; "autoKey = 5; "updateEvt = 6; "diskEvt = 7; "activateEvt = 8; "driverEvt = 11; "app1Evt = 12; "app2Evt = 13; "app3Evt = 14; "app4Evt = 15; "{ event mask equates } "mDownMask = 2; "mUpMask = 4; "keyDownMask = 8; "keyUpMask = 16; "autoKeyMask = 32; "updateMask = 64; "diskMask = 128; "activMask = 256; "driverMask = 2048; "app1Mask = 4096; "app2Mask = 8192; "app3Mask = 16384; "app4Mask = -32768; "{to decipher event message for keyDown events} "charCodeMask = $000000FF; "keyCodeMask = $0000FF00; "{ modifiers } "optionKey= 2048; { Bit 3 of high byte } "alphaLock= 1024; { Bit 2 } "ShiftKey= 512; { Bit 1 } "CmdKey= 256; { Bit 0 } "BtnState= 128; { Bit 7 of low byte is mouse button state } "activeFlag = 1; { bit 0 of modifiers for activate event } "changeFlag = 2; { bit 1 of modifiers for activate event } {for Memory Manager} "MemFullErr = -108; { Not enough room in heap zone } "NilHandleErr = -109; { Master Pointer was NIL in HandleZone or other } "MemWZErr = -111; { WhichZone failed (applied to free block) } "MemPurErr = -112; { trying to purge a locked or non-purgeable block } "NoErr = 0; { All is well } "{file system error codes} "DirFulErr = -33; { Directory full} "DskFulErr = -34; { disk full} "NSVErr = -35; { no such volume} "IOErr = -36; { I/O error (bummers)} "BdNamErr = -37; { there may be no bad names in the final system!} "FNOpnErr = -38; { File not open} "EOFErr = -39; { End of file} "PosErr = -40; { tried to position to before start of file (r/w)} "MFulErr = -41; { memory full(open) or file won't fit (load)} "TMFOErr = -42; { too many files open} "FNFErr = -43; { File not found} "WPrErr = -44; { diskette is write protected} "FLckdErr = -45; { file is locked} "VLckdErr = -46; { volume is locked} "FBsyErr = -47; { File is busy (delete)} "DupFNErr = -48; { duplicate filename (rename)} "OpWrErr = -49; { file already open with with write permission} "ParamErr = -50; { error in user parameter list} "RFNumErr = -51; { refnum error} "GFPErr = -52; { get file position error} "VolOffLinErr = -53; { volume not on line error (was Ejected)} "PermErr = -54; { permissions error (on file open)} "VolOnLinErr = -55; { drive volume already on-line at MountVol} "NSDrvErr = -56; { no such drive (tried to mount a bad drive num)} "NoMacDskErr = -57; { not a mac diskette (sig bytes are wrong)} "ExtFSErr = -58; { volume in question belongs to an external fs} "FSRnErr = -59; { file system rename error:} >{ during rename the old entry was deleted } >{ but could not be restored . . .} "BadMDBErr = -60; { bad master directory block} "WrPermErr = -61; { write permissions error} "firstDskErr = -84; {first of the range of low-level disk errors} "lastDskErr = -64; {last of the range of low-level disk errors} "MaxSize = $800000; { Max data block size is 512K bytes } "{finder constants} "fHasBundle = 32; "fInvisible = 64; "fTrash = -3; "fDesktop = -2; "fDisk = 0; "{io constants} "{ioPosMode values} "fsAtMark = 0; "fsFromStart = 1; "fsFromLEOF = 2; "fsFromMark = 3; "{ioPermission values} "fsCurPerm = 0; "fsRdPerm = 1; "fsWrPerm = 2; "fsRdWrPerm = 3; "{refNums fro the serial ports} "AinRefNum = -6; {serial port A input} "AoutRefNum = -7; {serial port A output} "BinRefNum = -8; {serial port B input} "BoutRefNum = -9; {serial port B output} "{baud rate constants} "baud300 = 380; "baud600 = 189; "baud1200 = 94; "baud1800 = 62; "baud2400 = 46; "baud3600 = 30; "baud4800 = 22; "baud7200 = 14; "baud9600 = 10; "baud19200 = 4; "baud57600 = 0; "{SCC channel configuration word} "{driver reset information masks} "stop10 = 16384; "stop15 = -32768; "stop20 = -16384; "noParity = 8192; "oddParity = 4096; "evenParity = 12288; "data5 = 0; "data6 = 2048; "data7 = 1024; "data8 = 3072; "{serial driver error masks} "swOverrunErr = 0; "parityErr = 16; "hwOverrunErr = 32; "framingErr = 64; "{serial driver message constant} "xOffWasSent = $80; "{for application parameter} "{constants for message returned by the finder on launch} "appLoad = 0; "appPrint = 1; #{masks used for writing and reading from sytem parameter RAM} #everyParam = 1048575; #validMask = 1; #portAMask = 48; #portBMask = 192; #alarmMask = 3840; #fontMask = 12288; #kbdMask = 16384; #printMask = 32768; #volCtlmask = 65536; #clikCaretMask = 131072; #miscMask = 524288; ${for sound driver} $SWmode = -1; $FTmode = 1; $FFmode = 0; TYPE "{for Event Manager} "EventRecord = RECORD 2what: INTEGER; 2message: LongInt; 2when: LongInt; 2where: Point; 2modifiers: INTEGER; 1END; "Zone = Record 2BkLim: Ptr; 2PurgePtr: Ptr; 2HFstFree: Ptr; 2ZCBFree: LongInt; 2GZProc: ProcPtr; 2MoreMast: Integer; 2Flags: Integer; 2CntRel: Integer; 2MaxRel: Integer; 2CntNRel: Integer; 2MaxNRel: Integer; 2CntEmpty: Integer; 2CntHandles: Integer; 2MinCBFree: LongInt; 2PurgeProc: ProcPtr; 2SparePtr: Ptr; { reserved for future } 2AllocPtr: Ptr; 2HeapData: Integer; /End; "THz = ^Zone; { pointer to the start of a heap zone } "Size = LongInt; { size of a block in bytes } "OsErr = Integer; { error code } "QElemPtr = ^QElem; {ptr to generic queue element} {Vertical Blanking Control Block Queue Element} VBLTask = RECORD $qLink: QElemPtr; {link to next element} $qType: INTEGER; {unique ID for validity check} $vblAddr: ProcPtr; {address of service routine} $vblCount: INTEGER; {count field for timeout} $vblPhase: INTEGER; {phase to allow synchronization} "END; {VBLCntrlBlk} {VBLQElPtr = ^VBLTask;} evQEl = RECORD $qLink: QElemPtr; $qType: INTEGER; $evtQwhat: INTEGER; {this part is identical to the EventRecord as...} $evtQmessage:LongInt; {defined in ToolIntf} $evtQwhen: LongInt; $evtQwhere: Point; $evtQmodifiers: INTEGER; "END; "{drive queue elements} DrvQEl = RECORD $qLink: QElemPtr; $qType: INTEGER; $dQDrive: INTEGER; $dQRefNum: INTEGER; {ref num of the drvr which handles this drive} $dQFSID: INTEGER; {id of file system which handles this drive} $dQDrvSize: INTEGER; {size of drive in 512-byte blocks -- not for drvs 1&2} "END; DrvQElPtr = ^DrvQEl; "ParamBlkType = (IOParam,FileParam,VolumeParam,CntrlParam); "OsType = PACKED ARRAY[1..4] OF CHAR; {same as rsrc mgr's Restype} "FInfo = RECORD {record of finder info} ,fdType: OsType; {the type of the file} ,fdCreator: OsType; {file's creator} ,fdFlags: INTEGER; {flags ex. hasbundle,invisible,locked, etc.} ,fdLocation: Point; {file's location in folder} ,fdFldr: INTEGER; {folder containing file} *END; {FInfo} "ParamBlockRec = RECORD ({12 byte header used by the file and IO system} (qLink: QElemPtr; {queue link in header} (qType: INTEGER; {type byte for safety check} (ioTrap: INTEGER; {FS: the Trap} (ioCmdAddr: Ptr; {FS: address to dispatch to} ({common header to all variants} (ioCompletion: ProcPtr; {completion routine addr (0 for synch calls)} (ioResult: OsErr; {result code} (ioNamePtr: StringPtr; {ptr to Vol:FileName string} (ioVRefNum: INTEGER; {volume refnum (DrvNum for Eject and MountVol)} ({different components for the different type of parameter blocks} (CASE ParamBlkType OF (ioParam: *(ioRefNum: INTEGER; {refNum for I/O operation} +ioVersNum: SignedByte; {version number} +ioPermssn: SignedByte; {Open: permissions (byte)} +ioMisc: Ptr; {Rename: new name} D{GetEOF,SetEOF: logical end of file} D{Open: optional ptr to buffer} D{SetFileType: new type} +ioBuffer: Ptr; {data buffer Ptr} +ioReqCount: LongInt; {requested byte count} +ioActCount: LongInt; {actual byte count completed} +ioPosMode: INTEGER; {initial file positioning} +ioPosOffset: LongInt); {file position offset} (FileParam: *(ioFRefNum: INTEGER; {reference number} +ioFVersNum: SignedByte; {version number} +filler1: SignedByte; +ioFDirIndex: INTEGER; {GetFileInfo directory index} +ioFlAttrib: SignedByte; {GetFileInfo: in-use bit=7, lock bit=0} +ioFlVersNum: SignedByte; {file version number} +ioFlFndrInfo: FInfo; {user info} +ioFlNum: LongInt; {GetFileInfo: file number} +ioFlStBlk: INTEGER; {start file block (0 if none)} +ioFlLgLen: LongInt; {logical length (EOF)} +ioFlPyLen: LongInt; {physical lenght} +ioFlRStBlk: INTEGER; {start block rsrc fork} +ioFlRLgLen: LongInt; {file logical length rsrc fork} +ioFlRPyLen: LongInt; {file physical length rsrc fork} +ioFlCrDat: LongInt; {file creation date & time (32 bits in secs)} +ioFlMdDat: LongInt); {last modified date and time} )VolumeParam: +(filler2: LongInt; ,ioVolIndex: INTEGER; {volume index number} ,ioVCrDate: LongInt; {creation date and time} ,ioVLsBkUp: LongInt; {last backup date and time} ,ioVAtrb: INTEGER; {volume attrib} ,ioVNmFls: INTEGER; {number of files in directory} ,ioVDirSt: INTEGER; {start block of file directory} ,ioVBlLn: INTEGER; {GetVolInfo: length of dir in blocks} ,ioVNmAlBlks: INTEGER; {GetVolInfo: num blks (of alloc size)} ,ioVAlBlkSiz: LongInt; {GetVolInfo: alloc blk byte size} ,ioVClpSiz: LongInt; {GetVolInfo: bytes to allocate at a time} ,ioAlBlSt: INTEGER; {starting disk(512-byte) block in block map} ,ioVNxtFNum: LongInt; {GetVolInfo: next free file number} ,ioVFrBlk: INTEGER); {GetVolInfo: # free alloc blks for this vol} *CntrlParam: ,(filler3: INTEGER; {refNum for I/O operation} -CSCode: INTEGER; {word for control status code} -CSParam: Ptr); {operation-defined parameters} &END; {ParamBlockRec} "ParmBlkPtr = ^ParamBlockRec; {20 bytes of system parameter area} "SysParmType = RECORD *Valid: LongInt; {high byte = validation field ($A7)} @{low 3 bytes = odometer} *PortA: INTEGER; {port A configuration} *PortB: INTEGER; {port B configuration} *Alarm: LongInt; {alarm time} *Font: INTEGER; {default font id} *KbdPrint: INTEGER; {high byte = kbd repeat} D{high nibble = thresh in 4/60ths} D{low nibble = rates in 2/60ths} @{low byte = print stuff} *VolClik: INTEGER; {low 3 bits of high byte = volume control} @{high nibble of low byte = double time in 4/60ths} @{low nibble of low byte = caret blink time in 4/60ths} *Misc: INTEGER; {EEEC EEEE PSKB FFHH} D{E = extra} D{P = paranoia level} D{S = mouse scaling} D{K = key click} D{B = boot disk} D{F = menu flash} D{H = help level} %END; {SysParmType} "SysPPtr = ^SysParmType; {volume control block data structure} VCB = RECORD $qLink: QElemPtr; {link to next element} $qType: INTEGER; {not used} $vcbFlags: INTEGER; $vcbSigWord: INTEGER; $vcbCrDate: LongInt; $vcbLsBkUp: LongInt; $vcbAtrb: INTEGER; $vcbNmFls: INTEGER; $vcbDirSt: INTEGER; $vcbBlLn: INTEGER; $vcbNmBlks: INTEGER; $vcbAlBlkSiz: LongInt; $vcbClpSIz: LongInt; $vcbAlBlSt: INTEGER; $vcbNxtFNum: LongInt; $vcbFreeBks: INTEGER; $vcbVN: STRING[27]; $vcbDrvNum: INTEGER; $vcbDRefNum: INTEGER; $vcbFSId: INTEGER; $vcbVRefNum: INTEGER; $vcbMAdr: Ptr; $vcbBufAdr: Ptr; $vcbMLen: INTEGER; $vcbDirIndex: INTEGER; $vcbDirBlk: INTEGER; END; {general queue data structure} QHdr = RECORD $QFlags: INTEGER; {misc flags} $QHead: QElemPtr; {first elem} $QTail: QElemPtr; {last elem} "END; {QHdr} QHdrPtr = ^QHdr; {there are currently 4 types of queues: } { VType - queue of Vertical Blanking Control Blocks } { IOQType - queue of I/0 queue elements } { DrvType - queue of drivers } { EvType - queue of Event Records } { FSQType - queue of VCB elements } { TimerType no longer is used. DrvType replaces it here in enum type} QTypes = (dummyType,vType,ioQType,drvQType,evType,fsQType); QElem = RECORD (CASE QTypes OF (vType: *(vblQelem: VBLTask); {vertical blanking} (ioQType: *(ioQElem: ParamBlockRec); {I/O parameter block} (drvQType: *(drvQElem: DrvQEl); {drive} (evType: *(evQElem: EvQEl); {event} (fsQType: *(vcbQElem: VCB); {volume control block} "END; {QElem} {device control entry} DCtlEntry = RECORD /DCtlDriver: Ptr; {ptr to ROM or handle to RAM driver} /DCtlFlags: INTEGER; {flags} /DCtlQHdr: QHdr; {driver's i/o queue} /DCtlPosition: LongInt; {byte pos used by read and write calls} /DCtlStorage: Handle; {hndl to RAM drivers private storage} /DCtlRefNum: INTEGER; {driver's reference number} /DCtlCurTicks: LongInt; {long counter for timing system task calls} /DCtlWindow: Ptr; {ptr to driver's window if any} /DCtlDelay: INTEGER; {number of ticks btwn sysTask calls} /DCtlEMask: INTEGER; {desk acessory event mask} /DCtlMenu: INTEGER; {menu ID of menu associated with driver} -END; {DCtlEntry} DCtlPtr = ^DCtlEntry; DCtlHandle = ^DCtlPtr; "{for Serial Driver} SerShk = PACKED RECORD {handshake control fields} 2fXOn: Byte; {XON flow control enabled flag} 2fCTS: Byte; {CTS flow control enabled flag} 2xon: Char; {XOn character} 2xoff: Char; {XOff character} 2errs: Byte; {errors mask bits} 2evts: Byte; {event enable mask bits} 2fInX: Byte; {Input flow control enabled flag} 2null: Byte; {unused} 0END; "{parameter block structure for file and IO routines} SerStaRec = PACKED RECORD 5cumErrs: Byte; {cumulative errors report} 5XOFFSent: Byte; {XOff Sent flag} 5rdPend: Byte; {read pending flag} 5wrPend: Byte; {write pending flag} 5ctsHold: Byte; {CTS flow control hold flag} 5XOFFHold: Byte; {XOff flow control hold flag} 3End; "{for Sound Driver} "{for 4-tone sound generation} "Wave = PACKED ARRAY[0..255] OF Byte; "WavePtr = ^Wave; "FTSoundRec = RECORD 2duration: INTEGER; 2sound1Rate: LongInt; 2sound1Phase: LongInt; 2sound2Rate: LongInt; 2sound2Phase: LongInt; 2sound3Rate: LongInt; 2sound3Phase: LongInt; 2sound4Rate: LongInt; 2sound4Phase: LongInt; 2sound1Wave: WavePtr; 2sound2Wave: WavePtr; 2sound3Wave: WavePtr; 2sound4Wave: WavePtr; 0END; "FTSndRecPtr = ^FTSoundRec; "FTSynthRec = RECORD 1mode: INTEGER; 1sndRec: FTSndRecPtr; /END; "FTSynthPtr = ^FTSynthRec; "Tone = RECORD +count: INTEGER; +amplitude: INTEGER; +duration: INTEGER; )END; "Tones = ARRAY[0..5000] OF Tone; "SWSynthRec = RECORD 1mode: INTEGER; 1triplets: Tones; /END; "SWSynthPtr = ^SWSynthRec; "freeWave = PACKED ARRAY[0..30000] OF Byte; "FFSynthRec = RECORD 1mode: INTEGER; 1count: Fixed; 1waveBytes: freeWave; /END; "FFSynthPtr = ^FFSynthRec; {for date and time} DateTimeRec = RECORD 0Year, {1904,1905,...} 0Month, {1,...,12 corresponding to Jan,...,Dec} 0Day, {1,...31} 0Hour, {0,...,23} 0Minute, {0,...,59} 0Second, {0,...,59} 0DayOfWeek: INTEGER; {1,...,7 corresponding to Sun,...,Sat} .END; {DateTimeRec} {for application parameter} appFile = RECORD 1vRefNum: INTEGER; 1ftype: OsType; 1versNum: INTEGER; {versNum in high byte} 1fName: str255; /END; {appFile} {for RAM serial driver} SPortSel = (SPortA,SPortB); {for Event Manager} FUNCTION PostEvent(eventNum: INTEGER; eventMsg: LongInt): OsErr; PROCEDURE FlushEvents(whichMask,stopMask: INTEGER); PROCEDURE SetEventMask(theMask: INTEGER); FUNCTION OSEventAvail(mask: INTEGER; VAR theEvent: EventRecord): BOOLEAN; FUNCTION GetOSEvent(mask: INTEGER; VAR theEvent: EventRecord): BOOLEAN; {OS utilities} FUNCTION HandToHand(VAR theHndl: Handle): OsErr; FUNCTION PtrToXHand(srcPtr: Ptr; dstHndl: Handle; size: LongInt): OsErr; FUNCTION PtrToHand(srcPtr: Ptr; VAR dstHndl: Handle; size: LongInt): OsErr; FUNCTION HandAndHand(hand1,hand2: Handle): OsErr; FUNCTION PtrAndHand(ptr1: Ptr; hand2: Handle; size: LongInt): OsErr; {from HEAPZONE.TEXT} PROCEDURE SetApplBase(startPtr: Ptr); PROCEDURE InitApplZone; PROCEDURE InitZone(growProc: ProcPtr; 3moreMasters: Integer; 3limitPtr,startPtr : Ptr); FUNCTION GetZone: THz; PROCEDURE SetZone(hz: THz); FUNCTION ApplicZone: THz; FUNCTION SystemZone: THz; FUNCTION CompactMem(cbNeeded: Size): Size; PROCEDURE PurgeMem(cbNeeded: Size); FUNCTION FreeMem: LongInt; PROCEDURE ResrvMem(cbNeeded: Size); FUNCTION MaxMem(Var grow: Size): Size; FUNCTION TopMem: Ptr; PROCEDURE SetGrowZone(growZone: ProcPtr); PROCEDURE SetApplLimit(zoneLimit: Ptr); FUNCTION NewPtr(byteCount: Size): Ptr; PROCEDURE DisposPtr(p: Ptr); FUNCTION GetPtrSize(p: Ptr): Size; PROCEDURE SetPtrSize(p: Ptr; newSize: Size); FUNCTION PtrZone(p: Ptr): THz; FUNCTION NewHandle(byteCount: Size): Handle; PROCEDURE DisposHandle(h: Handle); FUNCTION GetHandleSize(h: Handle): Size; PROCEDURE SetHandleSize(h: Handle; newSize: Size); FUNCTION HandleZone(h: Handle): THz; FUNCTION RecoverHandle(p: Ptr): Handle; PROCEDURE EmptyHandle(h: Handle); PROCEDURE ReAllocHandle(h: Handle; byteCount: Size); PROCEDURE HLock(h: Handle); PROCEDURE HUnLock(h: Handle); PROCEDURE HPurge(h: Handle); PROCEDURE HNoPurge(h: Handle); PROCEDURE MoreMasters; PROCEDURE BlockMove(srcPtr, destPtr: Ptr; byteCount: Size); FUNCTION MemError: OsErr; FUNCTION GZCritical: Boolean; FUNCTION GZSaveHnd: Handle; {interface for core routines pertaining to the vertical retrace mgr} {routines defined in VBLCORE.TEXT} FUNCTION VInstall(VBLTaskPtr: QElemPtr): OsErr; FUNCTION VRemove(VBLTaskPtr: QElemPtr): OsErr; {interface for Operating System Dispatcher} {routines defined in DISPATCH.TEXT} FUNCTION GetTrapAddress(trapNum: INTEGER): LongInt; PROCEDURE SetTrapAddress(trapAddr: LongInt; trapNum: INTEGER); {interface for utility core routines (defined in sysutil)} FUNCTION ReadParam(SysParams: SysPPtr; paramMask:LongInt):OsErr; FUNCTION WriteParam(SysParams: SysPPtr; paramMask: LongInt):OsErr; FUNCTION SetDateTime(time: LongInt):OsErr; FUNCTION ReadDateTime(VAR time: LongInt):OsErr; PROCEDURE SetTime(d: DateTimeRec); PROCEDURE GetTime(VAR d: DateTimeRec); PROCEDURE Date2Secs(d: DateTimeRec; VAR s: LongInt); PROCEDUR Secs2Date(s: LongInt; VAR d: DateTimeRec); PROCEDURE Delay(numTicks: LongInt; VAR finalTicks: LongInt); FUNCTION EqualString(str1,str2: Str255; caseSens,diacSens: BOOLEAN):BOOLEAN; PROCEDURE UprString(VAR theString: Str255; diacSens: BOOLEAN); FUNCTION InitUtil: OsErr; PROCEDURE UnLoadSeg(routineAddr: Ptr); INLINE $A9F1; PROCEDURE ExitToShell; INLINE $A9F4; PROCEDURE GetAppParms(VAR apName: str255; VAR apRefNum: INTEGER; 6VAR apParam: Handle); INLINE $A9F5; PROCEDURE CountAppFiles(VAR message: INTEGER; VAR count: INTEGER); PROCEDURE GetAppFiles(index: INTEGER; VAR theFile: AppFile); PROCEDURE ClrAppFiles(index: INTEGER); {queue routines - part of Macintosh core Utility routines} PROCEDURE InitQueue; PROCEDURE Enqueue(qElement: QElemPtr; qHeader: QHdrPtr); FUNCTION Dequeue(qElement: QElemPtr; qHeader: QHdrPtr): OsErr; FUNCTION GetFSQHdr: QHdrPtr; FUNCTION GetDrvQHdr: QHdrPtr; FUNCTION GetVCBQHdr: QHdrPtr; FUNCTION GetVBLQHdr: QHdrPtr; FUNCTION GetEvQHdr: QHdrPtr; FUNCTION GetDCtlEntry(refNum: INTEGER): DCtlHandle; {from MACIO.TEXT} FUNCTION PBOpen(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBClose(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBRead(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBWrite(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBControl(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBStatus(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBKillIO(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBGetVInfo(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBGetVol(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBSetVol(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBEject(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBOffLine(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBFlushVol(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBCreate(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBDelete(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBOpenRF(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBRename(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBGetFInfo(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBSetFInfo(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBSetFLock(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBRstFLock(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBSetFType(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBAllocate(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBGetEOF(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBSetEOF(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBGetFPos(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBSetFPos(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBFlushFile(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBMountVol(paramBlock: ParmBlkPtr): OsErr; FUNCTION PBUnMountVol(paramBlock: ParmBlkPtr): OsErr; PROCEDURE AddDrive(drvrRefNum: INTEGER; drvNum: INTEGER; QEl: drvQElPtr); FUNCTION FSOpen(fileName: Str255; vRefNum: INTEGER; VAR refNum: INTEGER): OsErr; FUNCTION FSClose(refNum: INTEGER): OsErr; FUNCTION FSRead(refNum: INTEGER; VAR count: LongInt; buffPtr: Ptr): OsErr; FUNCTION FSWrite(refNum: INTEGER; VAR count: LongInt; buffPtr: Ptr): OsErr; FUNCTION Control(refNum: INTEGER; csCode: INTEGER; 4csParam: Ptr): OsErr; FUNCTION Status(refNum: INTEGER; csCode: INTEGER; 3csParam: Ptr): OsErr; FUNCTION KillIO(refNum: INTEGER): OsErr; {-volume level calls-} FUNCTION GetVInfo(drvNum: INTEGER; volName: StringPtr; VAR vRefNum: INTEGER; 1VAR FreeBytes: LongInt): OsErr; FUNCTION GetFInfo(fileName: Str255; vRefNum: INTEGER; 2VAR FndrInfo: FInfo):OsErr; FUNCTION GetVol(volName: StringPtr; VAR vRefNum: INTEGER):OsErr; FUNCTION SetVol(volName: StringPtr; vRefNum: INTEGER): OsErr; FUNCTION UnMountVol(volName: StringPtr; vRefNum: INTEGER):OsErr; FUNCTION Eject(volName: StringPtr; vRefNum: INTEGER): OsErr; FUNCTION FlushVol(volName: StringPtr; vRefNum: INTEGER):OsErr; {-file level calls for unopened files-} FUNCTION Create(fileName: Str255; vRefNum: INTEGER; creator: OSType; 0fileType: OSType):OsErr; FUNCTION FSDelete(fileName: Str255; vRefNum: INTEGER):OsErr; FUNCTION OpenRF(fileName: Str255; vRefNum: INTEGER; 0VAR refNum: INTEGER): OsErr; FUNCTION Rename(oldName: Str255; vRefNum: INTEGER; 0newName: Str255):OsErr; FUNCTION SetFInfo(fileName: Str255; vRefNum: INTEGER; 2FndrInfo: FInfo):OsErr; FUNCTION SetFLock(fileName: Str255; vRefNum: INTEGER):OsErr; FUNCTION RstFLock(fileName: Str255; vRefNum: INTEGER):OsErr; FUNCTION SetFType(fileName: Str255; oldVers: SignedByte; vRefNum: INTEGER; 4newVers: SignedByte):OsErr; {-file level calls for opened files-} FUNCTION Allocate(refNum: INTEGER; VAR count: LongInt):OsErr; FUNCTION GetEOF(refNum: INTEGER; VAR LogEOF: LongInt):OsErr; FUNCTION SetEOF(refNum: INTEGER; LogEOF: LongInt):OsErr; FUNCTION GetFPos(refNum: INTEGER; VAR filePos: LongInt):OsErr; FUNCTION SetFPos(refNum: INTEGER; posMode: INTEGER; posOff: LongInt):OsErr; FUNCTION FlushFile(refNum: INTEGER):OsErr; {Serial Driver Interface} FUNCTION DrvrInstall(name: Str255; drvrRefNum: INTEGER): OsErr; FUNCTION DrvrRemove(drvrRefNum: INTEGER): OsErr; FUNCTION OpenDriver(name: Str255): INTEGER; PROCEDURE CloseDriver(refNum: Integer); FUNCTION SerReset(refNum: INTEGER; serConfig: INTEGER): OSErr; FUNCTION SerSetBuf(refNum: INTEGER; serBPtr: Ptr; serBLen: INTEGER): OSErr; FUNCTION SerHShake(refNum: INTEGER; flags: SerShk): OSErr; FUNCTION SerSetBrk(refNum: INTEGER): OSErr; FUNCTION SerClrBrk(refNum: INTEGER): OSErr; FUNCTION SerGetBuf(refNum: INTEGER; VAR count: LongInt): OSErr; FUNCTION SerStatus(refNum: INTEGER; VAR serSta: SerStaRec): OSErr; FUNCTION RamSDOpen(whichPort: SPortSel; rsrcType: OsType; rsrcID: INTEGER): OSErr; PROCEDURE RamSDClose(whichPort: SPortSel); {for Sound Driver} PROCEDURE SysBeep(duration: INTEGER); PROCEDURE SetSoundVol(level: INTEGER); PROCEDURE GetSoundVol(VAR level: INTEGER); PROCEDURE StartSound(synthRec: Ptr; numBytes: LongInt; CompletionRtn: ProcPtr); PROCEDURE StopSound; FUNCTION SoundDone: BOOLEAN; {because of a bug with the way immediate control calls are handled SWSetLevel} {should not be used. Use SetSoundVol instead} {PROCEDURE SWSetLevel(ampl: INTEGER);} {for the system error handler} PROCEDURE SysError(errorCode: INTEGER); IMPLEMENTATION {for Event Manager} FUNCTION PostEvent; EXTERNAL; PROCEDURE FlushEvents; EXTERNAL; PROCEDURE SetEventMask; EXTERNAL; FUNCTION OSEventAvail; EXTERNAL; FUNCTION GetOSEvent ; EXTERNAL; {OS utilities} FUNCTION HandToHand; EXTERNAL; FUNCTION PtrToXHand; EXTERNAL; FUNCTION PtrToHand; EXTERNAL; FUNCTION HandAndHand; EXTERNAL; FUNCTION PtrAndHand; EXTERNAL; {from HEAPZONE.TEXT} PROCEDURE SetApplBase; EXTERNAL; PROCEDURE InitApplZone; EXTERNAL; PROCEDURE InitZone; EXTERNAL; FUNCTION GetZone; EXTERNAL; PROCEDURE SetZone; EXTERNAL; FUNCTION ApplicZone; EXTERNAL; FUNCTION SystemZone; EXTERNAL; FUNCTION CompactMem; EXTERNAL; PROCEDURE PurgeMem; EXTERNAL; FUNCTION FreeMem; EXTERNAL; PROCEDURE ResrvMem; EXTERNAL; FUNCTION MaxMem; EXTERNAL; FUNCTION TopMem; EXTERNAL; PROCEDURE SetGrowZone; EXTERNAL; PROCEDURE SetApplLimit; EXTERNAL; FUNCTION NewPtr; EXTERNAL; PROCEDURE DisposPtr; EXTERNAL; FUNCTION GetPtrSize; EXTERNAL; PROCEDURE SetPtrSize; EXTERNAL; FUNCTION PtrZone; EXTERNAL; FUNCTION NewHandle; EXTERNAL; PROCEDURE DisposHandle; EXTERNAL; FUNCTION GetHandleSize; EXTERNAL; PROCEDURE SetHandleSize; EXTERNAL; FUNCTION HandleZone; EXTERNAL; FUNCTION RecoverHandle; EXTERNAL; PROCEDURE EmptyHandle; EXTERNAL; PROCEDURE ReAllocHandle; EXTERNAL; PROCEDURE HLock; EXTERNAL; PROCEDURE HUnLock; EXTERNAL; PROCEDURE HPurge; EXTERNAL; PROCEDURE HNoPurge; EXTERNAL; PROCEDURE MoreMasters;EXTERNAL; PROCEDURE BlockMove; EXTERNAL; FUNCTION MemError; EXTERNAL; FUNCTION GZCritical; EXTERNAL; FUNCTION GZSaveHnd; EXTERNAL; {from OSMISC.TEXT} FUNCTION DrvrInstall;EXTERNAL; FUNCTION DrvrRemove;EXTERNAL; FUNCTION OpenDriver;EXTERNAL; PROCEDURE CloseDriver;EXTERNAL; FUNCTION VInstall;EXTERNAL; FUNCTION VRemove;EXTERNAL; FUNCTION GetTrapAddress;EXTERNAL; PROCEDURE SetTrapAddress;EXTERNAL; FUNCTION ReadParam;EXTERNAL; FUNCTION WriteParam;EXTERNAL; FUNCTION SetDateTime;EXTERNAL; FUNCTION ReadDateTime;EXTERNAL; PROCEDURE SetTime;EXTERNAL; PROCEDURE GetTime;EXTERNAL; PROCEDURE Date2Secs;EXTERNAL; PROCEDURE Secs2Date;EXTERNAL; PROCEDURE Delay;EXTERNAL; FUNCTION EqualString;EXTERNAL; PROCEDURE UprString;EXTERNAL; FUNCTION InitUtil;EXTERNAL; {queue routines} PROCEDURE InitQueue;EXTERNAL; PROCEDURE Enqueue;EXTERNAL; FUNCTION Dequeue;EXTERNAL; FUNCTION GetFSQHdr; EXTERNAL; FUNCTION GetDrvQHdr; EXTERNAL; FUNCTION GetVCBQHdr; EXTERNAL; FUNCTION GetVBLQHdr; EXTERNAL; FUNCTION GetEvQHdr; EXTERNAL; FUNCTION GetDCtlEntry; EXTERNAL; {FUNCTION GetDCtlQHdr; EXTERNAL;} {from MACIO.TEXT} FUNCTION PBOpen;EXTERNAL; FUNCTION PBClose;EXTERNAL; FUNCTION PBRead;EXTERNAL; FUNCTION PBWrite;EXTERNAL; FUNCTION PBControl;EXTERNAL; FUNCTION PBStatus;EXTERNAL; FUNCTION PBKillIO;EXTERNAL; FUNCTION PBGetVInfo;EXTERNAL; FUNCTION PBGetVol;EXTERNAL; FUNCTION PBSetVol;EXTERNAL; FUNCTION PBEject;EXTERNAL; FUNCTION PBOffLine;EXTERNAL; FUNCTION PBFlushVol;EXTERNAL; FUNCTION PBCreate;EXTERNAL; FUNCTION PBDelete;EXTERNAL; FUNCTION PBOpenRF;EXTERNAL; FUNCTION PBRename;EXTERNAL; FUNCTION PBGetFInfo;EXTERNAL; FUNCTION PBSetFInfo;EXTERNAL; FUNCTION PBSetFLock;EXTERNAL; FUNCTION PBRstFLock;EXTERNAL; FUNCTION PBSetFType;EXTERNAL; FUNCTION PBAllocate;EXTERNAL; FUNCTION PBGetEOF;EXTERNAL; FUNCTION PBSetEOF;EXTERNAL; FUNCTION PBGetFPos;EXTERNAL; FUNCTION PBSetFPos;EXTERNAL; FUNCTION PBFlushFile;EXTERNAL; FUNCTION PBMountVol;EXTERNAL; FUNCTION PBUnMountVol;EXTERNAL; PROCEDURE AddDrive;EXTERNAL; FUNCTION FSOpen;EXTERNAL; FUNCTION FSClose;EXTERNAL; FUNCTION FSRead;EXTERNAL; FUNCTION FSWrite;EXTERNAL; FUNCTION Control;EXTERNAL; FUNCTION Status;EXTERNAL; FUNCTION KillIO;EXTERNAL; FUNCTION GetVInfo;EXTERNAL; FUNCTION GetFInfo;EXTERNAL; FUNCTION GetVol;EXTERNAL; FUNCTION SetVol;EXTERNAL; FUNCTION UnMountVol;EXTERNAL; FUNCTION Eject;EXTERNAL; FUNCTION FlushVol;EXTERNAL; FUNCTION Create;EXTERNAL; FUNCTION FSDelete;EXTERNAL; FUNCTION OpenRF;EXTERNAL; FUNCTION Rename;EXTERNAL; FUNCTION SetFInfo;EXTERNAL; FUNCTION SetFLock;EXTERNAL; FUNCTION RstFLock;EXTERNAL; FUNCTION SetFType;EXTERNAL; FUNCTION Allocate;EXTERNAL; FUNCTION GetEOF;EXTERNAL; FUNCTION SetEOF;EXTERNAL; FUNCTION GetFPos;EXTERNAL; FUNCTION SetFPos;EXTERNAL; FUNCTION FlushFile;EXTERNAL; FUNCTION SerReset;EXTERNAL; FUNCTION SerSetBuf;EXTERNAL; FUNCTION SerHShake;EXTERNAL; FUNCTION SerSetBrk;EXTERNAL; FUNCTION SerClrBrk;EXTERNAL; FUNCTION SerGetBuf;EXTERNAL; FUNCTION SerStatus;EXTERNAL; FUNCTION RamSDOpen;EXTERNAL; PROCEDURE RamSDClose;EXTERNAL; PROCEDURE SysBeep;EXTERNAL; PROCEDURE SetSoundVol;EXTERNAL; PROCEDURE GetSoundVol;EXTERNAL; PROCEDURE StartSound;EXTERNAL; PROCEDURE StopSound;EXTERNAL; FUNCTION SoundDone;EXTERNAL; PROCEDURE SWSetLevel;EXTERNAL; PROCEDURE ClrAppFiles;EXTERNAL; PROCEDURE CountAppFiles;EXTERNAL; PROCEDURE GetAppFiles;EXTERNAL; {for the system error handler} PROCEDURE SysError; EXTERNAL; END. 3Þ÷È÷Ó.½Î "˜6Fø€^5÷’D!$÷Ç�÷ð™àðšªð™Ü^6  ÷�êÎUNIT PackIntf; { Jan 28, 1984. Rony Sebok Interface for Macintosh packages } { Modification history: } { 11 Apr 84 JTC Modified a la Rose. } { Copyright 1982 by Apple Computer, Inc. All Rights Reserved. } INTERFACE USES {$U-} ({$U obj/MemTypes } MemTypes, ({$U obj/QuickDraw } QuickDraw, ({$U Obj/OsIntf } OsIntf, ({$U obj/toolIntf } ToolIntf; CONST {constants for Standard File package} "putDlgID = -3999; {SFPutFile dialog template ID} "putSave = 1; {save button} "putCancel = 2; {cancel button} "putEject = 5; {eject button} "putDrive = 6; {drive button} "putName = 7; {editTExt item for file name} "getDlgID = -4000; {SFGetFile dialog template ID} "getOpen = 1; {open button} "getCancel = 3; {cancel button} "getEject = 5; {eject button} "getDrive = 6; {drive button} "getNmList = 7; {userItem for file name list} "getScroll = 8; {userItem for scroll bar} {constants for manipulation of international resources} "{masks used for setting and testing currency format flags} "currLeadingZ = 128; {set if leading zero} "currTrailingZ = 64; {set if trailing zero} "currNegSym = 32; {set if minus sign for negative num, reset if parentheses} "currSymLead = 16; {set if currency symbol leads, reset if trails} "{constants specifying absolute value of short date form} "MDY = 0; {month,day,year} "DMY = 1; {day,month,year} "YMD = 2; {year,month,day} "{masks used for date element format flags} "century = 128; {set if century, reset if no century} "mntLdingZ = 64; {set if leading 0 for month} "dayLdingZ = 32; {set if leading zero for day} "{masks used for time element format flags} "hrLeadingZ = 128; {set if leading zero for hours} "minLeadingZ = 64; {set if leading zero for minutes} "secLeadingZ = 32; {set if leading zero for seconds} "{country codes for version numbers} "verUS = 0; "verFrance = 1; "verBritain = 2; "verGermany = 3; "verItaly = 4; TYPE {Standard File} SFReply = RECORD ,good: BOOLEAN; {ignore command if FALSE} ,copy: BOOLEAN; {not used} ,fType: OsType; {file type or not used} ,vRefNum: INTEGER; {volume reference number} ,version: INTEGER; {file's version number} ,fName: String[63]; {file name} *END; {SFReply} SFTypeList = ARRAY[0..3] OF OSType; {interface for international resources} intl0Hndl = ^intl0Ptr; intl0Ptr = ^intl0REc; intl0Rec = PACKED RECORD $decimalPt: char; {ASCII character for decimal point} $thousSep: char; {ASCII character for thousand separator} $listSep: char; {ASCII character for list separator} $currSym1: char; {ASCII for currency symbol (3 bytes long)} $currSym2: char; $currSym3: char; $currFmt: Byte; {currency format flags} $dateOrder: Byte; {short date form - DMY,YMD, or MDY} $shrtDateFmt: Byte; {date elements format flag} $dateSep: char; {ASCII for date separator} $timeCycle: Byte; {indicates 12 or 24 hr cycle} $timeFmt: Byte; {time elements format flags} $mornStr: PACKED ARRAY[1..4] OF char; {ASCII for trailing string from 0:00 to 11:59} $eveStr: PACKED ARRAY[1..4] OF char; {ASCII for trailing string from 12:00 to 23:59} $timeSep: char; {ASCII for the time separator} $time1Suff: char; {suffix string used in 24 hr mode} $time2Suff: char; {8 characters long} $time3Suff: char; $time4Suff: char; $time5Suff: char; $time6Suff: char; $time7Suff: char; $time8Suff: char; $metricSys: Byte; {indicates metric or English system} $intl0Vers: INTEGER; {version: high byte = country, low byte = vers} "END; {intl0Rec} DateForm = (shortDate, longDate, abbrevDate); intl1Hndl = ^intl1Ptr; intl1Ptr = ^intl1REc; intl1Rec = PACKED RECORD $days: ARRAY[1..7] OF String[15]; {length and word for Sunday through Monday} $months: ARRAY[1..12] OF String[15]; {length and word for January to December} $suppressDay: Byte; {0 for day of week, 255 for no day of week} $lngDateFmt: Byte; {expanded date format 0 or 255} $dayLeading0: Byte; {255 for leading 0, 0 for no leading 0} $abbrLen: Byte; {length of abbreviated names in long form} $st0: PACKED ARRAY[1..4] OF char; {the string st0} $st1: PACKED ARRAY[1..4] OF char; {the string st1} $st2: PACKED ARRAY[1..4] OF char; {the string st2} $st3: PACKED ARRAY[1..4] OF char; {the string st3} $st4: PACKED ARRAY[1..4] OF char; {the string st4} $intl1Vers: INTEGER; {version word} $localRtn: INTEGER; {routine for localizing mag comp; } H{minimal case is $4E75 for RTS, but } H{routine may be longer than one integer.} "END; {intl1Rec} {Standard File} PROCEDURE SFPutFile(where: Point; prompt: Str255; origName: Str255; 4dlgHook: ProcPtr; VAR reply: SFReply); PROCEDURE SFPPutFile(where: Point; prompt: Str255; origName: Str255; 5dlgHook: ProcPtr; VAR reply: SFReply; dlgID: INTEGER; 5filterProc: ProcPtr); PROCEDURE SFGetFile(where: Point; prompt: Str255; fileFilter: ProcPtr; 4numTypes: INTEGER; typeList: SFTypeList; dlgHook: ProcPtr; 4VAR reply: SFReply); PROCEDURE SFPGetFile(where: Point; prompt: Str255; fileFilter: ProcPtr; 5numTypes: INTEGER; typeList: SFTypeList; dlgHook: ProcPtr; 5VAR reply: SFReply; dlgID: INTEGER; filterProc: ProcPtr); {interface to Disk Initialization Package} PROCEDURE DILoad; PROCEDURE DIUnLoad; FUNCTION DIBadMount(where: Point; evtMessage: LongInt): INTEGER; FUNCTION DIFormat(drvNum: INTEGER): OsErr; FUNCTION DIVerify(drvNum: INTEGER): OsErr; FUNCTION DIZero(drvNum: INTEGER; volName: Str255): OsErr; {interface to International Utilities} FUNCTION IUGetIntl(theID: INTEGER): Handle; PROCEDURE IUSetIntl(refNum: INTEGER; theID: INTEGER; intlParam: Handle); PROCEDURE IUDateString(dateTime: LongInt; longFlag: DateForm; VAR result: Str255); PROCEDURE IUDatePString(dateTime: LongInt; longFlag: DateForm; VAR result: Str255; 5intlParam: Handle); PROCEDURE IUTimeString(dateTime: LongInt; wantSeconds: BOOLEAN; VAR result: Str255); PROCEDURE IUTimePString(dateTime: LongInt; wantSeconds: BOOLEAN; VAR result: Str255; 5intlParam: Handle); FUNCTION IUMetric: BOOLEAN; FUNCTION IUCompString(aStr,bStr: Str255): INTEGER; FUNCTION IUEqualString(aStr,bStr: Str255): INTEGER; FUNCTION IUMagString(aPtr,bPtr: Ptr; aLen,bLen: INTEGER): INTEGER; FUNCTION IUMagIDString(aPtr,bPtr: Ptr; aLen,bLen: INTEGER):INTEGER; {interface to Binary-Decimal Conversion} PROCEDURE StringToNum(theString: Str255; VAR theNum: LongInt); PROCEDURE NumToString(theNum: LongInt; VAR theString: Str255); IMPLEMENTATION {Binary-Decimal Conversion} PROCEDURE StringToNum;EXTERNAL; PROCEDURE NumToString;EXTERNAL; {Standard File} PROCEDURE SFPutFile;EXTERNAL; PROCEDURE SFPPutFile;EXTERNAL; PROCEDURE SFGetFile;EXTERNAL; PROCEDURE SFPGetFile;EXTERNAL; {Disk Initialization} PROCEDURE DILoad;EXTERNAL; PROCEDURE DIUnLoad;EXTERNAL; FUNCTION DIBadMount;EXTERNAL; FUNCTION DIFormat;EXTERNAL; FUNCTION DIVerify;EXTERNAL; FUNCTION DIZero;EXTERNAL; {interface to International Utilities} FUNCTION IUGetIntl;EXTERNAL; PROCEDURE IUSetIntl;EXTERNAL; PROCEDURE IUDateString;EXTERNAL; PROCEDURE IUDatePString;EXTERNAL; PROCEDURE IUTimeString;EXTERNAL; PROCEDURE IUTimePString;EXTERNAL; FUNCTION IUMetric;EXTERNAL; FUNCTION IUCompString;EXTERNAL; FUNCTION IUEqualString;EXTERNAL; FUNCTION IUMagString;EXTERNAL; FUNCTION IUMagIDString;EXTERNAL; END. { of unit } W^¢†¢ª5÷’D!r÷ð™¸ð½Êð™¼^�Ñ“M“M÷� 6ë UNIT QuickDraw; { Copyright 1983 Apple Computer Inc. } { Written by Bill Atkinson } { Quickdraw2 modified 2/13/84 by R T Martin for inline traps } INTERFACE USES {$U-} ({$U obj/MemTypes } MemTypes; 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 = SignedByte; %QDPtr = Ptr; { blind pointer } %QDHandle = Handle; { blind handle } %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: Ptr; 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: Ptr; 1lineProc: Ptr; 1rectProc: Ptr; 1rRectProc: Ptr; 1ovalProc: Ptr; 1arcProc: Ptr; 1polyProc: Ptr; 1rgnProc: Ptr; 1bitsProc: Ptr; 1commentProc: Ptr; 1txMeasProc: Ptr; 1getPicProc: Ptr; 1putPicProc: Ptr; /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: Handle; 2rgnSave: Handle; 2polySave: Handle; 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: Ptr); { INLINE $A86E;} PROCEDURE OpenPort (port: GrafPtr); INLINE $A86F; PROCEDURE InitPort (port: GrafPtr); INLINE $A86D; PROCEDURE ClosePort (port: GrafPtr); INLINE $A87D; PROCEDURE SetPort (port: GrafPtr); INLINE $A873; PROCEDURE GetPort (VAR port: GrafPtr); INLINE $A874; PROCEDURE GrafDevice (device: INTEGER); INLINE $A872; PROCEDURE SetPortBits(bm: BitMap); INLINE $A875; PROCEDURE PortSize (width,height: INTEGER); INLINE $A876; PROCEDURE MovePortTo (leftGlobal,topGlobal: INTEGER); INLINE $A877; PROCEDURE SetOrigin (h,v: INTEGER); INLINE $A878; PROCEDURE SetClip (rgn: RgnHandle); INLINE $A879; PROCEDURE GetClip (rgn: RgnHandle); INLINE $A87A; PROCEDURE ClipRect (r: Rect); INLINE $A87B; PROCEDURE BackPat (pat: Pattern); INLINE $A87C; { Cursor Routines } PROCEDURE InitCursor; INLINE $A850; PROCEDURE SetCursor(crsr: Cursor); INLINE $A851; PROCEDURE HideCursor; INLINE $A852; PROCEDURE ShowCursor; INLINE $A853; PROCEDURE ObscureCursor; INLINE $A856; { Line Routines } PROCEDURE HidePen; INLINE $A896; PROCEDURE ShowPen; INLINE $A897; PROCEDURE GetPen (VAR pt: Point); INLINE $A89A; PROCEDURE GetPenState(VAR pnState: PenState); INLINE $A898; PROCEDURE SetPenState(pnState: PenState); INLINE $A899; PROCEDURE PenSize (width,height: INTEGER); INLINE $A89B; PROCEDURE PenMode (mode: INTEGER); INLINE $A89C; PROCEDURE PenPat (pat: Pattern); INLINE $A89D; PROCEDURE PenNormal; INLINE $A89E; PROCEDURE MoveTo (h,v: INTEGER); INLINE $A893; PROCEDURE Move (dh,dv: INTEGER); INLINE $A894; PROCEDURE LineTo (h,v: INTEGER); INLINE $A891; PROCEDURE Line (dh,dv: INTEGER); INLINE $A892; { Text Routines } PROCEDURE TextFont (font: INTEGER); INLINE $A887; PROCEDURE TextFace (face: Style); INLINE $A888; PROCEDURE TextMode (mode: INTEGER); INLINE $A889; PROCEDURE TextSize (size: INTEGER); INLINE $A88A; PROCEDURE SpaceExtra (extra: LongInt); INLINE $A88E; PROCEDURE DrawChar (ch: char); INLINE $A883; PROCEDURE DrawString (s: Str255); INLINE $A884; PROCEDURE DrawText (textBuf: Ptr; firstByte,byteCount: INTEGER); INLINE $A885; FUNCTION CharWidth (ch: CHAR): INTEGER; INLINE $A88D; FUNCTION StringWidth (s: Str255): INTEGER; INLINE $A88C; FUNCTION TextWidth (textBuf: Ptr; firstByte,byteCount: INTEGER): INTEGER; XINLINE $A886; PROCEDURE GetFontInfo (VAR info: FontInfo); INLINE $A88B; { Point Calculations } PROCEDURE AddPt (src: Point; VAR dst: Point); INLINE $A87E; PROCEDURE SubPt (src: Point; VAR dst: Point); INLINE $A87F; PROCEDURE SetPt (VAR pt: Point; h,v: INTEGER); INLINE $A880; FUNCTION EqualPt (pt1,pt2: Point): BOOLEAN; INLINE $A881; PROCEDURE ScalePt (VAR pt: Point; fromRect,toRect: Rect); INLINE $A8F8; PROCEDURE MapPt (VAR pt: Point; fromRect,toRect: Rect); INLINE $A8F9; PROCEDURE LocalToGlobal (VAR pt: Point); INLINE $A870; PROCEDURE GlobalToLocal (VAR pt: Point); INLINE $A871; { Rectangle Calculations } PROCEDURE SetRect (VAR r: Rect; left,top,right,bottom: INTEGER); INLINE $A8A7; FUNCTION EqualRect (rect1,rect2: Rect): BOOLEAN; INLINE $A8A6; FUNCTION EmptyRect (r: Rect): BOOLEAN; INLINE $A8AE; PROCEDURE OffsetRect (VAR r: Rect; dh,dv: INTEGER); INLINE $A8A8; PROCEDURE MapRect (VAR r: Rect; fromRect,toRect: Rect); INLINE $A8FA; PROCEDURE InsetRect (VAR r: Rect; dh,dv: INTEGER); INLINE $A8A9; FUNCTION SectRect (src1,src2: Rect; VAR dstRect: Rect): BOOLEAN; INLINE $A8AA; PROCEDURE UnionRect (src1,src2: Rect; VAR dstRect: Rect); INLINE $A8AB; FUNCTION PtInRect (pt: Point; r: Rect): BOOLEAN; INLINE $A8AD; PROCEDURE Pt2Rect (pt1,pt2: Point; VAR dstRect: Rect); INLINE $A8AC; { Graphical Operations on Rectangles } PROCEDURE FrameRect (r: Rect); INLINE $A8A1; PROCEDURE PaintRect (r: Rect); INLINE $A8A2; PROCEDURE EraseRect (r: Rect); INLINE $A8A3; PROCEDURE InvertRect (r: Rect); INLINE $A8A4; PROCEDURE FillRect (r: Rect; pat: Pattern); INLINE $A8A5; { RoundRect Routines } PROCEDURE FrameRoundRect (r: Rect; ovWd,ovHt: INTEGER); INLINE $A8B0; PROCEDURE PaintRoundRect (r: Rect; ovWd,ovHt: INTEGER); INLINE $A8B1; PROCEDURE EraseRoundRect (r: Rect; ovWd,ovHt: INTEGER); INLINE $A8B2; PROCEDURE InvertRoundRect (r: Rect; ovWd,ovHt: INTEGER); INLINE $A8B3; PROCEDURE FillRoundRect (r: Rect; ovWd,ovHt: INTEGER; pat: Pattern); `INLINE $A8B4; { Oval Routines } PROCEDURE FrameOval (r: Rect); INLINE $A8B7; PROCEDURE PaintOval (r: Rect); INLINE $A8B8; PROCEDURE EraseOval (r: Rect); INLINE $A8B9; PROCEDURE InvertOval (r: Rect); INLINE $A8BA; PROCEDURE FillOval (r: Rect; pat: Pattern); INLINE $A8BB; { Arc Routines } PROCEDURE FrameArc (r: Rect; startAngle,arcAngle: INTEGER); INLINE $A8BE; PROCEDURE PaintArc (r: Rect; startAngle,arcAngle: INTEGER); INLINE $A8BF; PROCEDURE EraseArc (r: Rect; startAngle,arcAngle: INTEGER); INLINE $A8C0; PROCEDURE InvertArc (r: Rect; startAngle,arcAngle: INTEGER); INLINE $A8C1; PROCEDURE FillArc (r: Rect; startAngle,arcAngle: INTEGER; pat: Pattern); INLINE $A8C2; PROCEDURE PtToAngle (r: Rect; pt: Point; VAR angle: INTEGER); INLINE $A8C3; { Polygon Routines } FUNCTION OpenPoly: PolyHandle; INLINE $A8CB; PROCEDURE ClosePoly; INLINE $A8CC; PROCEDURE KillPoly (poly: PolyHandle); INLINE $A8CD; PROCEDURE OffsetPoly (poly: PolyHandle; dh,dv: INTEGER); INLINE $A8CE; PROCEDURE MapPoly (poly: PolyHandle; fromRect,toRect: Rect);INLINE $A8FC; PROCEDURE FramePoly (poly: PolyHandle); INLINE $A8C6; PROCEDURE PaintPoly (poly: PolyHandle); INLINE $A8C7; PROCEDURE ErasePoly (poly: PolyHandle); INLINE $A8C8; PROCEDURE InvertPoly (poly: PolyHandle); INLINE $A8C9; PROCEDURE FillPoly (poly: PolyHandle; pat: Pattern); INLINE $A8CA; { Region Calculations } FUNCTION NewRgn: RgnHandle; INLINE $A8D8; PROCEDURE DisposeRgn(rgn: RgnHandle); INLINE $A8D9; PROCEDURE CopyRgn (srcRgn,dstRgn: RgnHandle); INLINE $A8DC; PROCEDURE SetEmptyRgn(rgn: RgnHandle); INLINE $A8DD; PROCEDURE SetRectRgn(rgn: RgnHandle; left,top,right,bottom: INTEGER); INLINE $A8DE; PROCEDURE RectRgn (rgn: RgnHandle; r: Rect); INLINE $A8DF; PROCEDURE OpenRgn; INLINE $A8DA; PROCEDURE CloseRgn (dstRgn: RgnHandle); INLINE $A8DB; PROCEDURE OffsetRgn (rgn: RgnHandle; dh,dv: INTEGER); INLINE $A8E0; PROCEDURE MapRgn (rgn: RgnHandle; fromRect,toRect: Rect); INLINE $A8FB; PROCEDURE InsetRgn (rgn: RgnHandle; dh,dv: INTEGER); INLINE $A8E1; PROCEDURE SectRgn (srcRgnA,srcRgnB,dstRgn: RgnHandle); INLINE $A8E4; PROCEDURE UnionRgn (srcRgnA,srcRgnB,dstRgn: RgnHandle); INLINE $A8E5; PROCEDURE DiffRgn (srcRgnA,srcRgnB,dstRgn: RgnHandle); INLINE $A8E6; PROCEDURE XorRgn (srcRgnA,srcRgnB,dstRgn: RgnHandle); INLINE $A8E7; FUNCTION EqualRgn (rgnA,rgnB: RgnHandle): BOOLEAN; INLINE $A8E3; FUNCTION EmptyRgn (rgn: RgnHandle): BOOLEAN; INLINE $A8E2; FUNCTION PtInRgn (pt: Point; rgn: RgnHandle): BOOLEAN; INLINE $A8E8; FUNCTION RectInRgn (r: Rect; rgn: RgnHandle): BOOLEAN; INLINE $A8E9; { Graphical Operations on Regions } PROCEDURE FrameRgn (rgn: RgnHandle); INLINE $A8D2; PROCEDURE PaintRgn (rgn: RgnHandle); INLINE $A8D3; PROCEDURE EraseRgn (rgn: RgnHandle); INLINE $A8D4; PROCEDURE InvertRgn (rgn: RgnHandle); INLINE $A8D5; PROCEDURE FillRgn (rgn: RgnHandle; pat: Pattern); INLINE $A8D6; { Graphical Operations on BitMaps } PROCEDURE ScrollRect(dstRect: Rect; dh,dv: INTEGER; updateRgn: rgnHandle); INLINE $A8EF; PROCEDURE CopyBits (srcBits,dstBits: BitMap; 5srcRect,dstRect: Rect; 5mode: INTEGER; 5maskRgn: RgnHandle); INLINE $A8EC; { Picture Routines } FUNCTION OpenPicture(picFrame: Rect): PicHandle; INLINE $A8F3; PROCEDURE ClosePicture; INLINE $A8F4; PROCEDURE DrawPicture(myPicture: PicHandle; dstRect: Rect); INLINE $A8F6; PROCEDURE PicComment(kind,dataSize: INTEGER; dataHandle: Handle); INLINE $A8F2; PROCEDURE KillPicture(myPicture: PicHandle); INLINE $A8F5; { The Bottleneck Interface: } PROCEDURE SetStdProcs(VAR procs: QDProcs); INLINE $A8EA; PROCEDURE StdText (count: INTEGER; textAddr: Ptr; numer,denom: Point); INLINE $A882; PROCEDURE StdLine (newPt: Point); INLINE $A890; PROCEDURE StdRect (verb: GrafVerb; r: Rect); INLINE $A8A0; PROCEDURE StdRRect (verb: GrafVerb; r: Rect; ovWd,ovHt: INTEGER); INLINE $A8AF; PROCEDURE StdOval (verb: GrafVerb; r: Rect); INLINE $A8B6; PROCEDURE StdArc (verb: GrafVerb; r: Rect; startAngle,arcAngle: INTEGER); INLINE $A8BD; PROCEDURE StdPoly (verb: GrafVerb; poly: PolyHandle); INLINE $A8C5; PROCEDURE StdRgn (verb: GrafVerb; rgn: RgnHandle); INLINE $A8D1; PROCEDURE StdBits (VAR srcBits: BitMap; VAR srcRect,dstRect: Rect; 6mode: INTEGER; maskRgn: RgnHandle); INLINE $A8EB; PROCEDURE StdComment (kind,dataSize: INTEGER; dataHandle: Handle); INLINE $A8F1; FUNCTION StdTxMeas (count: INTEGER; textAddr: Ptr; 6VAR numer,denom: Point; VAR info: FontInfo): INTEGER; INLINE $A8ED; PROCEDURE StdGetPic (dataPtr: Ptr; byteCount: INTEGER); INLINE $A8EE; PROCEDURE StdPutPic (dataPtr: Ptr; byteCount: INTEGER); INLINE $A8F0; { Misc Utility Routines } FUNCTION GetPixel (h,v: INTEGER): BOOLEAN; INLINE $A865; FUNCTION Random: INTEGER; INLINE $A861; PROCEDURE StuffHex (thingptr: Ptr; s:Str255); INLINE $A866; PROCEDURE ForeColor (color: LongInt); INLINE $A862; PROCEDURE BackColor (color: LongInt); INLINE $A863; PROCEDURE ColorBit (whichBit: INTEGER); INLINE $A864; IMPLEMENTATION {$I intrfc/QuickDraw2.text } W^¢†£ª56P÷ÍæH r÷ð™àðšªð™Ü^�..÷œYßO { QuickDraw2.text: Implementation part of QuickDraw } {$S Graf } TYPE FMOutPtr = ^FMOutRec; %FMOutrec = PACKED RECORD 2errNum: INTEGER; { used only for GrafError } 2fontHandle: QDHandle; { handle to font } 2bold: 0..255; { how much to smear horiz } 2italic: 0..255; { how much to shear } 2ulOffset: 0..255; { pixels below baseline } 2ulShadow: 0..255; { how big is the halo } 2ulThick: 0..255; { how thick is the underline } 2shadow: 0..255; { 0,1,2,or 3 only } 2extra: -128..127; { extra white dots each char } 2ascent: 0..255; { ascent measure for font } 2descent: 0..255; { descent measure for font } 2widMax: 0..255; { width of widest char } 2leading: -128..127; { leading between lines } 2unused: 0..255; 2numer: Point; { use this modified scale to } 2denom: Point; { draw or measure text with } 0END; VAR wideOpen: RgnHandle; { a dummy rectangular region, read-only } $wideMaster: RgnPtr; $wideData: Region; $rgnBuf: QDHandle; { point saving buffer for OpenRgn } $rgnIndex: INTEGER; { current bytes used in rgnBuf } $rgnMax: INTEGER; { max bytes allocated so far to rgnBuf } $playPic: PicHandle; { used by StdGetPic } $playIndex: INTEGER; { used by StdGetPic } $thePoly: PolyHandle; { the current polygon being defined } $polyMax: INTEGER; { max bytes allocated so far to thePoly } $patAlign: Point; { to align pattern during DrawPicture } $fontAdj: LongInt; { Fixed Point to adjust for font subst. } $fontPtr: FMOutPtr; { the last font used, used by DrawText } $fontData: FMOutRec; { grafPort routines } { It seems you have to have at least one procedure or function defined in the "implementation section...} Procedure InitGraf; EXTERNAL; END. { of UNIT }  A O¤9!§5ÿÿP÷Î:H r÷ð™àðšªð™Ü^¹Í××ÿ”—ñ{$C Copyright Apple Computer, 1982 } {MacIntosh version.} UNIT Sane; $INTERFACE (CONST ,SIGDIGLEN = 20; { Maximum length of SigDig. } ,DECSTRLEN = 80; { Maximum length of DecStr. } (TYPE ,{----------------------------------------------------------------- ,** Numeric types. ,-----------------------------------------------------------------} 0Single = array [0..1] of integer; 0Double = array [0..3] of integer; 0Comp = array [0..3] of integer; 0Extended = array [0..4] of integer; ,{----------------------------------------------------------------- ,** Decimal string type and intermediate decimal type, ,** representing the value: ,** (-1)^sgn * 10^exp * dig ,-----------------------------------------------------------------} 0SigDig = string [SIGDIGLEN]; 0DecStr = string [DECSTRLEN]; 0Decimal = record ?sgn : 0..1; { Sign (0 for pos, 1 for neg). } ?exp : integer; { Exponent. } ?sig : SigDig { String of significant digits. } ;end; ,{----------------------------------------------------------------- ,** Modes, flags, and selections. ,** NOTE: the values of the style element of the DecForm record ,** have different names from the PCS version to avoid name ,** conflicts. ,-----------------------------------------------------------------} 0Environ = integer; 0RoundDir = (TONEAREST, UPWARD, DOWNWARD, TOWARDZERO); 0RelOp = (GT, LT, GL, EQ, GE, LE, GEL, UNORD); <{ > < <> = >= <= <=> } 0Exception = (INVALID, UNDERFLOW, OVERFLOW, DIVBYZERO, eINEXACT); 0NumClass = (SNAN, QNAN, INFINITE, ZERO, NORMAL, DENORMAL); 0DecForm = record @style : (FloatDecimal, FixedDecimal); @digits : integer 0 if active} ,workBreak: LONGINT; {Word break routine} ,clikLoop: LONGINT; {Click loop routine} ,clickTime: LONGINT; {Time of first click} ,clickLoc: INTEGER; {Char. location of click} ,caretTime: LONGINT; {Time for next caret blink} ,caretState: INTEGER; {On/active booleans} ,just: INTEGER; {fill style} ,TELength: INTEGER; {Length of text below} ,hText: Handle; {Handle to actual text} ,recalBack: INTEGER; {<>0 if recal in background} ,recalLines: INTEGER; {Line being recal'ed} ,clikStuff: INTEGER; {click stuff (internal)} ,crOnly: INTEGER; {Set to -1 if CR line breaks only} ,txFont: INTEGER; {Text Font} ,txFace: Style; {Text Face} ,txMode: INTEGER; {Text Mode} ,txSize: INTEGER; {Text Size} ,inPort: GrafPtr; {Grafport} ,highHook: PTR; {Highlighting hook} ,caretHook: PTR; {Highlighting hook} ,nLines: INTEGER; {Number of lines} ,lineStarts: ARRAY [0..16000] OF INTEGER; {Actual line starts themselves} *END; {RECORD} "TEPtr = ^TERec; "TEHandle = ^TEPtr; "CharsHandle = ^CharsPtr; "CharsPtr = ^Chars; "Chars = PACKED ARRAY[0..32000] OF CHAR; "{for Resource Manager} "ResType=PACKED ARRAY[1..4] OF CHAR; "{for Control Manager} "ControlPtr = ^ControlRecord; "ControlHandle = ^ControlPtr; "ControlRecord = %RECORD 'nextControl: ControlHandle; 'contrlOwner: WindowPtr; 'contrlRect: Rect; 'contrlVis: BOOLEAN; 'contrlHilite: BOOLEAN; 'contrlValue: INTEGER; 'contrlMin: INTEGER; 'contrlMax: INTEGER; 'contrlDefProc: Handle; 'contrlData: Handle; 'contrlAction: ProcPtr; 'contrlrfCon: LONGINT; 'contrlTitle: Str255; %END; {ControlRecord} "{for Dialog Manager} "DialogPtr= WindowPtr; "DialogPeek= ^DialogRecord; "DialogRecord= Record 2window: WindowRecord; 2Items: Handle; 2textH: TEHandle; 2EditField: Integer; 2EditOpen: INTEGER; 2ADefItem: INTEGER; 0End; "DialogTHndl= ^DialogTPtr; "DialogTPtr= ^DialogTemplate; "DialogTemplate=RECORD 3boundsRect: Rect; 3procID: INTEGER; 3visible: BOOLEAN; 3filler1: BOOLEAN; 3goAwayFlag: BOOLEAN; 3filler2: BOOLEAN; 3refCon: LongInt; 3ItemsID: INTEGER; 3title: Str255; 1END; "StageList= PACKED ARRAY [1..4] OF RECORD IboldItem: 0..1; IboxDrawn: BOOLEAN; Isound: 0..3; GEND; "AlertTHndl= ^AlertTPtr; "AlertTPtr= ^AlertTemplate; "AlertTemplate=RECORD 2boundsRect: Rect; 2itemsID: INTEGER; 2stages: StageList; 0END; "{for Menu Manager} "MenuPtr = ^MenuInfo; "MenuHandle = ^MenuPtr; "MenuInfo = RECORD /menuId: INTEGER; /menuWidth: INTEGER; /menuHeight: INTEGER; /menuProc: Handle; /enableFlags: PACKED ARRAY[0..maxItem] OF BOOLEAN; /menuData: Str255; -END; "{for Scrap Manager} "ScrapStuff = RECORD &scrapSize: LONGINT; &scrapHandle: Handle; &scrapCount: INTEGER; &scrapState: INTEGER; &scrapName: StringPtr; "END; "pScrapStuff = ^ScrapStuff; {General Utilities} FUNCTION BitAnd (long1,long2: LongInt): LongInt; INLINE $A858; FUNCTION BitOr (long1,long2: LongInt): LongInt; INLINE $A85B; FUNCTION BitXor (long1,long2: LongInt): LongInt; INLINE $A859; FUNCTION BitNot (long: LongInt): LongInt; INLINE $A85A; FUNCTION BitShift (long: LongInt; count: INTEGER): LongInt; INLINE $A85C; FUNCTION BitTst (bytePtr: Ptr; bitNum: LongInt): BOOLEAN; INLINE $A85D; PROCEDURE BitSet (bytePtr: Ptr; bitNum: LongInt); INLINE $A85E; PROCEDURE BitClr (bytePtr: Ptr; bitNum: LongInt); INLINE $A85F; PROCEDURE LongMul (a,b: LongInt; VAR dst: Int64Bit); INLINE $A867; FUNCTION FixMul (a,b: Fixed): Fixed; INLINE $A868; FUNCTION FixRatio (numer,denom: INTEGER): Fixed; INLINE $A869; FUNCTION HiWord (x: LongInt): INTEGER; INLINE $A86A; FUNCTION LoWord (x: LongInt): INTEGER; INLINE $A86B; FUNCTION FixRound (x: Fixed): INTEGER; INLINE $A86C; PROCEDURE PackBits (VAR srcPtr,dstPtr: Ptr; srcBytes: INTEGER); INLINE $A8CF; PROCEDURE UnPackBits(VAR srcPtr,dstPtr: Ptr; dstBytes: INTEGER);INLINE $A8D0; FUNCTION SlopeFromAngle(angle: INTEGER): Fixed; INLINE $A8BC; FUNCTION AngleFromSlope(slope: Fixed): INTEGER; INLINE $A8C4; FUNCTION DeltaPoint(ptA,ptB: Point): LongInt; INLINE $A84F; FUNCTION NewString(theString:Str255): StringHandle; INLINE $A906; PROCEDURE SetString(theString:StringHandle; strNew: Str255); INLINE $A907; FUNCTION GetString(stringID: INTEGER): StringHandle; INLINE $A9BA; PROCEDURE GetIndString(VAR theString: str255; strListID: INTEGER; 7index: INTEGER); FUNCTION Munger(h: Handle; offset: LongInt; ptr1: Ptr; len1: LongInt; 0ptr2: Ptr; len2: LongInt): LongInt; INLINE $A9E0; FUNCTION GetIcon(iconID: INTEGER): Handle; INLINE $A9BB; PROCEDURE PlotIcon(theRect: Rect; theIcon: Handle); INLINE $A94B; FUNCTION GetCursor (cursorID: INTEGER): CursHandle; INLINE $A9B9; FUNCTION GetPattern(patID: INTEGER): PatHandle; INLINE $A9B8; FUNCTION GetPicture(picID: INTEGER): PicHandle; INLINE $A9BC; PROCEDURE ShieldCursor(shieldRect: Rect; offsetPt: Point); INLINE $A855; {for Font Manager} PROCEDURE InitFonts; INLINE $A8FE; PROCEDURE GetFontName(familyID: INTEGER; VAR theName: Str255); INLINE $A8FF; PROCEDURE GetFNum(theName: Str255; VAR familyID: INTEGER); INLINE $A900; PROCEDURE SetFontLock(lockFlag: BOOLEAN); INLINE $A903; FUNCTION FMSwapFont(inRec: FMInput): FMOutPtr; INLINE $A901; FUNCTION RealFont(famID: INTEGER; size: INTEGER): BOOLEAN; INLINE $A902; {for Event Manager} FUNCTION EventAvail(mask:INTEGER; VAR theEvent: EventRecord): BOOLEAN; `INLINE $A971; FUNCTION GetNextEvent(mask:INTEGER; VAR theEvent: EventRecord): BOOLEAN; `INLINE $A970; FUNCTION StillDown:BOOLEAN; INLINE $A973; FUNCTION WaitMouseUp:BOOLEAN; INLINE $A977; PROCEDURE GetMouse (VAR pt: Point); INLINE $A972; FUNCTION TickCount:LongInt; INLINE $A975; FUNCTION Button: BOOLEAN; INLINE $A974; PROCEDURE GetKeys(VAR k: keyMap); INLINE $A976; FUNCTION DoubleTime: LongInt; FUNCTION CaretTime: LongInt; {for Window Manager} PROCEDURE ClipAbove(window: WindowPeek); INLINE $A90B; PROCEDURE PaintOne(window: WindowPeek; clobbered: RgnHandle); INLINE $A90C; PROCEDURE PaintBehind(startWindow: WindowPeek; clobbered: RgnHandle); `INLINE $A90D; PROCEDURE SaveOld(window: WindowPeek); INLINE $A90E; PROCEDURE DrawNew(window: WindowPeek; fUpdate: BOOLEAN); INLINE $A90F; PROCEDURE CalcVis(window: WindowPeek); INLINE $A909; PROCEDURE CalcVisBehind(startWindow: WindowPeek; clobbered: RgnHandle); `INLINE $A90A; PROCEDURE ShowHide(window: WindowPtr; showFlag: BOOLEAN); INLINE $A908; FUNCTION CheckUpdate(VAR theEvent: EventRecord): BOOLEAN; INLINE $A911; PROCEDURE GetWMgrPort(VAR wPort: GrafPtr); INLINE $A910; PROCEDURE InitWindows; INLINE $A912; FUNCTION NewWindow(wStorage: Ptr; 4boundsRect: Rect; 4title: Str255; 4visible: BOOLEAN; 4theProc: INTEGER; 4behind: WindowPtr; 4goAwayFlag: BOOLEAN; 4refCon: LongInt): WindowPtr; INLINE $A913; PROCEDURE DisposeWindow (theWindow: WindowPtr); INLINE $A914; PROCEDURE CloseWindow (theWindow: WindowPtr); INLINE $A92D; PROCEDURE MoveWindow (theWindow: WindowPtr; h,v: INTEGER; BringToFront:BOOLEAN); `INLINE $A91B; PROCEDURE SizeWindow (theWindow: WindowPtr; width,height: INTEGER; fUpdate: BOOLEAN); `INLINE $A91D; FUNCTION GrowWindow (theWindow: windowPtr; startPt: Point; bBox: Rect): LongInt; `INLINE $A92B; PROCEDURE DragWindow (theWindow: WindowPtr; startPt: Point; boundsRect: Rect); `INLINE $A925; PROCEDURE ShowWindow (theWindow: WindowPtr); INLINE $A915; PROCEDURE HideWindow (theWindow: WindowPtr); INLINE $A916; PROCEDURE SetWTitle (theWindow: WindowPtr; title: Str255); INLINE $A91A; PROCEDURE GetWTitle (theWindow: WindowPtr; VAR title: Str255); INLINE $A919; PROCEDURE HiliteWindow (theWindow: WindowPtr; fHiLite: BOOLEAN); INLINE $A91C; PROCEDURE BeginUpdate (theWindow: WindowPtr); INLINE $A922; PROCEDURE EndUpdate (theWindow: WindowPtr); INLINE $A923; PROCEDURE SetWRefCon (theWindow: WindowPtr; data: LongInt); INLINE $A918; FUNCTION GetWRefCon (theWindow: WindowPtr): LongInt; INLINE $A917; PROCEDURE SetWindowPic (theWindow: WindowPtr; thePic: PicHandle); INLINE $A92E; FUNCTION GetWindowPic (theWindow: WindowPtr): PicHandle; INLINE $A92F; PROCEDURE BringToFront (theWindow: WindowPtr); INLINE $A920; PROCEDURE SendBehind (theWindow,behind: WindowPtr); INLINE $A921; FUNCTION FrontWindow: WindowPtr; INLINE $A924; PROCEDURE SelectWindow (theWindow: WindowPtr); INLINE $A91F; FUNCTION TrackGoAway (theWindow: WindowPtr; thePt: Point): BOOLEAN; `INLINE $A91E; PROCEDURE DrawGrowIcon (theWindow: WindowPtr); INLINE $A904; PROCEDURE ValidRect (goodRect: Rect); INLINE $A92A; PROCEDURE ValidRgn (goodRgn: RgnHandle); INLINE $A929; PROCEDURE InvalRect (badRect: Rect); INLINE $A928; PROCEDURE InvalRgn (badRgn: RgnHandle); INLINE $A927; FUNCTION FindWindow (thePoint: Point; :VAR theWindow: WindowPtr): INTEGER; INLINE $A92C; FUNCTION GetNewWindow (windowID: INTEGER; wStorage: Ptr; >behind: WindowPtr): WindowPtr; INLINE $A9BD; FUNCTION PinRect(theRect: Rect; thePt: Point): LongInt; INLINE $A94E; FUNCTION DragGrayRgn(theRgn: RgnHandle; startPt: Point; boundsRect, 6slopRect: Rect;axis: INTEGER; 6actionProc: ProcPtr): LongInt; INLINE $A926; {For TextEdit} PROCEDURE TEActivate( h: TEHandle ); INLINE $A9D8; PROCEDURE TECalText( h: TEHandle ); INLINE $A9D0; PROCEDURE TEClick( pt: Point; extend: BOOLEAN; h: TEHandle ); INLINE $A9D4; PROCEDURE TECopy( h: TEHandle ); INLINE $A9D5; PROCEDURE TECut( h: TEHandle ); INLINE $A9D6; PROCEDURE TEDeActivate( h: TEHandle ); INLINE $A9D9; PROCEDURE TEDelete( h: TEHandle ); INLINE $A9D7; PROCEDURE TEDispose( h: TEHandle ); INLINE $A9CD; PROCEDURE TEIdle( h: TEHandle ); INLINE $A9DA; PROCEDURE TEInit; INLINE $A9CC; PROCEDURE TEKey( key: CHAR; h: TEHandle ); INLINE $A9DC; FUNCTION TENew( dest, view: Rect ): TEHandle; INLINE $A9D2; PROCEDURE TEPaste( h: TEHandle ); INLINE $A9DB; PROCEDURE TEScroll( dh, dv: INTEGER; h: TEHandle ); INLINE $A9DD; PROCEDURE TESetSelect( selStart, selEnd: LONGINT; h: TEHandle ); INLINE $A9D1; PROCEDURE TESetText( inText: Ptr; textLength: LONGINT; h: TEHandle ); INLINE $A9CF; PROCEDURE TEInsert( inText: Ptr; textLength: LONGINT; h: TEHandle ); INLINE $A9DE; PROCEDURE TEUpdate( rUpdate: Rect; h: TEHandle ); INLINE $A9D3; PROCEDURE TESetJust( just: INTEGER; h: TEHandle ); INLINE $A9DF; FUNCTION TEGetText( h: TEHandle ): CharsHandle; INLINE $A9CB; FUNCTION TEScrapHandle: Handle; FUNCTION TEGetScrapLen: LongInt; PROCEDURE TESetScrapLen(length: LongInt); {Box drawing utility} PROCEDURE TextBox( inText: Ptr; textLength: LONGINT; r: Rect; style: INTEGER ); `INLINE $A9CE; {for Resource Manager} FUNCTION InitResources: INTEGER; INLINE $A995; PROCEDURE RsrcZoneInit; INLINE $A996; PROCEDURE CreateResFile(fileName: Str255); INLINE $A9B1; FUNCTION OpenResFile(fileName: Str255): INTEGER; INLINE $A997; PROCEDURE UseResFile(refNum: INTEGER); INLINE $A998; FUNCTION GetResFileAttrs(refNum: INTEGER): INTEGER; INLINE $A9F6; PROCEDURE SetResFileAttrs(refNum: INTEGER; attrs: INTEGER); INLINE $A9F7; PROCEDURE UpdateResFile(refNum: INTEGER); INLINE $A999; PROCEDURE CloseResFile(refNum: INTEGER); INLINE $A99A; PROCEDURE SetResPurge(install: Boolean); INLINE $A993; PROCEDURE SetResLoad(AutoLoad: Boolean); INLINE $A99B; FUNCTION CountResources(theType: ResType): INTEGER; INLINE $A99C; FUNCTION GetIndResource(theType: ResType; index: INTEGER): Handle; `INLINE $A99D; FUNCTION CountTypes: INTEGER; INLINE $A99E; PROCEDURE GetIndType(VAR theType: ResType; index: INTEGER); INLINE $A99F; FUNCTION UniqueID(theType: ResType): INTEGER; INLINE $A9C1; FUNCTION GetResource(theType: ResType; ID: INTEGER): Handle; INLINE $A9A0; FUNCTION GetNamedResource(theType: ResType; name: Str255): Handle; `INLINE $A9A1; PROCEDURE LoadResource(theResource: Handle); INLINE $A9A2; PROCEDURE ReleaseResource(theResource: Handle); INLINE $A9A3; PROCEDURE DetachResource(theResource: Handle); INLINE $A992; PROCEDURE ChangedResource(theResource: Handle); INLINE $A9AA; PROCEDURE WriteResource(theResource: Handle); INLINE $A9B0; FUNCTION HomeResFile(theResource: Handle): INTEGER; INLINE $A9A4; FUNCTION CurResFile: INTEGER; INLINE $A994; FUNCTION GetResAttrs(theResource: Handle): INTEGER; INLINE $A9A6; PROCEDURE SetResAttrs(theResource: Handle; attrs: INTEGER); INLINE $A9A7; PROCEDURE GetResInfo(theResource: Handle; 5VAR theID: INTEGER; 5VAR theType: ResType; 5VAR name: Str255); INLINE $A9A8; PROCEDURE SetResInfo(theResource: Handle; 5theID: INTEGER; 5name: Str255); INLINE $A9A9; PROCEDURE AddResource(theResource: Handle; 6theType: ResType; 6theID: INTEGER; 6name: Str255); INLINE $A9AB; PROCEDURE AddReference(theResource: Handle; 7theID: INTEGER; 7name: Str255); INLINE $A9AC; PROCEDURE RmveResource(theResource: Handle); INLINE $A9AD; PROCEDURE RmveReference(theResource: Handle); INLINE $A9AE; FUNCTION SizeResource(theResource: Handle): LongInt; INLINE $A9A5; FUNCTION ResError: INTEGER; INLINE $A9AF; {for Control Manager} FUNCTION NewControl(curWindow: windowPtr; 4boundsRect: Rect; 4title: Str255; 4visible: BOOLEAN; 4value: INTEGER; 4min: INTEGER; 4max: INTEGER; 4contrlProc: INTEGER; 4refCon: LongInt): ControlHandle; INLINE $A954; PROCEDURE DisposeControl (theControl: ControlHandle); INLINE $A955; PROCEDURE KillControls (theWindow: WindowPtr); INLINE $A956; PROCEDURE MoveControl (theControl: ControlHandle; h,v: INTEGER); INLINE $A959; PROCEDURE SizeControl (theControl: ControlHandle; w,h: INTEGER); INLINE $A95C; PROCEDURE DragControl (theControl: ControlHandle; startPt: Point; :bounds: Rect; slopRect: Rect; axis:INTEGER); INLINE $A967; PROCEDURE ShowControl (theControl: ControlHandle); INLINE $A957; PROCEDURE HideControl (theControl: ControlHandle); INLINE $A958; PROCEDURE SetCTitle (theControl: ControlHandle; title: Str255); INLINE $A95F; PROCEDURE GetCTitle (theControl: ControlHandle; VAR title: Str255); INLINE $A95E; PROCEDURE HiliteControl (theControl: ControlHandle; hiliteState: INTEGER); `INLINE $A95D; PROCEDURE SetCRefCon (theControl: ControlHandle; data: LongInt); INLINE $A95B; FUNCTION GetCRefCon (theControl: ControlHandle): LongInt; INLINE $A95A; PROCEDURE SetCtlValue (theControl: ControlHandle; theValue: INTEGER); INLINE $A963; FUNCTION GetCtlValue (theControl: ControlHandle): INTEGER; INLINE $A960; FUNCTION GetCtlMin (theControl: ControlHandle): INTEGER; INLINE $A961; FUNCTION GetCtlMax (theControl: ControlHandle): INTEGER; INLINE $A962; PROCEDURE SetCtlMin (theControl: ControlHandle; theValue: INTEGER); INLINE $A964; PROCEDURE SetCtlMax (theControl: ControlHandle; theValue: INTEGER); INLINE $A965; FUNCTION GetCtlAction (theControl: ControlHandle): ProcPtr; INLINE $A96A; PROCEDURE SetCtlAction (theControl: ControlHandle; newProc: ProcPtr); INLINE $A96B; FUNCTION TestControl (theControl: ControlHandle; thePt: Point): INTEGER; `INLINE $A966; FUNCTION TrackControl (theControl:ControlHandle; thePt: Point; Cîÿì Ù Ù0‘AìHCîÿâ Ù Ù0‘Hl4HlRNºBgHnÿ¼HlRHnÿÚHnÿÞNºg ?.ÿà?.ÿÞ¨“(_N^ _Þü NÐÍOVETO3D�¼€LINETO3DGraf ‚LINETO3DLINETO3D‰CLIP3D CLIP3D –‰TRANSFORTRANSFOR€‡GRAF3D 8…ÎNVÿ¼/ nCîÿöJ"Ø"Ø2� n CîÿìJ"Ø"Ø2� nCîÿâJ"Ø"Ø2�(mÿüAîÿÄCìRp ÙS@nú0‘Aì4Cîÿö Ù Ù0‘Aì>Cîÿì Ù Ù0‘AìHCîÿâ Ù Ù0‘Hl4HlRNºBgHnÿÄHlRHnÿ¼HnÿÀNºg?.ÿ¾?.ÿ¼¨“?.ÿÂ?.ÿÀ¨‘(_N^ _Þü NÐÌINETO3D�Æ€MOVE3D Graf ‚MOVE3D MOVE3D ‰MOVETO3DMOVETO3Dl‰ADDX ADDX \PD‡GRAF3D 8…ŒNVÿâ/ nCîÿöJ"Ø"Ø2� n CîÿìJ"Ø"Ø2� nCîÿâJ"Ø"Ø2�(mÿüHl4HnÿöNºHl>HnÿìNºHlHHnÿâNºHnÿöHnÿìHnÿâNº(_N^ _Þü NÐÍOVE3D �„€LINE3D Graf ‚LINE3D LINE3D ‰LINETO3DLINETO3Dl‰ADDX ADDX \PD‡GRAF3D 8…ŒNVÿâ/ nCîÿöJ"Ø"Ø2� n CîÿìJ"Ø"Ø2� nCîÿâJ"Ø"Ø2�(mÿüHl4HnÿöNºHl>HnÿìNºHlHHnÿâNºHnÿöHnÿìHnÿâNº(_N^ _Þü NÐÌINE3D �„€MOVETO2DGraf ‚MOVETO2DMOVETO2D‰MOVETO3DMOVETO3D6‡GRAF3D .…RNVÿì n CîÿöJ"Ø"Ø2� nCîÿìJ"Ø"Ø2�HnÿöHnÿì mÿüHhHNºN^ _PONÐÍOVETO2D�J€MOVE2D Graf ‚MOVE2D MOVE2D ‰MOVE3D MOVE3D <‰I2X I2X ,…XNVÿâ n CîÿöJ"Ø"Ø2� nCîÿìJ"Ø"Ø2�BgHnÿâNºHnÿöHnÿìHnÿâNºN^ _PONÐÍOVE2D �P€LINETO2DGraf ‚LINETO2DLINETO2D‰LINETO3DLINETO3D6‡GRAF3D .…RNVÿì n CîÿöJ"Ø"Ø2� nCîÿìJ"Ø"Ø2�HnÿöHnÿì mÿüHhHNºN^ _PONÐÌINETO2D�J€LINE2D Graf ‚LINE2D LINE2D ‰LINE3D LINE3D <‰I2X I2X ,…XNVÿâ n CîÿöJ"Ø"Ø2� nCîÿìJ"Ø"Ø2�BgHnÿâNºHnÿöHnÿìHnÿâNºN^ _PONÐÌINE2D �P€VIEWLOOKGraf ‚$1000000VIEWLOOK‰ADDX ADDX œ‰DIVX DIVX „J‰SUBX SUBX ²l2‰$I2X I2X ¦�x`V>&‡GRAF3D …ÎNVÿâHç(mÿüGì?+HlŽNº?+HnÿöNºHnÿöHlŽNº?<HnÿâNºHnÿâHlŽNº?+Hl˜Nº?HnÿöNºHnÿöHl˜Nº?<ÿþHnÿìNºHnÿìHl˜Nº?+Hl¢NºHlŽHl¢Nº?Hl¬NºHl˜Hl¬NºLßN^NuÖIEWLOOK�Æ€VIEWPORTGraf ‚VIEWPORTVIEWPORT‰$1000000VIEWLOOK"‡GRAF3D …<NVÿø nCîÿøJ"Ø"Ø mÿüXˆCîÿø Ù ÙNºN^.ŸNuÖIEWPORT�4€LOOKAT Graf ‚LOOKAT LOOKAT ‰$1000000VIEWLOOKè‰DIVX DIVX 䲉I2X I2X ئ‰ADDX ADDX Ìš‡GRAF3D H…NVÿº/ nCîÿöJ"Ø"Ø2� nCîÿìJ"Ø"Ø2� n CîÿâJ"Ø"Ø2� nCîÿØJ"Ø"Ø2�(mÿüAì Cîÿö Ù Ù0‘Aì Cîÿâ Ù Ù0‘Aì*CîÿØ Ù Ù0‘AìCîÿì Ù Ù0‘AìpCîÿö Ù Ù0‘HnÿâHlpNº?<HnÿÎNºHnÿÎHlpNºAìzCîÿì Ù Ù0‘HnÿØHlzNº?<HnÿÎNºHnÿÎHlzNºNº(_N^ _ÞüNÐÌOOKAT �€VIEWANGLGraf ‚VIEWANGLVIEWANGL‰SUBX SUBX äʉCOSX COSX ¤‰SINX SINX މDIVX DIVX .ü°x‰MULX MULX "ðl‰CMPX CMPX B‰I2X I2X 0‰STR2X STR2X `$‡GRAF3D …XNVÿØ/ nCîÿöJ"Ø"Ø2�(mÿüHz0HnÿØNº?<HnÿâNºBgHnÿö<HnÿØNºgAîÿöCîÿØ Ù Ù0‘HzêHnÿìNºHnÿâHnÿìNºHnÿìHnÿöNºAîÿìCîÿö Ù Ù0‘HnÿìNºAì¶Cîÿö Ù Ù0‘Hl¶NºHnÿìHl¶NºAîÿìCì Ù Ù0‘Hl*HnÿìNºAìÀCì Ù Ù0‘Hl HlÀNºHl¶HlÀNºHnÿìHlÀNºAì„Cì Ù Ù0‘Hl Hl„NºHl¶Hl„NºHnÿâHl„Nº(_N^.ŸNuÖIEWANGL57.295780.1�P€TRANSFORGraf ‚TRANSFORTRANSFOR‰&ADDX ADDX Œ€Z訞z‰&MULX MULX tN4Ü”pZ‡GRAF3D @"…¬NVÿØHç n CîÿâJp"ØS@nú2�&n mÿü(ÊgAîÿâ"Kp"ØS@nú2�`R(mÿüAîÿØCîÿâ Ù Ù0‘HlÌHnÿØNºAîÿì"K"Ø"Ø2�Hlô/ NºHnÿØ/ NºAîÿØCîÿö Ù Ù0‘HlHnÿØNºHnÿØ/ NºHlD/ NºAîÿØCîÿâ Ù Ù0‘HlÖHnÿØNºAë Cîÿì Ù Ù0‘HlþHk NºHnÿØHk NºAîÿØCîÿö Ù Ù0‘Hl&HnÿØNºHnÿØHk NºHlNHk NºAîÿØCîÿâ Ù Ù0‘HlàHnÿØNºAëCîÿì Ù Ù0‘HlHkNºHnÿØHkNºAîÿØCîÿö Ù Ù0‘Hl0HnÿØNºHnÿØHkNºHlXHkNºLßN^ _PONÐÔRANSFOR�¤€CODE Graf ‚$2000000CODE ‰CMPX CMPX –z`F‰NEGX NEGX 4…ÀNVÿØ/ nCîÿâJp"ØS@nú2�(n BAîÿØCîÿö Ù Ù0‘HnÿØNºBgHnÿâ<HnÿØNºg¼`BgHnÿâBgHnÿöNºg¼BgHnÿì<HnÿØNºgp€€`BgHnÿìBgHnÿöNºgp€€(_N^ _Þü NÐÃODE �¸€CLIP3D Graf ‚CLIP3D CLIP3D ‰X2I X2I �Hþ¶‰RINTX RINTX ‚8ð¦‰$DIVX DIVX n$Ü’˜”˜”‰0ADDX ADDX z0èžüÊøÆˆ ÊÆˆ‰$2000000CODE X6ØÊ‰NEGX NEGX ܼx‰4MULX MULX bІð¾ìºþ¾º¨�dL‰LSUBX SUBX 䲌rfLà®nbHò²ŒrfLö®nbH´œ„pX@‡GRAF3D f4…°NVÿ‚/ nCîÿâJp"ØS@nú2� nCîÿÄJp"ØS@nú2�B.(mÿüHlpHnÿâNºHl¶HnÿâNºHlzHnÿìNºHlÀHnÿìNºHl„HnÿöNºHnÿöNºHlpHnÿÄNºHl¶HnÿÄNºHlzHnÿÎNºHlÀHnÿÎNºHl„HnÿØNºHnÿØNºHnÿâHnÿÂ/NºHnÿÄHnÿÃ/Nº.ÿÀ.ÿÂr°gv.ÿÃÀ.ÿÂr°fšnÿÂÿÁ.ÿÁr°fnÿÃÿÁpk°|nAîÿÂ2æIDA0ÿ <fæAîÿŽCîÿâ Ù Ù0‘HnÿÄHnÿŽNºAîÿ˜CîÿØ Ù Ù0‘HnÿöHnÿ˜NºHnÿ˜HnÿŽNºAîÿ˜Cîÿö Ù Ù0‘HnÿâHnÿ˜NºHnÿŽHnÿ˜NºAîÿ¶CîÿØ Ù Ù0‘HnÿöHnÿ¶NºHnÿ˜Hnÿ¶NºHnÿöHnÿ¶NºAîÿ¢Cîÿ¶ Ù Ù0‘Hnÿ¢NºAîÿ¬CîÿÎ Ù Ù0‘HnÿìHnÿ¬NºHnÿ˜Hnÿ¬NºHnÿìHnÿ¬Nº`úpk°|nAîÿÂ2æIDA0ÿ <fÞAîÿŽCîÿÄ Ù Ù0‘HnÿâHnÿŽNºAîÿ˜CîÿØ Ù Ù0‘HnÿöHnÿ˜NºHnÿ˜HnÿŽNºAîÿ˜Cîÿö Ù Ù0‘HnÿâHnÿ˜NºHnÿŽHnÿ˜NºAîÿ¶CîÿØ Ù Ù0‘HnÿöHnÿ¶NºHnÿ˜Hnÿ¶NºHnÿöHnÿ¶NºAîÿ¢Cîÿ¶ Ù Ù0‘Aîÿ¬CîÿÎ Ù Ù0‘HnÿìHnÿ¬NºHnÿ˜Hnÿ¬NºHnÿìHnÿ¬Nº`þpk°|nAîÿÂ2æIDA0ÿ <fæAîÿŽCîÿì Ù Ù0‘HnÿÎHnÿŽNºAîÿ˜CîÿØ Ù Ù0‘HnÿöHnÿ˜NºHnÿ˜HnÿŽNºAîÿ˜Cîÿö Ù Ù0‘HnÿìHnÿ˜NºHnÿŽHnÿ˜NºAîÿ¶CîÿØ Ù Ù0‘HnÿöHnÿ¶NºHnÿ˜Hnÿ¶NºHnÿöHnÿ¶NºAîÿ¢CîÿÄ Ù Ù0‘HnÿâHnÿ¢NºHnÿ˜Hnÿ¢NºHnÿâHnÿ¢NºAîÿ¬Cîÿ¶ Ù Ù0‘Hnÿ¬Nº`úpk°|nAîÿÂ2æIDA0ÿ <fÚAîÿŽCîÿÎ Ù Ù0‘HnÿìHnÿŽNºAîÿ˜CîÿØ Ù Ù0‘HnÿöHnÿ˜NºHnÿ˜HnÿŽNºAîÿ˜Cîÿö Ù Ù0‘HnÿìHnÿ˜NºHnÿŽHnÿ˜NºAîÿ¶CîÿØ Ù Ù0‘HnÿöHnÿ¶NºHnÿ˜Hnÿ¶NºHnÿöHnÿ¶NºAîÿ¢CîÿÄ Ù Ù0‘HnÿâHnÿ¢NºHnÿ˜Hnÿ¢NºHnÿâHnÿ¢NºAîÿ¬Cîÿ¶ Ù Ù0‘.ÿÁ.ÿ°f"AîÿâCîÿ¢p ÙS@nú0‘HnÿâHnÿÂ/Nº` AîÿÄCîÿ¢p ÙS@nú0‘HnÿÄHnÿÃ/Nº`û~|(mÿü T-Hÿ‚AîÿŽCìŽ Ù Ù0‘HnÿâHnÿŽNºHnÿöHnÿŽNºHl¢HnÿŽNºHnÿŽNºHnÿŽ n HhNºAîÿŽCì˜ Ù Ù0‘HnÿìHnÿŽNºHnÿöHnÿŽNºHl¬HnÿŽNºHnÿŽNºHnÿŽ n /NºAîÿŽCìŽ Ù Ù0‘HnÿÄHnÿŽNºHnÿØHnÿŽNºHl¢HnÿŽNºHnÿŽNºHnÿŽ nHhNºAîÿŽCì˜ Ù Ù0‘HnÿÎHnÿŽNºHnÿØHnÿŽNºHl¬HnÿŽNºHnÿŽNºHnÿŽ n/Nº(_N^ _ÞüNÐÃLIP3D �¨€IDENTITYGraf ‚IDENTITYIDENTITY‰I2X I2X V"‡GRAF3D …°NVÿòHç(mÿüBG`zBF`n¼Gf6?<HnÿòNºO¼ Áü(M¼"Ãü ÐACìÌAñCîÿò Ù Ù0‘`2BgHnÿòNºO¼ Áü(M¼"Ãü ÐACìÌAñCîÿò Ù Ù0‘RF FoŒRG Go€|ÊLßÀN^NuÉDENTITY�¨€SCALE Graf ‚SCALE SCALE ‰MULX MULX �v\‡GRAF3D :…ºNVÿàHç nCîÿöJ"Ø"Ø2� n CîÿìJ"Ø"Ø2� nCîÿâJ"Ø"Ø2�(mÿüB,ÊBG`PHnÿöO¼ Áü(AìÌHpNºHnÿìO¼ Áü(AìÖHpNºHnÿâO¼ Áü(AìàHpNºRG GoªL߀N^ _Þü NÐÓCALE �²€TRANSLATGraf ‚TRANSLATTRANSLAT‰ADDX ADDX `TH‡GRAF3D 8…€NVÿâ/ nCîÿöJ"Ø"Ø2� n CîÿìJ"Ø"Ø2� nCîÿâJ"Ø"Ø2�(mÿüB,ÊHnÿöHlDNºHnÿìHlNNºHnÿâHlXNº(_N^ _Þü NÐÔRANSLAT�x€PITCH Graf ‚PITCH PITCH ‰SUBX SUBX RÒRÒ‰ADDX ADDX     ‰4MULX MULX F,úƬ”zF,úƬ”z‰COSX COSX X‰SINX SINX B‰DIVX DIVX ,‰STR2X STR2X ‡GRAF3D \…†NVÿÎ/ nCîÿöJ"Ø"Ø2�Hz\HnÿâNºHnÿâHnÿöNºAîÿÎCîÿö Ù Ù0‘HnÿÎNºAîÿØCîÿö Ù Ù0‘HnÿØNº(mÿüB,ÊAîÿìCîÿØ Ù Ù0‘HlÖHnÿìNºAîÿâCîÿÎ Ù Ù0‘HlàHnÿâNºHnÿìHnÿâNºHnÿØHlàNºAîÿìCîÿÎ Ù Ù0‘HlÖHnÿìNºHnÿìHlàNºAìÖCîÿâ Ù Ù0‘AîÿìCîÿØ Ù Ù0‘HlþHnÿìNºAîÿâCîÿÎ Ù Ù0‘HlHnÿâNºHnÿìHnÿâNºHnÿØHlNºAîÿìCîÿÎ Ù Ù0‘HlþHnÿìNºHnÿìHlNºAìþCîÿâ Ù Ù0‘AîÿìCîÿØ Ù Ù0‘Hl&HnÿìNºAîÿâCîÿÎ Ù Ù0‘Hl0HnÿâNºHnÿìHnÿâNºHnÿØHl0NºAîÿìCîÿÎ Ù Ù0‘Hl&HnÿìNºHnÿìHl0NºAì&Cîÿâ Ù Ù0‘AîÿìCîÿØ Ù Ù0‘HlNHnÿìNºAîÿâCîÿÎ Ù Ù0‘HlXHnÿâNºHnÿìHnÿâNºHnÿØHlXNºAîÿìCîÿÎ Ù Ù0‘HlNHnÿìNºHnÿìHlXNºAìNCîÿâ Ù Ù0‘(_N^.ŸNuÐITCH 57.29578�~€YAW Graf ‚YAW YAW ‰ADDX ADDX RÒRÒ‰SUBX SUBX     ‰4MULX MULX F,úƬ”zF,úƬ”z‰COSX COSX X‰SINX SINX B‰DIVX DIVX ,‰STR2X STR2X ‡GRAF3D \…†NVÿÎ/ nCîÿöJ"Ø"Ø2�Hz\HnÿâNºHnÿâHnÿöNºAîÿÎCîÿö Ù Ù0‘HnÿÎNºAîÿØCîÿö Ù Ù0‘HnÿØNº(mÿüB,ÊAîÿìCîÿØ Ù Ù0‘HlÌHnÿìNºAîÿâCîÿÎ Ù Ù0‘HlàHnÿâNºHnÿìHnÿâNºHnÿÎHlÌNºAîÿìCîÿØ Ù Ù0‘HlàHnÿìNºHnÿìHlàNºAìÌCîÿâ Ù Ù0‘AîÿìCîÿØ Ù Ù0‘HlôHnÿìNºAîÿâCîÿÎ Ù Ù0‘HlHnÿâNºHnÿìHnÿâNºHnÿÎHlôNºAîÿìCîÿØ Ù Ù0‘HlHnÿìNºHnÿìHlNºAìôCîÿâ Ù Ù0‘AîÿìCîÿØ Ù Ù0‘HlHnÿìNºAîÿâCîÿÎ Ù Ù0‘Hl0HnÿâNºHnÿìHnÿâNºHnÿÎHlNºAîÿìCîÿØ Ù Ù0‘Hl0HnÿìNºHnÿìHl0NºAìCîÿâ Ù Ù0‘AîÿìCîÿØ Ù Ù0‘HlDHnÿìNºAîÿâCîÿÎ Ù Ù0‘HlXHnÿâNºHnÿìHnÿâNºHnÿÎHlDNºAîÿìCîÿØ Ù Ù0‘HlXHnÿìNºHnÿìHlXNºAìDCîÿâ Ù Ù0‘(_N^.ŸNuÙAW 57.29578�~€ROLL Graf ‚ROLL ROLL ‰SUBX SUBX RÒRÒ‰ADDX ADDX     ‰4MULX MULX F,úƬ”zF,úƬ”z‰COSX COSX X‰SINX SINX B‰DIVX DIVX ,‰STR2X STR2X ‡GRAF3D \…†NVÿÎ/ nCîÿöJ"Ø"Ø2�Hz\HnÿâNºHnÿâHnÿöNºAîÿÎCîÿö Ù Ù0‘HnÿÎNºAîÿØCîÿö Ù Ù0‘HnÿØNº(mÿüB,ÊAîÿìCîÿØ Ù Ù0‘HlÌHnÿìNºAîÿâCîÿÎ Ù Ù0‘HlÖHnÿâNºHnÿìHnÿâNºHnÿØHlÖNºAîÿìCîÿÎ Ù Ù0‘HlÌHnÿìNºHnÿìHlÖNºAìÌCîÿâ Ù Ù0‘AîÿìCîÿØ Ù Ù0‘HlôHnÿìNºAîÿâCîÿÎ Ù Ù0‘HlþHnÿâNºHnÿìHnÿâNºHnÿØHlþNºAîÿìCîÿÎ Ù Ù0‘HlôHnÿìNºHnÿìHlþNºAìôCîÿâ Ù Ù0‘AîÿìCîÿØ Ù Ù0‘HlHnÿìNºAîÿâCîÿÎ Ù Ù0‘Hl&HnÿâNºHnÿìHnÿâNºHnÿØHl&NºAîÿìCîÿÎ Ù Ù0‘HlHnÿìNºHnÿìHl&NºAìCîÿâ Ù Ù0‘AîÿìCîÿØ Ù Ù0‘HlDHnÿìNºAîÿâCîÿÎ Ù Ù0‘HlNHnÿâNºHnÿìHnÿâNºHnÿØHlNNºAîÿìCîÿÎ Ù Ù0‘HlDHnÿìNºHnÿìHlNNºAìDCîÿâ Ù Ù0‘(_N^.ŸNuÒOLL 57.29578�~€SKEW Graf ‚SKEW SKEW ‰ADDX ADDX ê‰MULX MULX ЉSINX SINX �‰CMPX CMPX v‰ABSX ABSX Z‰COSX COSX D‰DIVX DIVX œ.‰STR2X STR2X f"‡GRAF3D  …"NVÿÌHç nCîÿöJ"Ø"Ø2�HzöHnÿâNºHnÿâHnÿöNºAîÿÎCîÿö Ù Ù0‘HnÿÎNºAîÿâCîÿÎ Ù Ù0‘HnÿâNºHzªHnÿìNºBgHnÿâBgHnÿìNºgxAîÿØCîÿö Ù Ù0‘HnÿØNºHnÿÎHnÿØNº(mÿüB,ÊBG`DAîÿâCîÿØ Ù Ù0‘O¼ Áü AìÌHpHnÿØNºHnÿØO¼ Áü AìôHpNºRG Go¶L߀N^.ŸNuÓKEW 1.0E-557.29578�€SETPT3D Graf ‚SETPT3D SETPT3D …‚NVÿâ nCîÿöJ"Ø"Ø2� n CîÿìJ"Ø"Ø2� nCîÿâJ"Ø"Ø2� nCîÿö Ù Ù0‘ nAè Cîÿì Ù Ù0‘ nAèCîÿâ Ù Ù0‘N^ _ÞüNÐÓETPT3D �z€SETPT2D Graf ‚SETPT2D SETPT2D …`NVÿì n CîÿöJ"Ø"Ø2� nCîÿìJ"Ø"Ø2� nCîÿö Ù Ù0‘ nAè Cîÿì Ù Ù0‘N^ _Þü NÐÓETPT2D �X { three-dimensional graphics routines layered on top of QuickDraw } INTERFACE USES {$U-} %{$U obj/QuickDraw } QuickDraw, %{$U obj/Sane } Sane, %{$U obj/Elems } Elems; CONST radConst='57.29578'; TYPE Point3D=RECORD /x: extended; /y: extended; /z: extended; -END; %Point2D=RECORD /x: extended; /y: extended; -END; %XfMatrix = ARRAY[0..3,0..3] OF extended; %Port3DPtr = ^Port3D; %Port3D = RECORD 3GPort: GrafPtr; 3viewRect: Rect; 3xLeft,yTop,xRight,yBottom: extended; 3pen,penPrime,eye: Point3D; 3hSize,vSize: extended; 3hCenter,vCenter: extended; 3xCotan,yCotan: extended; 3ident: BOOLEAN; 3xForm: XfMatrix; 1END; VAR thePort3D: Port3DPtr; "PROCEDURE Open3DPort (port: Port3DPtr); "PROCEDURE SetPort3D (port: Port3DPtr); "PROCEDURE GetPort3D (VAR port: Port3DPtr); "PROCEDURE MoveTo2D(x,y: extended); PROCEDURE MoveTo3D(x,y,z: extended); "PROCEDURE LineTo2D(x,y: extended); PROCEDURE LineTo3D(x,y,z: extended); "PROCEDURE Move2D(dx,dy: extended); PROCEDURE Move3D(dx,dy,dz: extended); "PROCEDURE Line2D(dx,dy: extended); PROCEDURE Line3D(dx,dy,dz: extended); "PROCEDURE ViewPort (r: Rect); "PROCEDURE LookAt (left,top,right,bottom: extended); "PROCEDURE ViewAngle (angle: extended); "PROCEDURE Identity; "PROCEDURE Scale (xFactor,yFactor,zFactor: extended); "PROCEDURE Translate (dx,dy,dz: extended); "PROCEDURE Pitch (xAngle: extended); "PROCEDURE Yaw (yAngle: extended); "PROCEDURE Roll (zAngle: extended); "PROCEDURE Skew (zAngle: extended); "PROCEDURE TransForm (src: Point3D; VAR dst: Point3D); "FUNCTION Clip3D (src1,src2: Point3D; VAR dst1,dst2: POINT): BOOLEAN; "PROCEDURE SetPt3D (VAR pt3D: Point3D; x,y,z: extended); "PROCEDURE SetPt2D (VAR pt2D: Point2D; x,y: extended); IMPLEMENTATION €%_BEGIN ‚%_BEGIN %_BEGIN …B¯Nu�€%_END ‚%_END %_END … Nu�€%_INIT ‚%_INIT %_INIT … _N]NÐ�€%_RESET ‚SIOERR SIOERR f‚%_RESET %_RESET ‚%_REWRT %_REWRT …r"4"_ _/`""4"_ _/!IBhB( "Aú>0€ A!IBhBhB¨ f1h> Bÿþf!|.1|, DAú0€Nu�j€%_CLOSE ‚%_CLOSE %_CLOSE ‰SIOERR SIOERR … 2 _/1h> Aø0€Nu�€%_EOF ‚%_EOF %_EOF ‰SIOERR SIOERR >…húÎHçÀð o1h>B¨.Bh(1|,B¨ Bh!|$Eè@!J  2((Aø0€JAgB/`|/oLßT�Nu�`€%_EOLN ‚%_EOLN %_EOLN ‰SIOERR SIOERR >…júÞHç€ð o1h>B¨.Bh(1|,B¨ Bh!|$Eè@!J  $h Aø0€  gB/`|/oLßT�Nu�b€%_BLKRD ‚%_BLKRD %_BLKRD ‚%_BLKWR %_BLKWR ‰SIOERR SIOERR T…j|`|ÿï B�B‚24"_ _/@ÀJAlBAá‰ã‰áŠãŠ1h>!A.1|,!B$!I @g ` 2((Aø0€ _à‰â‰?NÐ�b€%_UREAD ‚%_UWRIT %_UWRIT ‚%_UREAD %_UREAD ‰SIOERR SIOERR b…|0<`B€B‚Bƒ$_246"_.Ê$@áŠãŠ0<¡0B¨. @g!|@.1|ÿýÕ¨.1|,!C$!I ´üg ` 4((Aø0€àŠâŠ$_Bg>‚ NÒ�t€%_IORES ‚%_IORES %_IORES ‰SIOERR SIOERR … ?8/Nu� €%_UCLR ‚%_UCLR %_UCLR … _0NÐ�€%_UBUSY ‚%_UBUSY %_UBUSY … Nu�€%_GET ‚%_GET %_GET ‚%_PUT %_PUT … _"NÐ�€%_UPARR ‚%_UPARR %_UPARR …/ o/P _Nu�€%_SEEK ‚%_SEEK %_SEEK … _0"NÐ�€%I_MUL4 ‚%I_MUL4 %I_MUL4 …<//0/Áï2/ ÃïÐAH@B@2/ÂïÐ�/@" /WX�Nu�4€%I_DIV4 ‚%I_DIV4 %I_DIV4 ‰IDIVMOD IDIVMOD …(// /"/ N¸/A" /WX�Nu� €%I_MOD4 ‚%I_MOD4 %I_MOD4 ‰IDIVMOD IDIVMOD …(// /"/ N¸/@" /WX�Nu� €IDIVMOD ‚IDIVMOD IDIVMOD …FHç>*jD€,jD�$&B€B�xã’ã�㉰ƒm�ƒR�SDlîJ…jD€»†jD�Lß|Nu�>€%_NEW ‚%_NEW %_NEW …"B€ _0Ѐ"_/Hç>¡"ˆLß|þNu�€%_MARK ‚%_MARK %_MARK …"_ _/ Nu�€%_RELSE ‚%_RELSE %_RELSE …"_ _/ Nu�€%_MEMAV ‚%_MEMAV %_MEMAV … âˆ/Nu�€%_HALT ‚%_HALT %_HALT … úÞNu�€%_IOERR ‚%_IOERR %_IOERR … Nu�€%_GOTOXY ‚%_GOTOXY%_GOTOXY…V _42/Hçÿþžü2 O1|ÿÿCú0!I 1|$Bh,B¨.A B AB Þü2LßÿNu= �N€%_LSTSG ‚%_LSTSG %_LSTSG … Nu�€%_GOTO ‚%_GOTO %_GOTO … .ŸNu�€%_MOVEL ‚%_MOVEL %_MOVEL …"0 _"_S@kÙQÈÿü/Nu�€%_MOVER ‚%_MOVER %_MOVER …""0 _"_ÐÀÒÀS@k!QÈÿü/Nu�€%_FILLC ‚%_FILLC %_FILLC …"_02 _SAkÀQÉÿüNÑ�€%_SCANE ‚%_SCANE %_SCANE …HHçà€BB o0/2/gk °gRBSAnö` Rˆ° gSBRAkö?B/oLß\�Nu�@€%_SCANN ‚%_SCANN %_SCANN …HHçà€BB o0/2/gk °fRBSAnö` Rˆ° fSBRAkö?B/oLß\�Nu�@€%_RCHCK ‚%_RCHCK %_RCHCK …"_024NÑ� €%_SRCHK ‚%_SRCHK %_SRCHK … .ŸNu�€%S_NE ‚%S_EQ %S_EQ ‚%S_NE %S_NE …FHçÀÀr`HçÀÀBA o"oB@°f`³fS@jø AA/oLß\�Nu�>€%S_GT ‚%S_GT %S_GT ‰STRCOMP STRCOMP …HçðÀ"o ovNø�€%S_LE ‚%S_LE %S_LE ‰STRCOMP STRCOMP …HçðÀ"o oBCNø�€%S_LT ‚%S_LT %S_LT ‰STRCOMP STRCOMP …HçðÀ o "ovNø�€%S_GE ‚%S_GE %S_GE ‚STRCOMP STRCOMP …PHçðÀ o "oBCB@BA²@m4`4`³fSBjø²@n C`cøC"/oLß\�Nu�H€%_INTER ‚%_INTER %_INTER …DB§HçàÀAï0ÐÀ"H2ÒÁ²@l02âH`4 ÅaS@jø3 o#/ILß._Nu�<€%_SING ‚%_SING %_SING …JHçøàAï$0BP2èI4RB6ãK"OžÃ$O8<4ÙSDfú JBZSBfú0ÃBB@Â0‚LßNu�B€%_UNION ‚%_UNION %_UNION …XB§HçðÀAï 0ÐÀ"H2ÒÁ6²@l6âK`4 …aSCjø�Agm Ò@âH3 S@nú`ÒÀ3 o#/ILß._Nu�P€%_DIFF ‚%_DIFF %_DIFF …LB§HçðÀAï 0ÐÀ"H2ÒÁ6²@l6âK`4 FBÅaSCjö�AnÒÀ3 o#/ILß._Nu�D€%_RDIFF ‚%_RDIFF %_RDIFF …TB§HçðÀAï 0ÐÀ"H2ÒÁ6²@l6âK`Fa4 ÅQSCjö�Ao Ò@âH3 S@nú3 o#/ILß._Nu�L€%_RANGE ‚%_RANGE %_RANGE …~Hçøà2/$0/&B¯$Aï(J@jB@²@mH4èJ6ãKg"OžÃ$O8<4ÙSDfúBZSBfúTC?C$46èJãJDBCBDĉp þR@²@läLßNu o /H"LßJ_Nu�v€%_ADJ ‚%_ADJ %_ADJ …<žüHçÀÀ0/2/Aï"o’@lB`TAkú`ÐÁ! /HLß._Nu�4€%_SETNE ‚%_SETEQ %_SETEQ ‚%_SETNE %_SETNE …~B§Hçðàv`B§HçðàBCAï$0ÐÀ"H2ÒÁ$I4²@l4�Â’ÂâJ`³Hf*SBjø’@gk’ÀâIJafSAnø`�À�ÁâAJ`fRAkø CB" o %/JLß._Nu�v€%_SETGE ‚%_SETGE %_SETGE ‚%_SETLE %_SETLE …|B§HçðàCï$2ÒÁ I0ÐÀ$H`B§HçðàAï$0ÐÀ"H2ÒÁ$I4²@l4âJ`6 FCÆafSBjô’@gk âIJaf SAjøNqv`BCB" o %/JLß._Nu�t€%_TERM ‚%_TERM %_TERM … _NUNÐ�€%W_LN ‚%W_LN %W_LN ‚OUTCH OUTCH ‰SIOERR SIOERR °…À"_ _Hçÿþ< aLßÿNÑHçðð"fdNVÿê&Hnÿü¨šHnÿô¨‹0.ÿúÐnÿôÐnÿö=@ÿêAúFgˆ� Yf& U P-hÿðBnÿî0.ÿüÐnÿöÐnÿú=@ÿìHnÿ쨣` Tf. U P=hÿò=nÿþÿî0.ÿü�nÿô=@ÿìÐnÿê=@ÿðHnÿ쨣`Î *fÆ U P-hÿì-hÿðHnÿ쨣`¬ fAú®Ð`š f`Œ  f Bg?.ÿü¨“`  f> U P0.ÿêÐnÿü°he"B§¨Ø"W U PHhBg0.ÿêD@?/ ¨ï¨Ù`FBg?.ÿꨔ`: f?<©È`,  f`$ fB§¨“`  fBg?.ÿêFWRW¨”`?¨ƒN^`aLßNu1h>!|$B¨.1|,Gú€!K  Aø0€Nu�¸€%W_C ‚%W_C %W_C ‰OUTCH OUTCH …&"_4 _/ `p N¸SBnöN¸Nu�€%W_PAOC ‚%W_PAOC %W_PAOC ‰OUTCH OUTCH …. 24"_ _/’Bo p N¸SAføN¸SBnöNu�&€%W_I ‚%W_I %W_I ‰OUTCH OUTCH \R…p"_2  _/ HçBB,lD€&(BDHDˆü *:Šü HD&6HEE0?RBJƒfÚJ†lRB?<-6–Bo p N¸SCnö0N¸SBnöLßxNu�h€%W_B ‚%W_B %W_B ‚%W_STR %W_STR ‰OUTCH OUTCH :.…` _4gHzH`Hz!|$B¨.Bh,Cè@!I  Aø0€LßNu�x€%R_LN ‚%R_LN %R_LN ‰SIOERR SIOERR T‰INCH INCH …f"_ _Hçàà g N¸ fö`!|$B¨.0< áH<ƒ1@,Eè@!J B Bh€%%%REAL ‚%%%REAL %%%REAL ‚GETARG GETARG ‚CLEARSTACLEARSTA….Aø JB˜BPNuNºÿô _NVÿöHnCîÿö/ ?<©ëNÐ�&€%_ROUND ‚RETURNINRETURNIN‚%_ROUND %_ROUND ‰GETARG GETARG …N¸/ Hn?<(©ëN^Nu�€%_TRUNC ‚%_TRUNC %_TRUNC ‰RETURNINRETURNIN‰GETARG GETARG …&N¸Aø J0¼`/ ?<©ëAø JBPNø�€%I_FLT ‚RETURNRERETURNRE‚%I_FLT %I_FLT ‰CLEARSTACLEARSTA…0N¸NVÿöHnCîÿö/ ?<(©ë/ Hn?<©ëN^Nu�(€%F_NEG ‚%F_NEG %F_NEG …oNu�€%F_ABS ‚%F_ABS %F_ABS …¯Nu�€%F_ADD ‚%F_ADD %F_ADD ‚FPBINARYFPBINARY‰CLEARSTACLEARSTA…H2</ N¸NVÿöHn Cîÿö/ ?<©ëHn/ ?©ë@Á/ Hn ?<©ëN^.Ÿ"_DÁNu�@€%F_SUB ‚%F_SUB %F_SUB ‰FPBINARYFPBINARY…2<Nø�€%F_MUL ‚%F_MUL %F_MUL ‰FPBINARYFPBINARY…2<Nø�€%F_DIV ‚%F_DIV %F_DIV ‰FPBINARYFPBINARY…2<Nø�€CMPARE ‚%F_LE %F_LE &‚%F_GT %F_GT ,‚%F_EQ %F_EQ 8‚%F_NE %F_NE >‚%F_LT %F_LT ‚%F_GE %F_GE 2‚ISFALSE ISFALSE ‚CMPARE CMPARE ‚ISTRUE ISTRUE ‰FPBINARYFPBINARY…LLß"AHç €2< NøXO?<NÑXOBgNÑaÞeî`ôaØcè`îaÒnâ`èaÌlÜ`âaÆgÖ`ÜaÀfÐ`Ö�D’MACPRINTL {$U-} {Turn on/off the Lisa Libraries.} {$X-} {Turn on/off stack expansion.} {$R-} {Turn on/off range checking.} {$D-} {Turn on/off debug symbols.} INTERFACE { ---------------------------------------------------------------------- } USES {$U Obj/MemTypes } MemTypes, &{$U Obj/QuickDraw } QuickDraw, &{$U Obj/OSIntf } OSIntf; {Interface compile flags, also check CONST's} {$SETC fWordBkOK = TRUE } {Turn on/off word breaking in spool file.[PfWrite]} {$SETC fULFixOK = TRUE } {Turn on/off fixing UL.[PfWrite, PrBand]} { ---------------------------------------------------------------------- } CONST #iPrPgFract = 120; {Page scale factor. ptPgSize (below) is in units of 1/iPrPgFract } #iPrPgFst = 1; {Page range constants} #iPrPgMax = 9999; #iIOBufBytes= 522; {Size of file sys buf.} #iIOBlkBytes= 512; {Size of disk block} #iPrRelease = 2; {Current version number of the code.} #iPrintX = 19; {Spare integers in print rec} {The TPrint Resource type & ID's} #lPStrType = $53545220; {"STR ": Res type for the Pr Rsrc file name} #iPStrRFil = $E000; {-8192} {Str $E000 [in SysRes] is the current printer's rsrc file} #iPStrPFil = $E001; {-8191} {Str $E001 is the default print file name} #lPrintType = $50524543; {"PREC": Res type for the hPrint records} #iPrintDef = 0; {Default hPrint } #iPrintLst = 1; {Last used hPrint} #iPrintDrvr= 2; {.Print's parameter record; not a Print rec} #iMyPrDrvr = $E000; {-8192} {My copy of the above.} {PicFile constants} #iPfMaxPgs = 128; #lPfType = $5046494C; {"PFIL"} #lPfSig = $50535953; {"PSYS"} #iPfIcon = 140; #lPrType = $4150504C; {"APPL"} #lPrSig = $50535953; {"PSYS"} #iPrIcon = 138; {Driver & Resource constants} #sPrDrvr = '.Print'; #iPrDrvrID = 2; {Driver's ResID} #iPrDrvrRef = $FFFD; {Driver's RefNum = NOT ResID} #iPrDrvrDev = $FD00; {Driver's QD Dev num = RefNum in Hi Byte, variant in lo} #iPrBitsCtl = 4; {The Bitmap Print Proc's ctl number} #lScreenBits= $00000000; {The Bitmap Print Proc's Screen Bitmap param} #lPaintBits = $00000001; {The Bitmap Print Proc's Paint [sq pix] param} #lHiScreenBits= $00000010; {The Bitmap Print Proc's Screen Bitmap param} #lHiPaintBits = $00000011; {The Bitmap Print Proc's Paint [sq pix] param} #iPrIOCtl = 5; {The Raw Byte IO Proc's ctl number} #iPrEvtCtl = 6; {The PrEvent Proc's ctl number} #lPrEvtAll = $0002FFFD; {The PrEvent Proc's CParam for the entire screen} #lPrEvtTop = $0001FFFD; {The PrEvent Proc's CParam for the top folder} #iPrDevCtl = 7; {The PrDevCtl Proc's ctl number} #lPrReset = $00010000; {The PrDevCtl Proc's CParam for reset} #lPrPageEnd = $00020000; {The PrDevCtl Proc's CParam for end page} #lPrLineFeed= $00030000; {The PrDevCtl Proc's CParam for paper advance} #lPrLFSixth = $0003FFFF; {The PrDevCtl Proc's CParam for 1/6 th inch paper advance} #lPrLFEighth= $0003FFFE; {The PrDevCtl Proc's CParam for 1/8 th inch paper advance} #iFMgrCtl = 8; {The FMgr's Tail-hook Proc's ctl number} ;{ [The Pre-Hook is the status call] } {General Dlg/Alert[=Ax] Constants:} $iOK = 1; iCancel = 2; #iPrStlDlg= $E000; {-8192} #iPrJobDlg= $E001; {-8191} #iPrCfgDlg= $E002; {-8190} #iPgFeedAx= $E00A; {-8182} #iPicSizAx= $E00B; {-8181} #iIOAbrtAx= $E00C; {-8180} {Sys Error & Deap Shit Constants:} #iMemFullErr = -108; #iPrAbort = 128; #iPicLim = 129; #iPicMax = 130; #iIOAbort = -27; #iPrDeapShit = 29; {The PrVars lo mem area:} #pPrGlobals = $00000944; #bDraftLoop = 0; #bSpoolLoop = 1; #bUser1Loop = 2; #bUser2Loop = 3; { ---------------------------------------------------------------------- } TYPE #TN = 0..15; {A Nibble} #TStr80 = String[80]; {A medium size string} #TPStr80 = ^TStr80; {..its pointer} #TPRect = ^Rect; {A Rect Ptr} #TPBitMap = ^BitMap; {A BitMap Ptr} #TWord = PACKED RECORD {General purpose "alias" record for a word & long.} &CASE Integer OF )0: ( c1, c0: Char ); )1: ( b1, b0: SignedByte ); )2: ( usb1, usb0: Byte ); )3: ( n3, n2, n1, n0: TN ); )4: ( f15, f14, f13, f12, f11, f10, f9, f8, f7, f6, f5, f4, f3, f2, f1, f0: Boolean ); )5: ( i0: Integer ); #END; #TLong = RECORD &CASE Integer OF )0: ( w1, w0: TWord ); )1: ( l0: LongInt ); )2: ( p0: Ptr ); )3: ( h0: Handle ); )4: ( pt: Point ); #END; 5{NOTE: Changes will also affect: PrEqu, TCiVars & TPfVars} #TPrVars = RECORD {4 longs for printing, see SysEqu for location.} &iPrErr: Integer; {Current print error. Set to iPrAbort to abort printing.} &bDocLoop: SignedByte; {The Doc style: Draft, Spool, .., and ..} D{Currently use low 2 bits; the upper 6 are for flags.} &bUser1: SignedByte; {Spares used by the print code} &lUser1: TLong; &lUser2: TLong; &lUser3: TLong; #END; #TPPrVars = ^TPrVars; #TPrInfo = RECORD {Print Info Record: The parameters needed for page composition.} &iDev: Integer; {Font mgr/QuickDraw device code} &iVRes: Integer; {Resolution of device, in device coordinates} &iHRes: Integer; { ..note: V before H => compatable with Point.} &rPage: Rect; {The page (printable) rectangle in device coordinates.} #END; #TPPrInfo = ^TPrInfo; {These are types of paper feeders.} #TFeed = ( feedCut, feedFanfold, feedMechCut, feedOther ); #TPrStl = RECORD {Printer Style: The printer configuration and usage information.} &wDev: TWord; {The device (driver) number. Hi byte=RefNum, Lo byte=variant.} &iPageV: Integer; {paper size in units of 1/iPrPgFract} &iPageH: Integer; { ..note: V before H => compatable with Point.} &bPort: SignedByte; {The IO port number. Refnum?} &feed: TFeed; {paper feeder type.} #END; #TPPrStl = ^TPrStl; {Banding data structures. Not of general interest to Apps.} #TScan = {Band Scan direction Top-Bottom, Left-Right, etc.} &( scanTB, scanBT, scanLR, scanRL ); #TPrXInfo = RECORD {The print time eXtra information.} &iRowBytes: Integer; {The Band's rowBytes.} &iBandV: Integer; {Size of band, in device coordinates} &iBandH: Integer; { ..note: V before H => compatable with Point.} &iDevBytes: Integer; {Size for allocation. May be more than rBounds size!} &iBands: Integer; {Number of bands per page.} &bPatScale: SignedByte; {Pattern scaling} &bULThick: SignedByte; {3 Underscoring parameters} &bULOffset: SignedByte; &bULShadow: SignedByte; &scan: TScan; {Band scan direction} &bXInfoX: SignedByte; {An eXtra byte.} #END; #TPPrXInfo = ^TPrXInfo; #TPrJob = RECORD {Print Job: Print "form" for a single print request.} &iFstPage: Integer; {Page Range.} &iLstPage: Integer; &iCopies: Integer; {No. copies.} &bJDocLoop: SignedByte; {The Doc style: Draft, Spool, .., and ..} &fFromUsr: Boolean; {Printing from an User's App (not PrApp) flag} &pIdleProc: ProcPtr; {The Proc called while waiting on IO etc.} &pFileName: TPStr80; {Spool File Name: NIL for default.} &iFileVol: Integer; {Spool File vol, set to 0 initially} &bFileVers: SignedByte; {Spool File version, set to 0 initially} &bJobX: SignedByte; {An eXtra byte.} #END; #TPPrJob = ^TPrJob; #TPrint = RECORD {The universal 120 byte printing record} &iPrVersion: Integer; {Printing software version} &PrInfo: TPrInfo; {the PrInfo data associated with the current style.} &rPaper: Rect; {The paper rectangle [offset from rPage].} &PrStl: TPrStl; {This print request's style.} &PrInfoPT: TPrInfo; {Print Time Imaging metrics} &PrXInfo: TPrXInfo; {Print-time (expanded) Print info record.} &PrJob: TPrJob; {The Print Job request} &PrintX: Array[1..iPrintX]of integer; {Spare to fill to 120 bytes!} #END; #TPPrint = ^TPrint; #THPrint = ^TPPrint; {Printing Graf Port. All printer imaging, whether spooling, banding, etc, happens "thru" a GrafPort.} #TPrPort = RECORD {This is the "PrPeek" record.} &GPort: GrafPort; {The Printer's graf port.} &GProcs: QDProcs; {..and its procs} &lGParam1: TLong; {Some params: Our relocatable stuff etc.} &lGParam2: TLong; &lGParam3: TLong; &lGParam4: TLong; &fOurPtr: Boolean; {Whether the PrPort allocation was done by us.} &fOurBits: Boolean; {Whether the BitMap allocation was done by us.} #END; #TPPrPort = ^TPrPort; #TPPort = RECORD {Pascal Yuk: Alias to merge a grafport & prport} &CASE Integer OF )0: (pGPort: GrafPtr); )1: (pPrPort: TPPrPort); #END; #TPrStatus = RECORD {Print Status: Print information during printing.} &iTotPages: Integer; {Total pages in Print File.} &iCurPage: Integer; {Current page number} &iTotCopies: Integer; {Total copies requested} &iCurCopy: Integer; {Current copy number} &iTotBands: Integer; {Total bands per page.} &iCurBand: Integer; {Current band number} &fPgDirty: Boolean; {True if current page has been written to.} &fImaging: Boolean; {Set while in band's DrawPic call.} &hPrint: THPrint; {Handle to the active Printer record} &pPrPort: TPPrPort; {Ptr to the active PrPort} &hPic: PicHandle; {Handle to the active Picture} #END; #TPPrStatus = ^TPrStatus; {PicFile = a TPfHeader followed by n QuickDraw Pics (whose PicSize is invalid!)} #TPfPgDir = RECORD &iPages: Integer; &lPgPos: ARRAY [0..iPfMaxPgs] OF LongInt; #END; #TPPfPgDir = ^TPfPgDir; #THPfPgDir = ^TPPfPgDir; #TPfHeader = RECORD {Print File header.} &Print: TPrint; &PfPgDir: TPfPgDir; #END; #TPPfHeader = ^TPfHeader; #THPfHeader = ^TPPfHeader; {Note: Type compatable with an hPrint.} (* This is not included here due to requiring $Use-ing the entire world! #It's only used by those desiring to customize the print dialogs. #TPrDlg = RECORD {Print Dialog: The Dialog Stream object.} &Dlg: DialogRecord; {The Dialog window} &pFltrProc: ProcPtr; {The Filter Proc.} &pItemProc: ProcPtr; {The Item evaluating proc.} &hPrintUsr: THPrint; {The user's print record.} &fDoIt: Boolean; &fDone: Boolean; &lUser1: TLong; {Four longs for user's to hang global data.} &lUser2: TLong; &lUser3: TLong; &lUser4: TLong; #{ ...Plus more stuff needed by the particular printing dialog.} #END; #TPPrDlg = ^TPrDlg; {== a dialog ptr} *) { ---------------------------------------------------------------------- } { --Init-- } PROCEDURE PrOpen; #{ Open the .Print driver, get the Current Printer's Rsrc file %name from SysRes, open the resource file, and open the .Print driver %living in SysRes. %PrOpen MUST be called during init time. } PROCEDURE PrClose; #{Closes JUST the print rsrc file. Leaves the .Print driver in SysRes open.} { --Print Dialogs & Default-- } PROCEDURE PrintDefault ( hPrint: THPrint ); #{ Defaults a handle to a Default Print record. %Note: You allocate (or fetch from file's resources..) the handle, +I fill it. Also, I may invoke this at odd times whenever +I think you have an invalid Print record! } FUNCTION PrValidate ( hPrint: THPrint ): Boolean; #{ Checks the hPrint. Fixes it if there has been a change in SW %version or in the current printer. Returns fChanged. %Note: Also updates the various parameters within the Print +record to match the current values of the PrStl & PrJob. +It does NOT set the fChanged result if these +parameters changed as a result of this update. } FUNCTION PrStlDialog ( hPrint: THPrint ): Boolean; FUNCTION PrJobDialog ( hPrint: THPrint ): Boolean; #{ The Dialog returns the fDoIt flag: )IF PrJobDialog(..) THEN BEGIN ,PrintMyDoc (..); ,SaveMyStl (..) )END -OR )IF PrStlDialog(..) THEN SaveMyStl (..) &NOTE: These may change the hPrint^^ if the version number ,is old or the printer is not the current one. } PROCEDURE PrJobMerge (hPrintSrc, hPrintDst: THPrint); #{ Merges hPrintSrc's PrJob into hPrintDst [Source/Destination]. %Allows one job dialog being applied to several docs [Finder printing] } { --The Document printing procs: These spool a print file.-- } FUNCTION PrOpenDoc ( hPrint: THPrint; 5pPrPort: TPPrPort; 5pIOBuf: Ptr ): TPPrPort; #{ Set up a graf port for Pic streaming and make it the current port. %Init the print file page directory. %Create and open the print file. %hPrint: The print info. %pPrPort: the storage to use for the TPrPort. If NIL we allocate. %pIOBuf: an IO buf; if NIL, file sys uses volume buf. %returns TPPrPort: The TPPrPort (graf port) used to spool thru. } PROCEDURE PrCloseDoc ( pPrPort: TPPrPort ); #{ Write the print file page directory. %Close the print file. } PROCEDURE PrOpenPage ( pPrPort: TPPrPort; pPageFrame: TPRect ); #{ If current page is in the range of printed pages: 'Open a picture for the page 'Otherwise set a null port for absorbing an image. %pPageFrame := PrInfo.rPage, unless you're scaling. %Set pPageFrame to NIL unless you want to perform PicScaling on the printer. %[The printing procs will call OpenPicture (pPageFrame^) and DrawPicture (hPic, rPage);] %Note: Use of QuickDraw may now cause File IO errors due to our Pic spooling! } PROCEDURE PrClosePage( pPrPort: TPPrPort ); #{ Close & kill the page picture. %Update the file page directory. %If we allocated the TPrPort then de-allocate it. } { --The "Printing Application" proc: Read and band the spooled PicFile.-- } PROCEDURE PrPicFile( hPrint: THPrint; 5pPrPort: TPPrPort; 5pIOBuf: Ptr; 5pDevBuf: Ptr; 5VAR PrStatus: TPrStatus ); #{ Read and print the spooled print file. %The idle proc is run during Imaging and Printing. } (* Removed: fources assumption of use of Pic spool files! PROCEDURE PrPic ( hPic: PicHandle; 2hPrint: THPrint; 2pPrPort: TPPrPort; 2pDevBuf: Ptr; 2VAR PrStatus: TPrStatus ); #{ Print a memory resident picture (one page). } *) { --Get/Set the current Print Error-- } FUNCTION PrError: Integer; PROCEDURE PrSetError ( iErr: Integer ); { --The .Print driver calls.-- } PROCEDURE PrDrvrOpen; PROCEDURE PrDrvrClose; #{ Open/Close the .Print driver in SysRes. Make it purgable or not. %ONLY used by folks doing low level stuff, not full document printing. } PROCEDURE PrCtlCall (iWhichCtl: Integer; lParam1, lParam2, lParam3: LongInt); #{ A generalized Control proc for the Printer driver. %The main use is for bitmap printing: )PrCtlCall (iPrBitsCtl, pBitMap, pPortRect, lControl); )== )PROCEDURE PrBits ( pBitMap: Ptr; --QuickDraw bitmap >pPortRect: TPRect; --a portrect. use bounds for whole bitmap >lControl: LongInt ); --0=>Screen resolution/Portrait %This dumps a bitmap/portrect to the printer. %lControl is a device dep param; use 0 for screen res/portrait/etc. %Each different printer will use lControl parameter differently. %Thus PrCtlCall (iPrBitsCtl, @MyPort^.ScreenBits, @MyPort^.PortRect.Bounds,0) %performs a screen dump of just my port's data. %Two special control calls are included in the driver for Screen printing from the %key board: ,PrCtlCall (iPrEvtCtl, lPrEvtAll, 0, 0); Prints the screen ,PrCtlCall (iPrEvtCtl, lPrEvtTop, 0, 0); Prints the top folder %These are handled by the system for key board access but can be called by anyone %at any time. They can be very cheap printing for ornaments, for example! %Another useful call is used for sending raw data to the printer: )PrCtlCall (iPrIOCtl, pBuf, lBufCount, pIdleProc); } {These .Print driver calls are only available in the PrScreen module.-- } PROCEDURE PrPurge; PROCEDURE PrNoPurge; FUNCTION PrDrvrDCE: Handle; FUNCTION PrDrvrVers: Integer; { --Semi private stuff-- } (* The dialog customizing stuff: FUNCTION PrStlInit ( hPrint: THPrint ): TPPrDlg; FUNCTION PrJobInit ( hPrint: THPrint ): TPPrDlg; FUNCTION PrDlgMain ( hPrint: THPrint; pDlgInit: ProcPtr ): Boolean; *) PROCEDURE PrCfgDialog; PROCEDURE PrHack ( lParam1, lParam2, lParam3: TLong ); { ---------------------------------------------------------------------- } {Misc Utilities} {File Utilities: IO68K} {FUNCTION PrStr80Ptr (sName:TStr80): TPStr80;} FUNCTION PrCreateFile(sName:TStr80; iVol: Integer; bVersion: SignedByte): Integer; FUNCTION PrDeleteFile(sName:TStr80; iVol: Integer; bVersion: SignedByte): Integer; FUNCTION PrOpenFile (sName:TStr80; iVol: Integer; bVersion: SignedByte; 4fTrunc: Boolean; pBuf: Ptr; VAR iRefNum: Integer): Integer; FUNCTION PrWriteBlk (iRefNum, iMode:Integer; lPos:LongInt; p:Ptr; lBytes:LongInt ):Integer; FUNCTION PrReadBlk (iRefNum, iMode:Integer; lPos:LongInt; p:Ptr; lBytes:LongInt ):Integer; FUNCTION PrCloseFile(iRefNum: Integer): Integer; {Scc utilitys: Scc68k} FUNCTION PrSCCInit (iBaudEtc: Integer; lHndShk: LongInt): Integer; FUNCTION PrBlockOut (pIdleProc: ProcPtr; pData: Ptr; lBytes: LongInt): Integer; (*FUNCTION PrIOCheck (lTimeOut: LongInt; pData: Ptr; lBytes: LongInt): Integer;*) PROCEDURE XPrIdle (pIdleProc: ProcPtr); PROCEDURE PrAbortCheck; {Other Utilities: PrMacMisc} FUNCTION lPrMul (i1, i0: Integer): LongInt; FUNCTION lPrDiv (lTop: LongInt; iBot: Integer): LongInt; {Performance tool} Procedure SpyInit; Procedure SpyClose; Procedure Spy (iBucket: Integer); { ---------------------------------------------------------------------- } IMPLEMENTATION ’MEMTYPES { Copyright 1983 Apple Computer Inc. } {types which are basic to all Macintosh applications} {RS Apr 30 84 created by taking types from quickdraw and toolintf} INTERFACE TYPE "SignedByte = -128..127; { any byte in memory } "Byte = 0..255; { Unsigned byte for fontmgr } "Ptr = ^SignedByte; { blind pointer } "Handle = ^Ptr; { pointer to a master pointer } "ProcPtr = Ptr; { pointer to a procedure } "Fixed = LongInt; "Str255 = String[255]; "StringPtr = ^Str255; "StringHandle = ^StringPtr; IMPLEMENTATION END. { of UNIT } ’OSINTF l { Copyright 1983 by Apple Computer, Inc. All Rights Reserved. } { Created 23 Nov 83 by Rony Sebok from heapZone.text and osMisc.text.} { Modification history: } { 12 Apr 84 JTC Cleaned up a la Hacker. } Interface USES {$U-} %{$U obj/MemTypes } MemTypes, %{$U obj/QuickDraw } QuickDraw; CONST "{for Event Manager} "everyEvent = -1; "NullEvent = 0; "mouseDown = 1; "mouseUp = 2; "keyDown = 3; "keyUp = 4; "autoKey = 5; "updateEvt = 6; "diskEvt = 7; "activateEvt = 8; "driverEvt = 11; "app1Evt = 12; "app2Evt = 13; "app3Evt = 14; "app4Evt = 15; "{ event mask equates } "mDownMask = 2; "mUpMask = 4; "keyDownMask = 8; "keyUpMask = 16; "autoKeyMask = 32; "updateMask = 64; "diskMask = 128; "activMask = 256; "driverMask = 2048; "app1Mask = 4096; "app2Mask = 8192; "app3Mask = 16384; "app4Mask = -32768; "{to decipher event message for keyDown events} "charCodeMask = $000000FF; "keyCodeMask = $0000FF00; "{ modifiers } "optionKey= 2048; { Bit 3 of high byte } "alphaLock= 1024; { Bit 2 } "ShiftKey= 512; { Bit 1 } "CmdKey= 256; { Bit 0 } "BtnState= 128; { Bit 7 of low byte is mouse button state } "activeFlag = 1; { bit 0 of modifiers for activate event } "changeFlag = 2; { bit 1 of modifiers for activate event } {for Memory Manager} "MemFullErr = -108; { Not enough room in heap zone } "NilHandleErr = -109; { Master Pointer was NIL in HandleZone or other } "MemWZErr = -111; { WhichZone failed (applied to free block) } "MemPurErr = -112; { trying to purge a locked or non-purgeable block } "NoErr = 0; { All is well } "{file system error codes} "DirFulErr = -33; { Directory full} "DskFulErr = -34; { disk full} "NSVErr = -35; { no such volume} "IOErr = -36; { I/O error (bummers)} "BdNamErr = -37; { there may be no bad names in the final system!} "FNOpnErr = -38; { File not open} "EOFErr = -39; { End of file} "PosErr = -40; { tried to position to before start of file (r/w)} "MFulErr = -41; { memory full(open) or file won't fit (load)} "TMFOErr = -42; { too many files open} "FNFErr = -43; { File not found} "WPrErr = -44; { diskette is write protected} "FLckdErr = -45; { file is locked} "VLckdErr = -46; { volume is locked} "FBsyErr = -47; { File is busy (delete)} "DupFNErr = -48; { duplicate filename (rename)} "OpWrErr = -49; { file already open with with write permission} "ParamErr = -50; { error in user parameter list} "RFNumErr = -51; { refnum error} "GFPErr = -52; { get file position error} "VolOffLinErr = -53; { volume not on line error (was Ejected)} "PermErr = -54; { permissions error (on file open)} "VolOnLinErr = -55; { drive volume already on-line at MountVol} "NSDrvErr = -56; { no such drive (tried to mount a bad drive num)} "NoMacDskErr = -57; { not a mac diskette (sig bytes are wrong)} "ExtFSErr = -58; { volume in question belongs to an external fs} "FSRnErr = -59; { file system rename error:} >{ during rename the old entry was deleted } >{ but could not be restored . . .} "BadMDBErr = -60; { bad master directory block} "WrPermErr = -61; { write permissions error} "firstDskErr = -84; {first of the range of low-level disk errors} "lastDskErr = -64; {last of the range of low-level disk errors} "MaxSize = $800000; { Max data block size is 512K bytes } "{finder constants} "fHasBundle = 32; "fInvisible = 64; "fTrash = -3; "fDesktop = -2; "fDisk = 0; "{io constants} "{ioPosMode values} "fsAtMark = 0; "fsFromStart = 1; "fsFromLEOF = 2; "fsFromMark = 3; "{ioPermission values} "fsCurPerm = 0; "fsRdPerm = 1; "fsWrPerm = 2; "fsRdWrPerm = 3; "{refNums fro the serial ports} "AinRefNum = -6; {serial port A input} "AoutRefNum = -7; {serial port A output} "BinRefNum = -8; {serial port B input} "BoutRefNum = -9; {serial port B output} "{baud rate constants} "baud300 = 380; "baud600 = 189; "baud1200 = 94; "baud1800 = 62; "baud2400 = 46; "baud3600 = 30; "baud4800 = 22; "baud7200 = 14; "baud9600 = 10; "baud19200 = 4; "baud57600 = 0; "{SCC channel configuration word} "{driver reset information masks} "stop10 = 16384; "stop15 = -32768; "stop20 = -16384; "noParity = 8192; "oddParity = 4096; "evenParity = 12288; "data5 = 0; "data6 = 2048; "data7 = 1024; "data8 = 3072; "{serial driver error masks} "swOverrunErr = 0; "parityErr = 16; "hwOverrunErr = 32; "framingErr = 64; "{serial driver message constant} "xOffWasSent = $80; "{for application parameter} "{constants for message returned by the finder on launch} "appLoad = 0; "appPrint = 1; #{masks used for writing and reading from sytem parameter RAM} #everyParam = 1048575; #validMask = 1; #portAMask = 48; #portBMask = 192; #alarmMask = 3840; #fontMask = 12288; #kbdMask = 16384; #printMask = 32768; #volCtlmask = 65536; #clikCaretMask = 131072; #miscMask = 524288; ${for sound driver} $SWmode = -1; $FTmode = 1; $FFmode = 0; TYPE "{for Event Manager} "EventRecord = RECORD 2what: INTEGER; 2message: LongInt; 2when: LongInt; 2where: Point; 2modifiers: INTEGER; 1END; "Zone = Record 2BkLim: Ptr; 2PurgePtr: Ptr; 2HFstFree: Ptr; 2ZCBFree: LongInt; 2GZProc: ProcPtr; 2MoreMast: Integer; 2Flags: Integer; 2CntRel: Integer; 2MaxRel: Integer; 2CntNRel: Integer; 2MaxNRel: Integer; 2CntEmpty: Integer; 2CntHandles: Integer; 2MinCBFree: LongInt; 2PurgeProc: ProcPtr; 2SparePtr: Ptr; { reserved for future } 2AllocPtr: Ptr; 2HeapData: Integer; /End; "THz = ^Zone; { pointer to the start of a heap zone } "Size = LongInt; { size of a block in bytes } "OsErr = Integer; { error code } "QElemPtr = ^QElem; {ptr to generic queue element} {Vertical Blanking Control Block Queue Element} VBLTask = RECORD $qLink: QElemPtr; {link to next element} $qType: INTEGER; {unique ID for validity check} $vblAddr: ProcPtr; {address of service routine} $vblCount: INTEGER; {count field for timeout} $vblPhase: INTEGER; {phase to allow synchronization} "END; {VBLCntrlBlk} {VBLQElPtr = ^VBLTask;} evQEl = RECORD $qLink: QElemPtr; $qType: INTEGER; $evtQwhat: INTEGER; {this part is identical to the EventRecord as...} $evtQmessage:LongInt; {defined in ToolIntf} $evtQwhen: LongInt; $evtQwhere: Point; $evtQmodifiers: INTEGER; "END; "{drive queue elements} DrvQEl = RECORD $qLink: QElemPtr; $qType: INTEGER; $dQDrive: INTEGER; $dQRefNum: INTEGER; {ref num of the drvr which handles this drive} $dQFSID: INTEGER; {id of file system which handles this drive} $dQDrvSize: INTEGER; {size of drive in 512-byte blocks -- not for drvs 1&2} "END; DrvQElPtr = ^DrvQEl; "ParamBlkType = (IOParam,FileParam,VolumeParam,CntrlParam); "OsType = PACKED ARRAY[1..4] OF CHAR; {same as rsrc mgr's Restype} "FInfo = RECORD {record of finder info} ,fdType: OsType; {the type of the file} ,fdCreator: OsType; {file's creator} ,fdFlags: INTEGER; {flags ex. hasbundle,invisible,locked, etc.} ,fdLocation: Point; {file's location in folder} ,fdFldr: INTEGER; {folder containing file} *END; {FInfo} "ParamBlockRec = RECORD ({12 byte header used by the file and IO system} (qLink: QElemPtr; {queue link in header} (qType: INTEGER; {type byte for safety check} (ioTrap: INTEGER; {FS: the Trap} (ioCmdAddr: Ptr; {FS: address to dispatch to} ({common header to all variants} (ioCompletion: ProcPtr; {completion routine addr (0 for synch calls)} (ioResult: OsErr; {result code} (ioNamePtr: StringPtr; {ptr to Vol:FileName string} (ioVRefNum: INTEGER; {volume refnum (DrvNum for Eject and MountVol)} ({different components for the different type of parameter blocks} (CASE ParamBlkType OF (ioParam: *(ioRefNum: INTEGER; {refNum for I/O operation} +ioVersNum: SignedByte; {version number} +ioPermssn: SignedByte; {Open: permissions (byte)} +ioMisc: Ptr; {Rename: new name} D{GetEOF,SetEOF: logical end of file} D{Open: optional ptr to buffer} D{SetFileType: new type} +ioBuffer: Ptr; {data buffer Ptr} +ioReqCount: LongInt; {requested byte count} +ioActCount: LongInt; {actual byte count completed} +ioPosMode: INTEGER; {initial file positioning} +ioPosOffset: LongInt); {file position offset} (FileParam: *(ioFRefNum: INTEGER; {reference number} +ioFVersNum: SignedByte; {version number} +filler1: SignedByte; +ioFDirIndex: INTEGER; {GetFileInfo directory index} +ioFlAttrib: SignedByte; {GetFileInfo: in-use bit=7, lock bit=0} +ioFlVersNum: SignedByte; {file version number} +ioFlFndrInfo: FInfo; {user info} +ioFlNum: LongInt; {GetFileInfo: file number} +ioFlStBlk: INTEGER; {start file block (0 if none)} +ioFlLgLen: LongInt; {logical length (EOF)} +ioFlPyLen: LongInt; {physical lenght} +ioFlRStBlk: INTEGER; {start block rsrc fork} +ioFlRLgLen: LongInt; {file logical length rsrc fork} +ioFlRPyLen: LongInt; {file physical length rsrc fork} +ioFlCrDat: LongInt; {file creation date & time (32 bits in secs)} +ioFlMdDat: LongInt); {last modified date and time} )VolumeParam: +(filler2: LongInt; ,ioVolIndex: INTEGER; {volume index number} ,ioVCrDate: LongInt; {creation date and time} ,ioVLsBkUp: LongInt; {last backup date and time} ,ioVAtrb: INTEGER; {volume attrib} ,ioVNmFls: INTEGER; {number of files in directory} ,ioVDirSt: INTEGER; {start block of file directory} ,ioVBlLn: INTEGER; {GetVolInfo: length of dir in blocks} ,ioVNmAlBlks: INTEGER; {GetVolInfo: num blks (of alloc size)} ,ioVAlBlkSiz: LongInt; {GetVolInfo: alloc blk byte size} ,ioVClpSiz: LongInt; {GetVolInfo: bytes to allocate at a time} ,ioAlBlSt: INTEGER; {starting disk(512-byte) block in block map} ,ioVNxtFNum: LongInt; {GetVolInfo: next free file number} ,ioVFrBlk: INTEGER); {GetVolInfo: # free alloc blks for this vol} *CntrlParam: ,(filler3: INTEGER; {refNum for I/O operation} -CSCode: INTEGER; {word for control status code} -CSParam: Ptr); {operation-defined parameters} &END; {ParamBlockRec} "ParmBlkPtr = ^ParamBlockRec; {20 bytes of system parameter area} "SysParmType = RECORD *Valid: LongInt; {high byte = validation field ($A7)} @{low 3 bytes = odometer} *PortA: INTEGER; {port A configuration} *PortB: INTEGER; {port B configuration} *Alarm: LongInt; {alarm time} *Font: INTEGER; {default font id} *KbdPrint: INTEGER; {high byte = kbd repeat} D{high nibble = thresh in 4/60ths} D{low nibble = rates in 2/60ths} @{low byte = print stuff} *VolClik: INTEGER; {low 3 bits of high byte = volume control} @{high nibble of low byte = double time in 4/60ths} @{low nibble of low byte = caret blink time in 4/60ths} *Misc: INTEGER; {EEEC EEEE PSKB FFHH} D{E = extra} D{P = paranoia level} D{S = mouse scaling} D{K = key click} D{B = boot disk} D{F = menu flash} D{H = help level} %END; {SysParmType} "SysPPtr = ^SysParmType; {volume control block data structure} VCB = RECORD $qLink: QElemPtr; {link to next element} $qType: INTEGER; {not used} $vcbFlags: INTEGER; $vcbSigWord: INTEGER; $vcbCrDate: LongInt; $vcbLsBkUp: LongInt; $vcbAtrb: INTEGER; $vcbNmFls: INTEGER; $vcbDirSt: INTEGER; $vcbBlLn: INTEGER; $vcbNmBlks: INTEGER; $vcbAlBlkSiz: LongInt; $vcbClpSIz: LongInt; $vcbAlBlSt: INTEGER; $vcbNxtFNum: LongInt; $vcbFreeBks: INTEGER; $vcbVN: STRING[27]; $vcbDrvNum: INTEGER; $vcbDRefNum: INTEGER; $vcbFSId: INTEGER; $vcbVRefNum: INTEGER; $vcbMAdr: Ptr; $vcbBufAdr: Ptr; $vcbMLen: INTEGER; $vcbDirIndex: INTEGER; $vcbDirBlk: INTEGER; END; {general queue data structure} QHdr = RECORD $QFlags: INTEGER; {misc flags} $QHead: QElemPtr; {first elem} $QTail: QElemPtr; {last elem} "END; {QHdr} QHdrPtr = ^QHdr; {there are currently 4 types of queues: } { VType - queue of Vertical Blanking Control Blocks } { IOQType - queue of I/0 queue elements } { DrvType - queue of drivers } { EvType - queue of Event Records } { FSQType - queue of VCB elements } { TimerType no longer is used. DrvType replaces it here in enum type} QTypes = (dummyType,vType,ioQType,drvQType,evType,fsQType); QElem = RECORD (CASE QTypes OF (vType: *(vblQelem: VBLTask); {vertical blanking} (ioQType: *(ioQElem: ParamBlockRec); {I/O parameter block} (drvQType: *(drvQElem: DrvQEl); {drive} (evType: *(evQElem: EvQEl); {event} (fsQType: *(vcbQElem: VCB); {volume control block} "END; {QElem} {device control entry} DCtlEntry = RECORD /DCtlDriver: Ptr; {ptr to ROM or handle to RAM driver} /DCtlFlags: INTEGER; {flags} /DCtlQHdr: QHdr; {driver's i/o queue} /DCtlPosition: LongInt; {byte pos used by read and write calls} /DCtlStorage: Handle; {hndl to RAM drivers private storage} /DCtlRefNum: INTEGER; {driver's reference number} /DCtlCurTicks: LongInt; {long counter for timing system task calls} /DCtlWindow: Ptr; {ptr to driver's window if any} /DCtlDelay: INTEGER; {number of ticks btwn sysTask calls} /DCtlEMask: INTEGER; {desk acessory event mask} /DCtlMenu: INTEGER; {menu ID of menu associated with driver} -END; {DCtlEntry} DCtlPtr = ^DCtlEntry; DCtlHandle = ^DCtlPtr; "{for Serial Driver} SerShk = PACKED RECORD {handshake control fields} 2fXOn: Byte; {XON flow control enabled flag} 2fCTS: Byte; {CTS flow control enabled flag} 2xon: Char; {XOn character} 2xoff: Char; {XOff character} 2errs: Byte; {errors mask bits} 2evts: Byte; {event enable mask bits} 2fInX: Byte; {Input flow control enabled flag} 2null: Byte; {unused} 0END; "{parameter block structure for file and IO routines} SerStaRec = PACKED RECORD 5cumErrs: Byte; {cumulative errors report} 5XOFFSent: Byte; {XOff Sent flag} 5rdPend: Byte; {read pending flag} 5wrPend: Byte; {write pending flag} 5ctsHold: Byte; {CTS flow control hold flag} 5XOFFHold: Byte; {XOff flow control hold flag} 3End; "{for Sound Driver} "{for 4-tone sound generation} "Wave = PACKED ARRAY[0..255] OF Byte; "WavePtr = ^Wave; "FTSoundRec = RECORD 2duration: INTEGER; 2sound1Rate: LongInt; 2sound1Phase: LongInt; 2sound2Rate: LongInt; 2sound2Phase: LongInt; 2sound3Rate: LongInt; 2sound3Phase: LongInt; 2sound4Rate: LongInt; 2sound4Phase: LongInt; 2sound1Wave: WavePtr; 2sound2Wave: WavePtr; 2sound3Wave: WavePtr; 2sound4Wave: WavePtr; 0END; "FTSndRecPtr = ^FTSoundRec; "FTSynthRec = RECORD 1mode: INTEGER; 1sndRec: FTSndRecPtr; /END; "FTSynthPtr = ^FTSynthRec; "Tone = RECORD +count: INTEGER; +amplitude: INTEGER; +duration: INTEGER; )END; "Tones = ARRAY[0..5000] OF Tone; "SWSynthRec = RECORD 1mode: INTEGER; 1triplets: Tones; /END; "SWSynthPtr = ^SWSynthRec; "freeWave = PACKED ARRAY[0..30000] OF Byte; "FFSynthRec = RECORD 1mode: INTEGER; 1count: Fixed; 1waveBytes: freeWave; /END; "FFSynthPtr = ^FFSynthRec; {for date and time} DateTimeRec = RECORD 0Year, {1904,1905,...} 0Month, {1,...,12 corresponding to Jan,...,Dec} 0Day, {1,...31} 0Hour, {0,...,23} 0Minute, {0,...,59} 0Second, {0,...,59} 0DayOfWeek: INTEGER; {1,...,7 corresponding to Sun,...,Sat} .END; {DateTimeRec} {for application parameter} appFile = RECORD 1vRefNum: INTEGER; 1ftype: OsType; 1versNum: INTEGER; {versNum in high byte} 1fName: str255; /END; {appFile} {for RAM serial driver} SPortSel = (SPortA,SPortB); {for Event Manager} FUNCTION PostEvent(eventNum: INTEGER; eventMsg: LongInt): OsErr; PROCEDURE FlushEvents(whichMask,stopMask: INTEGER); PROCEDURE SetEventMask(theMask: INTEGER); FUNCTION OSEventAvail(mask: INTEGER; VAR theEvent: EventRecord): BOOLEAN; FUNCTION GetOSEvent(mask: INTEGER; VAR theEvent: EventRecord): BOOLEAN; {OS utilities} FUNCTION HandToHand(VAR theHndl: Handle): OsErr; FUNCTION PtrToXHand(srcPtr: Ptr; dstHndl: Handle; size: LongInt): OsErr; FUNCTION PtrToHand(srcPtr: Ptr; VAR dstHndl: Handle; size: LongInt): OsErr; FUNCTION HandAndHand(hand1,hand2: Handle): OsErr; FUNCTION PtrAndHand(ptr1: Ptr; hand2: Handle; size: LongInt): OsErr; {from HEAPZONE.TEXT} PROCEDURE SetApplBase(startPtr: Ptr); PROCEDURE InitApplZone; PROCEDURE InitZone(growProc: ProcPtr; 3moreMasters: Integer; 3limitPtr,startPtr : Ptr); FUNCTION GetZone: THz; PROCEDURE SetZone(hz: THz); FUNCTION ApplicZone: THz; FUNCTION SystemZone: THz; FUNCTION CompactMem(cbNeeded: Size): Size; PROCEDURE PurgeMem(cbNeeded: Size); FUNCTION FreeMem: LongInt; PROCEDURE ResrvMem(cbNeeded: Size); FUNCTION MaxMem(Var grow: Size): Size; FUNCTION TopMem: Ptr; PROCEDURE SetGrowZone(growZone: ProcPtr); PROCEDURE SetApplLimit(zoneLimit: Ptr); FUNCTION NewPtr(byteCount: Size): Ptr; PROCEDURE DisposPtr(p: Ptr); FUNCTION GetPtrSize(p: Ptr): Size; PROCEDURE SetPtrSize(p: Ptr; newSize: Size); FUNCTION PtrZone(p: Ptr): THz; FUNCTION NewHandle(byteCount: Size): Handle; PROCEDURE DisposHandle(h: Handle); FUNCTION GetHandleSize(h: Handle): Size; PROCEDURE SetHandleSize(h: Handle; newSize: Size); FUNCTION HandleZone(h: Handle): THz; FUNCTION RecoverHandle(p: Ptr): Handle; PROCEDURE EmptyHandle(h: Handle); PROCEDURE ReAllocHandle(h: Handle; byteCount: Size); PROCEDURE HLock(h: Handle); PROCEDURE HUnLock(h: Handle); PROCEDURE HPurge(h: Handle); PROCEDURE HNoPurge(h: Handle); PROCEDURE MoreMasters; PROCEDURE BlockMove(srcPtr, destPtr: Ptr; byteCount: Size); FUNCTION MemError: OsErr; FUNCTION GZCritical: Boolean; FUNCTION GZSaveHnd: Handle; {interface for core routines pertaining to the vertical retrace mgr} {routines defined in VBLCORE.TEXT} FUNCTION VInstall(VBLTaskPtr: QElemPtr): OsErr; FUNCTION VRemove(VBLTaskPtr: QElemPtr): OsErr; {interface for Operating System Dispatcher} {routines defined in DISPATCH.TEXT} FUNCTION GetTrapAddress(trapNum: INTEGER): LongInt; PROCEDURE SetTrapAddress(trapAddr: LongInt; trapNum: INTEGER); {interface for utility core routines (defined in sysutil)} FUNCTION ReadParam(SysParams: SysPPtr; paramMask:LongInt):OsErr; FUNCTION WriteParam(SysParams: SysPPtr; paramMask: LongInt):OsErr; FUNCTION SetDateTime(time: LongInt):OsErr; FUNCTION ReadDateTime(VAR time: LongInt):OsErr; PROCEDURE SetTime(d: DateTimeRec); PROCEDURE GetTime(VAR d: DateTimeRec); PROCEDURE Date2Secs(d: DateTimeRec; VAR s: LongInt); PROCEDUR Secs2Date(s: LongInt; VAR d: DateTimeRec); PROCEDURE Delay(numTicks: LongInt; VAR finalTicks: LongInt); FUNCTION EqualString(str1,str2: Str255; caseSens,diacSens: BOOLEAN):BOOLEAN; PROCEDURE UprString(VAR theString: Str255; diacSens: BOOLEAN); FUNCTION InitUtil: OsErr; PROCEDURE UnLoadSeg(routineAddr: Ptr); INLINE $A9F1; PROCEDURE ExitToShell; INLINE $A9F4; PROCEDURE GetAppParms(VAR apName: str255; VAR apRefNum: INTEGER; 6VAR apParam: Handle); INLINE $A9F5; PROCEDURE CountAppFiles(VAR message: INTEGER; VAR count: INTEGER); PROCEDURE GetAppFiles(index: INTEGER; VAR theFile: AppFile); PROCEDURE ClrAppFiles(index: INTEGER); {queue routines - part of Macintosh core Utility routines} PROCEDURE InitQueue; PROCEDURE Enqueue(qElement: QElemPtr; qHeader: QHdrPtr); FUNCTION Dequeue(qElement: QElemPtr; qHeader: QHdrPtr): OsErr; FUNCTION GetFSQHdr: QHdrPtr; FUNCTION GetDrvQHdr: QHdrPtr; FUNCTION GetVCBQHdr: QHdrPtr; FUNCTION GetVBLQHdr: QHdrPtr; FUNCTION GetEvQHdr: QHdrPtr; FUNCTION GetDCtlEntry(refNum: INTEGER): DCtlHandle; {from MACIO.TEXT} FUNCTION PBOpen(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBClose(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBRead(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBWrite(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBControl(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBStatus(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBKillIO(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBGetVInfo(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBGetVol(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBSetVol(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBEject(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBOffLine(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBFlushVol(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBCreate(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBDelete(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBOpenRF(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBRename(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBGetFInfo(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBSetFInfo(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBSetFLock(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBRstFLock(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBSetFType(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBAllocate(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBGetEOF(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBSetEOF(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBGetFPos(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBSetFPos(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBFlushFile(paramBlock: ParmBlkPtr; aSync: BOOLEAN): OsErr; FUNCTION PBMountVol(paramBlock: ParmBlkPtr): OsErr; FUNCTION PBUnMountVol(paramBlock: ParmBlkPtr): OsErr; PROCEDURE AddDrive(drvrRefNum: INTEGER; drvNum: INTEGER; QEl: drvQElPtr); FUNCTION FSOpen(fileName: Str255; vRefNum: INTEGER; VAR refNum: INTEGER): OsErr; FUNCTION FSClose(refNum: INTEGER): OsErr; FUNCTION FSRead(refNum: INTEGER; VAR count: LongInt; buffPtr: Ptr): OsErr; FUNCTION FSWrite(refNum: INTEGER; VAR count: LongInt; buffPtr: Ptr): OsErr; FUNCTION Control(refNum: INTEGER; csCode: INTEGER; 4csParam: Ptr): OsErr; FUNCTION Status(refNum: INTEGER; csCode: INTEGER; 3csParam: Ptr): OsErr; FUNCTION KillIO(refNum: INTEGER): OsErr; {-volume level calls-} FUNCTION GetVInfo(drvNum: INTEGER; volName: StringPtr; VAR vRefNum: INTEGER; 1VAR FreeBytes: LongInt): OsErr; FUNCTION GetFInfo(fileName: Str255; vRefNum: INTEGER; 2VAR FndrInfo: FInfo):OsErr; FUNCTION GetVol(volName: StringPtr; VAR vRefNum: INTEGER):OsErr; FUNCTION SetVol(volName: StringPtr; vRefNum: INTEGER): OsErr; FUNCTION UnMountVol(volName: StringPtr; vRefNum: INTEGER):OsErr; FUNCTION Eject(volName: StringPtr; vRefNum: INTEGER): OsErr; FUNCTION FlushVol(volName: StringPtr; vRefNum: INTEGER):OsErr; {-file level calls for unopened files-} FUNCTION Create(fileName: Str255; vRefNum: INTEGER; creator: OSType; 0fileType: OSType):OsErr; FUNCTION FSDelete(fileName: Str255; vRefNum: INTEGER):OsErr; FUNCTION OpenRF(fileName: Str255; vRefNum: INTEGER; 0VAR refNum: INTEGER): OsErr; FUNCTION Rename(oldName: Str255; vRefNum: INTEGER; 0newName: Str255):OsErr; FUNCTION SetFInfo(fileName: Str255; vRefNum: INTEGER; 2FndrInfo: FInfo):OsErr; FUNCTION SetFLock(fileName: Str255; vRefNum: INTEGER):OsErr; FUNCTION RstFLock(fileName: Str255; vRefNum: INTEGER):OsErr; FUNCTION SetFType(fileName: Str255; oldVers: SignedByte; vRefNum: INTEGER; 4newVers: SignedByte):OsErr; {-file level calls for opened files-} FUNCTION Allocate(refNum: INTEGER; VAR count: LongInt):OsErr; FUNCTION GetEOF(refNum: INTEGER; VAR LogEOF: LongInt):OsErr; FUNCTION SetEOF(refNum: INTEGER; LogEOF: LongInt):OsErr; FUNCTION GetFPos(refNum: INTEGER; VAR filePos: LongInt):OsErr; FUNCTION SetFPos(refNum: INTEGER; posMode: INTEGER; posOff: LongInt):OsErr; FUNCTION FlushFile(refNum: INTEGER):OsErr; {Serial Driver Interface} FUNCTION DrvrInstall(name: Str255; drvrRefNum: INTEGER): OsErr; FUNCTION DrvrRemove(drvrRefNum: INTEGER): OsErr; FUNCTION OpenDriver(name: Str255): INTEGER; PROCEDURE CloseDriver(refNum: Integer); FUNCTION SerReset(refNum: INTEGER; serConfig: INTEGER): OSErr; FUNCTION SerSetBuf(refNum: INTEGER; serBPtr: Ptr; serBLen: INTEGER): OSErr; FUNCTION SerHShake(refNum: INTEGER; flags: SerShk): OSErr; FUNCTION SerSetBrk(refNum: INTEGER): OSErr; FUNCTION SerClrBrk(refNum: INTEGER): OSErr; FUNCTION SerGetBuf(refNum: INTEGER; VAR count: LongInt): OSErr; FUNCTION SerStatus(refNum: INTEGER; VAR serSta: SerStaRec): OSErr; FUNCTION RamSDOpen(whichPort: SPortSel; rsrcType: OsType; rsrcID: INTEGER): OSErr; PROCEDURE RamSDClose(whichPort: SPortSel); {for Sound Driver} PROCEDURE SysBeep(duration: INTEGER); PROCEDURE SetSoundVol(level: INTEGER); PROCEDURE GetSoundVol(VAR level: INTEGER); PROCEDURE StartSound(synthRec: Ptr; numBytes: LongInt; CompletionRtn: ProcPtr); PROCEDURE StopSound; FUNCTION SoundDone: BOOLEAN; {because of a bug with the way immediate control calls are handled SWSetLevel} {should not be used. Use SetSoundVol instead} {PROCEDURE SWSetLevel(ampl: INTEGER);} {for the system error handler} PROCEDURE SysError(errorCode: INTEGER); IMPLEMENTATION {for Event Manager} €SETAPPLB ‚SETAPPLBSETAPPLB‰SAVERETASAVERETA…"_ _ -Nø� €INITAPPL ‚INITAPPLINITAPPL‰SAVE SAVE … ,Nø�€INITZONE ‚INITZONEINITZONE‰SAVERETASAVERETA …"_ O ÞüNø�€GETZONE ‚GETZONE GETZONE ‰SAVE SAVE …¡/HNø� €SETZONE ‚SETZONE SETZONE ‰SAVERETASAVERETA…"_ _ Nø� €APPLICZO ‚APPLICZOAPPLICZO‰SAVE0 SAVE0 …/xªNø� €SYSTEMZO ‚SYSTEMZOSYSTEMZO‰SAVE0 SAVE0 …/x¦Nø� €COMPACTM ‚ERRORCODERRORCOD ‚SAVE SAVE ‚SAVE0RETSAVE0RET ‚COMPACTMCOMPACTM‚SAVERETASAVERETA‚SAVE0 SAVE0 …$"_  L.€`p/ Cúÿø2€Nup`ô�€PURGEMEM ‚PURGEMEMPURGEMEM‰SAVERETASAVERETA…"_  MNø� €FREEMEM ‚FREEMEM FREEMEM ‰SAVE0 SAVE0 … /@Nø� €RESRVMEM ‚RESRVMEMRESRVMEM‰SAVERETASAVERETA…"_  @Nø� €MAXMEM ‚MAXMEM MAXMEM ‰SAVE0RETSAVE0RET…"_¡" _ �.€Nø�€TOPMEM ‚TOPMEM TOPMEM ‰SAVE0 SAVE0 …/xNø� €SETGROWZ ‚SETGROWZSETGROWZ‰SAVERETASAVERETA…"_ _ KNø� €SETAPPLL ‚SETAPPLLSETAPPLL‰SAVERETASAVERETA…"_ _ -Nø� €NEWPTR ‚NEWPTR NEWPTR ‰SAVERETASAVERETA …"_ ¡.ˆNø� €DISPOSPT ‚DISPOSPTDISPOSPT‰SAVERETASAVERETA…"_ _ Nø� €GETPTRSI ‚GETPTRSIGETPTRSI‰SAVE0RETSAVE0RET‰SAVERETASAVERETA…"_ _ !.€jB—NøNø�€SETPTRSI ‚SETPTRSISETPTRSI‰SAVERETASAVERETA …"_  _  Nø� €PTRZONE ‚PTRZONE PTRZONE ‰SAVERETASAVERETA …"_ _¡H.ˆNø� €NEWHANDL ‚NEWHANDLNEWHANDL‰SAVERETASAVERETA …"_ ¡".ˆNø� €DISPOSHA ‚DISPOSHADISPOSHA‰SAVERETASAVERETA…"_ _ #Nø� €GETHANDL ‚GETHANDLGETHANDL‰SAVE0RETSAVE0RET‰SAVERETASAVERETA…"_ _ %.€jB—NøNø�€SETHANDL ‚SETHANDLSETHANDL‰SAVERETASAVERETA …"_  _ $Nø� €HANDLEZO ‚HANDLEZOHANDLEZO‰SAVERETASAVERETA …"_ _¡&.ˆNø� €RECOVERH ‚RECOVERHRECOVERH‰SAVE0RETSAVE0RET …"_ _¡(.ˆNø� €EMPTYHAN ‚EMPTYHANEMPTYHAN‰SAVERETASAVERETA…"_ _ +Nø� €REALLOCH ‚REALLOCHREALLOCH‰SAVERETASAVERETA …"_  _ 'Nø� €HLOCK ‚HLOCK HLOCK ‰SAVERETASAVERETA…"_ _ )Nø� €HUNLOCK ‚HUNLOCK HUNLOCK ‰SAVERETASAVERETA…"_ _ *Nø� €HPURGE ‚HPURGE HPURGE ‰SAVERETASAVERETA…"_ _ INø� €HNOPURGE ‚HNOPURGEHNOPURGE‰SAVERETASAVERETA…"_ _ JNø� €MOREMAST ‚MOREMASTMOREMAST‰SAVE SAVE … 6Nø�€BLOCKMOV ‚BLOCKMOVBLOCKMOV‰SAVERETASAVERETA…" "_ _ ."ANø�€MEMERROR ‚MEMERRORMEMERROR‰ERRORCODERRORCOD…?xNu�€GZSAVEHN ‚GZSAVEHNGZSAVEHN…/x(Nu�€GZCRITIC ‚GZCRITICGZCRITIC…"_BW 80g°¸(f>¼NÑ�€VINSTALL ‚VINSTALLVINSTALL…"_ _/  3?@Nu�€VREMOVE ‚VREMOVE VREMOVE …"_ _/  4?@Nu�€DRVRINST ‚DRVRINSTDRVRINST…0/ o = _\O>€NÐ�€DRVRREMO ‚DRVRREMODRVRREMO…0/ > _TO>€NÐ�€OPENDRIV ‚OPENDRIVOPENDRIV…6 opBgQÈÿü/HB/ O f0/Þü2?@.ŸNup`ð�.€CLOSEDRI ‚CLOSEDRICLOSEDRI…"0/žü?@ O Þü _TONÐ�€SERRESET ‚SERRESETSERRESET…0NVÿÎAîÿÎ1n 1|1n =@ N^"_XONÑ�(€SERSETBU ‚SERSETBUSERSETBU…6NVÿÎAîÿÎ1n1| !n 1n  =@N^"_PONÑ�.€SERHSHAK ‚SERHSHAKSERHSHAK…6NVÿÎAîÿÎ1n 1| "n!Y!Q  =@N^"_\ONÑ�.€SERSETBR ‚SERSETBRSERSETBR‚SETCLR SETCLR …,0< NVÿÎAîÿÎ1n1@ =@ N^"_TONÑ�$€SERCLRBR ‚SERCLRBRSERCLRBR‰SETCLR SETCLR …0< Nø�€SERGETBU ‚SERGETBUSERGETBU…2NVÿÎAîÿÎ1n 1| =@"n"¨N^"_\ONÑ�*€SERSTATU ‚SERSTATUSERSTATU…6NVÿÎAîÿÎ1n 1| =@"n"è2¨ N^"_\ONÑ�.€RAMSDOPE ‚RAMSDOPERAMSDOPE‚RAMSDCLORAMSDCLOÚ…NVÿÎHç?8Bn(:üf YO/. ?.© &g°©’&CÓAúÜ ‹&zÖ&SAîÿÎ.a a8fL"Úp .Jg Eú¬0:tr0` Eú˜0:dB�R@D@å@ xv"p"Q$Ñ$ Ô�‚ÿÿÿ"‚X@�QËÿâtAîÿÎJ.gCú`Cú !IBhB( fBAÒÁQÊÿèLßüN^ _PONÐ=|ÿé`ìNVÿÎHç?8AîÿÎ.avJg:g^Aú0:Ð`: gNAúð0:¼"xvR@D@å@$q$R$˜X@QËÿôaR$™ÁIp .AúÖCúÓJgÁIBJf z¾ #Aú¸B�LßüN^ _TONÐJgCúf`Cú\1Y 1Q Nu/ B@Eø¾Aø²Jg IúCúR`IútCú4PŠÑüÔJ@(_Nu.AIn.AOut.BIn.BOutÿúÿùÿøÿ÷�€READPARA ‚READPARAREADPARA…"_  _/  7?@Nu�€GETTRAPA ‚GETTRAPAGETTRAPA…"_0/ ¡F/HNu�€SETTRAPA ‚SETTRAPASETTRAPA…"_0 _/  GNu� €WRITEPAR ‚WRITEPARWRITEPAR…"_  _/  8?@Nu�€READDATE ‚READDATEREADDATE…"_ _/  9?@Nu�€SETDATET ‚SETDATETSETDATET… _ / :?@Nu�€SETTIME ‚SETTIME SETTIME … o©Ç :LßNÐ�€GETTIME ‚GETTIME GETTIME …p o 9 ©Æ.ŸNu�€DATE2SEC ‚DATE2SECDATE2SEC… o©ÇLß € ANÐ�€SECS2DAT ‚SECS2DATSECS2DAT…Lß/ ©ÆNu� €DELAY ‚DELAY DELAY … "_ _/ ;"€Nu�€EQUALSTR ‚EQUALSTREQUALSTR…PNV n"n pH@J.gJ. g <` <` J. g <` < @N^ _ßü NÐ�H€UPRSTRIN ‚UPRSTRINUPRSTRIN… "_ _p/ Jg T` TNu�€INITUTIL ‚INITUTILINITUTIL… ??@Nu�€INITQUEU ‚INITQUEUINITQUEU… _"_ NÐ�€ENQUEUE ‚ENQUEUE ENQUEUE …"o o©o _PONÐ�€DEQUEUE ‚DEQUEUE DEQUEUE …"o o©n?@ _PONÐ�€GETFSQHD ‚GETFSQHDGETFSQHD…/|`Nu� €GETDRVQH ‚GETDRVQHGETDRVQH…/|Nu� €GETVCBQH ‚GETVCBQHGETVCBQH…/|VNu� €GETVBLQH ‚GETVBLQHGETVBLQH…/|`Nu� €GETEVQHD ‚GETEVQHDGETEVQHD…/|JNu� €GETDCTLE ‚GETDCTLEGETDCTLE…,NVÿÎAîÿÎ1n1| -h N^ _TONÐ�$€PBOPEN ‚PBOPEN PBOPEN …"_0 _f `¤>€NÑ�€PBCLOSE ‚PBCLOSE PBCLOSE …"_0 _f `¤>€NÑ�€PBREAD ‚PBREAD PBREAD …"_0 _f `¤>€NÑ�€PBWRITE ‚PBWRITE PBWRITE …"_0 _f `¤>€NÑ�€PBCONTRO ‚PBCONTROPBCONTRO…"_0 _f `¤>€NÑ�€PBSTATUS ‚PBSTATUSPBSTATUS…"_0 _f `¤>€NÑ�€PBKILLIO ‚PBKILLIOPBKILLIO…"_0 _f `¤>€NÑ�€PBGETVIN ‚PBGETVINPBGETVIN…"_0 _f `¤>€NÑ�€PBGETVOL ‚PBGETVOLPBGETVOL…"_0 _f `¤>€NÑ�€PBSETVOL ‚PBSETVOLPBSETVOL…"_0 _f `¤>€NÑ�€PBEJECT ‚PBEJECT PBEJECT …"_0 _f `¤>€NÑ�€PBOFFLIN ‚PBOFFLINPBOFFLIN…"_0 _f 5`¤5>€NÑ�€PBFLUSHV ‚PBFLUSHVPBFLUSHV…"_0 _f `¤>€NÑ�€PBCREATE ‚PBCREATEPBCREATE…"_0 _f `¤>€NÑ�€PBDELETE ‚PBDELETEPBDELETE…"_0 _f  `¤ >€NÑ�€PBOPENRF ‚PBOPENRFPBOPENRF…"_0 _f  `¤ >€NÑ�€PBRENAME ‚PBRENAMEPBRENAME…"_0 _f  `¤ >€NÑ�€PBGETFIN ‚PBGETFINPBGETFIN…"_0 _f  `¤ >€NÑ�€PBSETFIN ‚PBSETFINPBSETFIN…"_0 _f  `¤ >€NÑ�€PBSETFLO ‚PBSETFLOPBSETFLO…"_0 _f A`¤A>€NÑ�€PBRSTFLO ‚PBRSTFLOPBRSTFLO…"_0 _f B`¤B>€NÑ�€PBSETFTY ‚PBSETFTYPBSETFTY…"_0 _f C`¤C>€NÑ�€PBALLOCA ‚PBALLOCAPBALLOCA…"_0 _f `¤>€NÑ�€PBGETEOF ‚PBGETEOFPBGETEOF…"_0 _f `¤>€NÑ�€PBSETEOF ‚PBSETEOFPBSETEOF…"_0 _f `¤>€NÑ�€PBGETFPO ‚PBGETFPOPBGETFPO…"_0 _f `¤>€NÑ�€PBSETFPO ‚PBSETFPOPBSETFPO…"_0 _f D`¤D>€NÑ�€PBFLUSHF ‚PBFLUSHFPBFLUSHF…"_0 _f E`¤E>€NÑ�€PBMOUNTV ‚PBMOUNTVPBMOUNTV…"_ _ >€NÑ� €PBUNMOUN ‚PBUNMOUNPBUNMOUN…"_ _ >€NÑ� €ADDDRIVE ‚ADDDRIVEADDDRIVE…"_ _0H@0 NNÑ�€FSOPEN ‚FSOPEN FSOPEN …BNVÿÎAîÿÎ!n1n B(B(B¨ "n2¨=@N^ _ßü NÐ�:€FSCLOSE ‚FSCLOSE FSCLOSE …$NVÿÎAîÿÎ1n =@ N^ _T�NÐ�€FSREAD ‚FSREAD FSREAD ‚FSWRITE FSWRITE …TQÁ`PÁNVÿÎAîÿÎ!n 1n"n !Q$Bh,B¨.Jf ` =@"n "¨(N^"_ßü NÑ�L€CONTROL ‚CONTROL CONTROL …@NVÿÎAîÿÎ1n1n J®gCè np .AîÿΠ=@N^"_P�NÑ�8€STATUS ‚STATUS STATUS …6NVÿÎAîÿÎ1n1n  =@Aîÿê"np .N^"_P�NÑ�.€KILLIO ‚KILLIO KILLIO …$NVÿàAîÿà1n =@ N^"_T�NÑ�€GETVINFO ‚GETVINFOGETVINFO…PNVÿÀAîÿÀ!n1nBh =@"n 2¨ (0à€â€Àè>ã€á€"n"€N^"_ßüNÑ�H€GETFINFO ‚GETFINFOGETFINFO…DNVÿ°Aîÿ°!n1n B(Bh  =@Aè "n0< .N^"_ßü NÑ�<€GETVOL ‚GETVOL GETVOL …,NVÿÀAîÿÀ!n  =@"n2¨N^"_P�NÑ�$€SETVOL ‚SETVOL SETVOL …*NVÿÀAîÿÀ!n 1n =@N^"_\�NÑ�"€UNMOUNTV ‚UNMOUNTVUNMOUNTV…*NVÿÀAîÿÀ1n!n  =@N^"_\�NÑ�"€EJECT ‚EJECT EJECT …*NVÿÀAîÿÀ1n!n  =@N^"_\�NÑ�"€FLUSHVOL ‚FLUSHVOLFLUSHVOL…*NVÿÀAîÿÀ1n!n  =@N^"_\�NÑ�"€CREATE ‚CREATE CREATE …LNVÿ°Aîÿ°!n1nB( J@fBh  Cè "î"®   =@N^"_ßüNÑ�D€FSDELETE ‚FSDELETEFSDELETE….NVÿÎAîÿÎ!n 1nB(  =@N^"_\�NÑ�&€OPENRF ‚OPENRF OPENRF …:NVÿÎAîÿÎ!n1n B(  =@"n2¨N^"_ßü NÑ�2€RENAME ‚RENAME RENAME …8NVÿÎAîÿÎ!n1n B(!n  =@N^"_ßü NÑ�0€SETFINFO ‚SETFINFOSETFINFO…JNVÿ°Aîÿ°!n1n B(Bh  Cè n0< .Aîÿ°  =@N^"_ßü NÑ�B€SETFLOCK ‚SETFLOCKSETFLOCK….NVÿÎAîÿÎ!n 1nB( A=@N^"_\�NÑ�&€RSTFLOCK ‚RSTFLOCKRSTFLOCK….NVÿÎAîÿÎ!n 1nB( B=@N^"_\�NÑ�&€SETFTYPE ‚SETFTYPESETFTYPE…:NVÿÎAîÿÎ!n1n n n C=@N^"_ßü NÑ�2€ALLOCATE ‚ALLOCATEALLOCATE…0NVÿÎAîÿÎ"n!Q$1n  =@"¨(N^"_\�NÑ�(€GETEOF ‚GETEOF GETEOF …,NVÿÎAîÿÎ1n  =@"n"¨N^"_\�NÑ�$€SETEOF ‚SETEOF SETEOF …*NVÿÎAîÿÎ1n !n =@N^"_\�NÑ�"€GETFPOS ‚GETFPOS GETFPOS …,NVÿÎAîÿÎ1n  =@"n"¨.N^"_\�NÑ�$€SETFPOS ‚SETFPOS SETFPOS …0NVÿÎAîÿÎ1n1n ,!n. D=@N^"_P�NÑ�(€FLUSHFIL ‚FLUSHFILFLUSHFIL…$NVÿÎAîÿÎ1n E=@ N^"_T�NÑ�€POSTEVEN ‚POSTEVENPOSTEVEN…"_ 0_/  /?@Nu�€FLUSHEVE ‚FLUSHEVEFLUSHEVE…"_ /  2Nu� €SETEVENT ‚SETEVENTSETEVENT…"_1ßDNÑ�€OSEVENTA ‚OSEVENTAOSEVENTA…$"_ _0/  0J@gB/`|Nu�€GETOSEVE ‚GETOSEVEGETOSEVE…$"_ _0/  1J@gB/`|Nu�€SETSOUND ‚SETSOUNDSETSOUND…X _0/ 9ÿ@ g"@ç|9ïÿþAø@À`‚@ÁïÿþNs@À`ãH9üÝ�ñ‚ÁüÝ�Nu�P€GETSOUND ‚GETSOUNDGETSOUND… _"_B¸`NÐ� €STARTSOU ‚SNDQUEUESNDQUEUE$‚MYCOMPLEMYCOMPLE„‚STARTSOUSTARTSOU‚MYPBLOCKMYPBLOCKò…0AúðJhg@"/f0 :f ¡"Cú"ˆgX zþ %"@  $J@fF"PÓÁAïp  .`80(nú!o$!o 1|ÿüB¨ "/g `!ACú!I ¤"_Þü NÑHçààAúh"(g"AN‘CúŒJ‘gNEúR z€ % P"H%X%X$%X 5|ÿü@ g" . zZ  $` zP #AúJB�AúCúÿ !I ¤LßNu�(€SOUNDDON ‚SOUNDDONSOUNDDON‰MYPBLOCKMYPBLOCK…AøBoJhfR/Nu�€STOPSOUN ‚STOPSOUNSTOPSOUN‰SNDQUEUESNDQUEUE$‰MYPBLOCKMYPBLOCK…4NVÿàAîÿà1|ÿü¢AøBh 8g @ #AøB�N^Nu�,€SYSBEEP ‚SYSBEEP SYSBEEP …?/©È _TONÐ� €COUNTAPP ‚COUNTAPPCOUNTAPP…*"oBQ x ì %o P"o2˜"o2� _PONÐ�"€GETAPPFI ‚GETAPPFIGETAPPFI…LHç0"o B© x ì %o&$PTJ2/²ZnSAm JpÐ(@ÿþP@ÔÀ .SA`èLß _\ONÐ�D€CLRAPPFI ‚CLRAPPFICLRAPPFI…> x ì %o( PTH2/²XnSAmgpÐ(@ÿþP@ÐÀSA`êB¨ _TONÐ�6€SYSERROR ‚SYSERRORSYSERROR… _0©É©ÿ�’PACKINTF  { Jan 28, 1984. Rony Sebok Interface for Macintosh packages } { Modification history: } { 11 Apr 84 JTC Modified a la Rose. } { Copyright 1982 by Apple Computer, Inc. All Rights Reserved. } INTERFACE USES {$U-} ({$U obj/MemTypes } MemTypes, ({$U obj/QuickDraw } QuickDraw, ({$U Obj/OsIntf } OsIntf, ({$U obj/toolIntf } ToolIntf; CONST {constants for Standard File package} "putDlgID = -3999; {SFPutFile dialog template ID} "putSave = 1; {save button} "putCancel = 2; {cancel button} "putEject = 5; {eject button} "putDrive = 6; {drive button} "putName = 7; {editTExt item for file name} "getDlgID = -4000; {SFGetFile dialog template ID} "getOpen = 1; {open button} "getCancel = 3; {cancel button} "getEject = 5; {eject button} "getDrive = 6; {drive button} "getNmList = 7; {userItem for file name list} "getScroll = 8; {userItem for scroll bar} {constants for manipulation of international resources} "{masks used for setting and testing currency format flags} "currLeadingZ = 128; {set if leading zero} "currTrailingZ = 64; {set if trailing zero} "currNegSym = 32; {set if minus sign for negative num, reset if parentheses} "currSymLead = 16; {set if currency symbol leads, reset if trails} "{constants specifying absolute value of short date form} "MDY = 0; {month,day,year} "DMY = 1; {day,month,year} "YMD = 2; {year,month,day} "{masks used for date element format flags} "century = 128; {set if century, reset if no century} "mntLdingZ = 64; {set if leading 0 for month} "dayLdingZ = 32; {set if leading zero for day} "{masks used for time element format flags} "hrLeadingZ = 128; {set if leading zero for hours} "minLeadingZ = 64; {set if leading zero for minutes} "secLeadingZ = 32; {set if leading zero for seconds} "{country codes for version numbers} "verUS = 0; "verFrance = 1; "verBritain = 2; "verGermany = 3; "verItaly = 4; TYPE {Standard File} SFReply = RECORD ,good: BOOLEAN; {ignore command if FALSE} ,copy: BOOLEAN; {not used} ,fType: OsType; {file type or not used} ,vRefNum: INTEGER; {volume reference number} ,version: INTEGER; {file's version number} ,fName: String[63]; {file name} *END; {SFReply} SFTypeList = ARRAY[0..3] OF OSType; {interface for international resources} intl0Hndl = ^intl0Ptr; intl0Ptr = ^intl0REc; intl0Rec = PACKED RECORD $decimalPt: char; {ASCII character for decimal point} $thousSep: char; {ASCII character for thousand separator} $listSep: char; {ASCII character for list separator} $currSym1: char; {ASCII for currency symbol (3 bytes long)} $currSym2: char; $currSym3: char; $currFmt: Byte; {currency format flags} $dateOrder: Byte; {short date form - DMY,YMD, or MDY} $shrtDateFmt: Byte; {date elements format flag} $dateSep: char; {ASCII for date separator} $timeCycle: Byte; {indicates 12 or 24 hr cycle} $timeFmt: Byte; {time elements format flags} $mornStr: PACKED ARRAY[1..4] OF char; {ASCII for trailing string from 0:00 to 11:59} $eveStr: PACKED ARRAY[1..4] OF char; {ASCII for trailing string from 12:00 to 23:59} $timeSep: char; {ASCII for the time separator} $time1Suff: char; {suffix string used in 24 hr mode} $time2Suff: char; {8 characters long} $time3Suff: char; $time4Suff: char; $time5Suff: char; $time6Suff: char; $time7Suff: char; $time8Suff: char; $metricSys: Byte; {indicates metric or English system} $intl0Vers: INTEGER; {version: high byte = country, low byte = vers} "END; {intl0Rec} DateForm = (shortDate, longDate, abbrevDate); intl1Hndl = ^intl1Ptr; intl1Ptr = ^intl1REc; intl1Rec = PACKED RECORD $days: ARRAY[1..7] OF String[15]; {length and word for Sunday through Monday} $months: ARRAY[1..12] OF String[15]; {length and word for January to December} $suppressDay: Byte; {0 for day of week, 255 for no day of week} $lngDateFmt: Byte; {expanded date format 0 or 255} $dayLeading0: Byte; {255 for leading 0, 0 for no leading 0} $abbrLen: Byte; {length of abbreviated names in long form} $st0: PACKED ARRAY[1..4] OF char; {the string st0} $st1: PACKED ARRAY[1..4] OF char; {the string st1} $st2: PACKED ARRAY[1..4] OF char; {the string st2} $st3: PACKED ARRAY[1..4] OF char; {the string st3} $st4: PACKED ARRAY[1..4] OF char; {the string st4} $intl1Vers: INTEGER; {version word} $localRtn: INTEGER; {routine for localizing mag comp; } H{minimal case is $4E75 for RTS, but } H{routine may be longer than one integer.} "END; {intl1Rec} {Standard File} PROCEDURE SFPutFile(where: Point; prompt: Str255; origName: Str255; 4dlgHook: ProcPtr; VAR reply: SFReply); PROCEDURE SFPPutFile(where: Point; prompt: Str255; origName: Str255; 5dlgHook: ProcPtr; VAR reply: SFReply; dlgID: INTEGER; 5filterProc: ProcPtr); PROCEDURE SFGetFile(where: Point; prompt: Str255; fileFilter: ProcPtr; 4numTypes: INTEGER; typeList: SFTypeList; dlgHook: ProcPtr; 4VAR reply: SFReply); PROCEDURE SFPGetFile(where: Point; prompt: Str255; fileFilter: ProcPtr; 5numTypes: INTEGER; typeList: SFTypeList; dlgHook: ProcPtr; 5VAR reply: SFReply; dlgID: INTEGER; filterProc: ProcPtr); {interface to Disk Initialization Package} PROCEDURE DILoad; PROCEDURE DIUnLoad; FUNCTION DIBadMount(where: Point; evtMessage: LongInt): INTEGER; FUNCTION DIFormat(drvNum: INTEGER): OsErr; FUNCTION DIVerify(drvNum: INTEGER): OsErr; FUNCTION DIZero(drvNum: INTEGER; volName: Str255): OsErr; {interface to International Utilities} FUNCTION IUGetIntl(theID: INTEGER): Handle; PROCEDURE IUSetIntl(refNum: INTEGER; theID: INTEGER; intlParam: Handle); PROCEDURE IUDateString(dateTime: LongInt; longFlag: DateForm; VAR result: Str255); PROCEDURE IUDatePString(dateTime: LongInt; longFlag: DateForm; VAR result: Str255; 5intlParam: Handle); PROCEDURE IUTimeString(dateTime: LongInt; wantSeconds: BOOLEAN; VAR result: Str255); PROCEDURE IUTimePString(dateTime: LongInt; wantSeconds: BOOLEAN; VAR result: Str255; 5intlParam: Handle); FUNCTION IUMetric: BOOLEAN; FUNCTION IUCompString(aStr,bStr: Str255): INTEGER; FUNCTION IUEqualString(aStr,bStr: Str255): INTEGER; FUNCTION IUMagString(aPtr,bPtr: Ptr; aLen,bLen: INTEGER): INTEGER; FUNCTION IUMagIDString(aPtr,bPtr: Ptr; aLen,bLen: INTEGER):INTEGER; {interface to Binary-Decimal Conversion} PROCEDURE StringToNum(theString: Str255; VAR theNum: LongInt); PROCEDURE NumToString(theNum: LongInt; VAR theString: Str255); IMPLEMENTATION €SFPUTFIL ‚GOPACK GOPACK ‚SFPUTFILSFPUTFIL…t _?/­ê� €SFPPUTFI ‚SFPPUTFISFPPUTFI‰GOPACK GOPACK …tNø�€SFGETFIL ‚SFGETFILSFGETFIL‰GOPACK GOPACK …tNø�€SFPGETFI ‚SFPGETFISFPGETFI‰GOPACK GOPACK …tNø�€DILOAD ‚GODI GODI ‚DILOAD DILOAD …t _?/­é� €DIUNLOAD ‚DIUNLOADDIUNLOAD‰GODI GODI …tNø�€DIBADMOU ‚DIBADMOUDIBADMOU‰GODI GODI …tNø�€DIFORMAT ‚DIFORMATDIFORMAT‰GODI GODI …tNø�€DIVERIFY ‚DIVERIFYDIVERIFY‰GODI GODI …4<Nø�€DIZERO ‚DIZERO DIZERO ‰GODI GODI …4< Nø�€IUGETINT ‚GOINTL GOINTL ‚IUGETINTIUGETINT…t _?/­í� €IUSETINT ‚IUSETINTIUSETINT‰GOINTL GOINTL …tNø�€IUDATEST ‚IUDATESTIUDATEST‰GOINTL GOINTL …tNø�€IUDATEPS ‚IUDATEPSIUDATEPS‰GOINTL GOINTL …tNø�€IUTIMEST ‚IUTIMESTIUTIMEST‰GOINTL GOINTL …tNø�€IUTIMEPS ‚IUTIMEPSIUTIMEPS‰GOINTL GOINTL …tNø�€IUMETRIC ‚IUMETRICIUMETRIC‰GOINTL GOINTL …tNø�€IUMAGSTR ‚IUMAGSTRIUMAGSTR‰GOMAG GOMAG …4< Nø�€IUMAGIDS ‚IUMAGIDSIUMAGIDS‚GOMAG GOMAG …4< _?/­í� €IUCOMPST ‚IUCOMPSTIUCOMPST‰GOPMAG GOPMAG …4< Nø�€IUEQUALS ‚GOPMAG GOPMAG ‚IUEQUALSIUEQUALS…04< "o oB@BA/H/I _???/­í�(€STRINGTO ‚STRINGTOSTRINGTO‰EXIT8 EXIT8 … o?<©î o €Nø�€NUMTOSTR ‚EXIT8 EXIT8 ‚NUMTOSTRNUMTOSTR… o /Bg©î _PONÐ�€UPRLINK ‚PRPICFILPRPICFIL’‚PRJOBMERPRJOBMERˆ‚PRCLOSEPPRCLOSEP.‚PRHACK PRHACK F‚UPRLINK UPRLINK ‚PRVALIDAPRVALIDA€‚PRCLOSEDPRCLOSED‚PRJOBINIPRJOBINIp‚PRJOBDIAPRJOBDIA`‚PRSETERRPRSETERR²‚PROPENPAPROPENPA&‚PRCLOSE PRCLOSE b‚PROPENDOPROPENDO‚PRCFGDIAPRCFGDIA<‚PRDLGMAIPRDLGMAIx‚PRSTLDIAPRSTLDIAX‚PRCTLCALPRCTLCAL.‚PRDRVROPPRDRVROPø‚PROPEN PROPEN Z‚PRDRVRCLPRDRVRCL‚PRERROR PRERROR ª‚PRINTDEFPRINTDEFP‚PRSTLINIPRSTLINIh… o PpÀ(DrüÃ8 F�8 F"< `"<€`"<`"< pÀ8 F`^"<€p`T"< €p`J"<€`6"<€`."<€`&"< `"<`"<€`"<€`"<€p`"<€pAúPHÐ(&_Y�/‚NÑ.Print $"OXIpBgQÈÿüAúÿè/H?|ÿý O/NuaÜ r`²aÔ1| $("<`œYOaæ _ P(H€?@Nuaª!Y$!Y !Y1Y r`ÿpYO/JoïöNVÿö n CîÿöJ"Ø"Ø2�Hnÿö/.NºN^ _PONÐÁDDX �6€SUBS ‚SUBS SUBS ‰SUBSXXX SUBSXXX ….JoðNVHn /.NºN^ _PONÐÓUBS �&€SUBX ‚SUBX SUBX ‰SUBXXXX SUBXXXX "…>JoïöNVÿö n CîÿöJ"Ø"Ø2�Hnÿö/.NºN^ _PONÐÓUBX �6€MULS ‚MULS MULS ‰MULSXXX MULSXXX ….JoðNVHn /.NºN^ _PONÐÍULS �&€DIVS ‚DIVS DIVS ‰DIVSXXX DIVSXXX ….JoðNVHn /.NºN^ _PONÐÄIVS �&€I2X ‚I2X I2X ‰I2XXXX I2XXXX ….JoðNVHn /.NºN^ _\ONÐÉ2X �&€S2X ‚S2X S2X ‰S2XXXX S2XXXX ….JoðNVHn /.NºN^ _PONÐÓ2X �&€L2X ‚L2X L2X ‰L2XXXX L2XXXX ….JoðNVHn /.NºN^ _PONÐÌ2X �&€S2DEC ‚S2DEC S2DEC ‰S2DECXXXS2DECXXX…4JoðNVHnHn /.NºN^ _Þü NÐÓ2DEC �,€D2DEC ‚D2DEC D2DEC ‰D2DECXXXD2DECXXX$…BJoïøNVÿø n CîÿøJ"Ø"ØHnHnÿø/.NºN^ _Þü NÐÄ2DEC �:€C2DEC ‚C2DEC C2DEC ‰C2DECXXXC2DECXXX$…BJoïøNVÿø n CîÿøJ"Ø"ØHnHnÿø/.NºN^ _Þü NÐÃ2DEC �:€X2DEC ‚X2DEC X2DEC ‰X2DECXXXX2DECXXX&…DJoïöNVÿö n CîÿöJ"Ø"Ø2�HnHnÿö/.NºN^ _Þü NÐØ2DEC �<€INT2STR ‚$4100000INT2STR ‰%_CAT %_CAT ®‰%_INS %_INS ‚‰%_SRCHK %_SRCHK ¾D…êJoïªNVÿª/>.JGl D@>=|1ÿüp"HÁƒü HAJAÒ|0�ü n Cîÿü?<PNºp ÙS@nú0‘ HÀ�ü >JGg2p"HÁƒü HAJAÒ|0�üHnÿü/. ?<Nº HÀ�ü >`ÊJnl4 n /HzB/. Hnÿª?<Nº _Cîÿª?<PNºp ÙS@nú0‘.N^ _Þü NÐÉNT2STR -�â€DEC2STR ‚$3100000DEC2STR ‰%_INS %_INS d,l‰%_DEL %_DEL žL‰%_COPY %_COPY ôÒ‰,%_SRCHK %_SRCHK PÆŽ&èªjÌøv‰*%_CAT %_CAT @¶~ØšZ¼èf‰$4100000INT2STR 8…®JoêªNVú¦Hç(n &nJg n0¼-` n0¼ pBA4A0gAgfA g@[Ag^`� n//.HzHHnÿ?<Nº _Cîÿ?<PNºp ÙS@nú0‘`ØJg nCú Ù0‘` nCúø Ù0‘`¶ n//.HzÜ/Hl?<,@ÿS@?HnþðNº _HnþðHz²Hnþ†?<Nº _Cîþ†?<PNºp ÙS@nú0‘ n@ÿS@> nB@0p @0WÀ G ^ÁÀgSG`â/. R@? n@ÿ�GS@?Nº n@ÿ @ oHz,/.?< Nº~ nB@0p @0WÀ G ]ÁÀgRG`â/.?< ]@?Nº`º n//.HzÔHnþ.?<Nº _Cîþ.?<PNºp ÙS@nú0‘`‚JfšHl?<?+HnþNºAîþ?<PNºCîÿZp"ØS@nú2�0+ÐlS@>HzbHnÿZ?<Nº?Hnÿ¬/Nº n//.HnÿZHz6Hnÿ¬Hný&?<Nº _Cîý&?<PNºp ÙS@nú0‘`äJlm¶ n//.HlHnüÀ?<Nº _CîüÀ?<PNºp ÙS@nú0‘=lú¨~`8 n//.Hz²Hnün?<Nº _Cîün?<PNºp ÙS@nú0‘RGi¾nú¨o n//.HzrHnü?<Nº _Cîü?<PNºp ÙS@nú0‘`(0,D@,Aÿ²@oVHz0Hl,@ÿ2,Ò@RA?Nº n//.HlHnû¶?<Nº _Cîû¶?<PNºp ÙS@nú0‘`À n//.HzÌHnûb?<Nº _Cîûb?<PNºp ÙS@nú0‘,@ÿ2,Ò@DA=Aú¦~`8 n//.Hz~Hnû?<Nº _Cîû?<PNºp ÙS@nú0‘RGi¾nú¦o n//.HlHnúª?<Nº _Cîúª?<PNºp ÙS@nú0‘L߀N^ _Þü NÐÄEC2STR 200...0E.???.???:'NAN'++++----0.0�¦€NEXTC ‚$6100000NEXTC …NJoðNV/ (n,ÿ®@ÿ°lÿªm0,ÿªBA4®=A Rlÿª`Bn (_N^.ŸNuÎEXTC �F€STR2DEC ‚$5100000STR2DEC ‰%_INS %_INS „‰%_DEL %_DEL n‰%_POS %_POS Z‰%_SRCHK %_SRCHK ¶H’@‰%_CAT %_CAT ¨:„2‰%_COPY %_COPY "‰2$6100000NEXTC ’R,pìÒºL:Ìš”~lR…ÞJoî NVþ Hç n Cîÿ®Jp"ØS@nú2�(nBBlB,BBnÿ¢=|ÿ¤Bnÿ¦BD=|0ÿœ=|ÿªBg/Nº> G WÀ G WÁ€g Bg/Nº>`ä G+f Bg/Nº>` G-f¼Bg/Nº> G+WÀJWÁÀ G-WÁ W€g 9|I`ö GNWÀ GnWÁ€g¾.ÿ®@ÿY@°nÿªl LXˆCúè Ù0‘`š.ÿ®@ÿ�nÿªW@: EozHzÂHnÿ®0.ÿªV@??HnÿJNºHnÿJHnþø?<NºAîþø?<Nº"LX‰p"ØS@nú2�HzzHlNº:JEo(Hl??<Nº ElHzRHl?<NºRE`æ`( G0fBg/Nº>9|0`è G1\À G9_ÁÀgx9|0p‡Bg/Nº> G0\À G9_ÁÀg` Dl:RDp‡œHlHnÿœHnþâ?<NºAîþâ?<Nº"LX‰p"ØS@nú2�`Rnÿ¢ G0VÀ"‚ABg/Nº>`� G.fzBg/Nº> G0\À G9_ÁÀg` Dl>RDSnÿ¢p‡œHlHnÿœHnþÌ?<NºAîþÌ?<Nº"LX‰p"ØS@nú2�` G0VÀ"‚ABg/Nº>`�`´ G.f¬Bg/Nº> G0fSnÿ¢9|0Bg/Nº>`ä G1\À G9_ÁÀgB, G0\À G9_ÁÀg` Dl>Snÿ¢RDp‡œHlHnÿœHnþ¶?<NºAîþ¶?<Nº"LX‰p"ØS@nú2�` G0VÀ"‚ABg/Nº>`�,@ÿJ@f)|N12g:p¼1œHlHnÿœHnþ ?<NºAîþ ?<Nº"LX‰p"ØS@nú2�`B,@ÿ @^À,AÿBB4 B0WÁÀgRnÿ¢Hl,@ÿ??<Nº`¾ GEWÀ GeWÁ€gˆ=|ÿ¤Bnÿ¦Bg/Nº> G+WÀ G-WÁ€g G-f=|ÿÿÿ¤Bg/Nº>B G0\À G9_ÁÀg0 nôÿ¦\À"‚Ap Áîÿ¦"’|0Ò@=Aÿ¦Bg/Nº>`Àg=|ˆÿ¦0.ÿ¦Áîÿ¤2.ÿ¢Ò@9ALßðN^ _PONÐÓTR2DEC 0:NN0000�Ö€S2STR ‚S2STR S2STR ‰$3100000DEC2STR &‰S2DEC S2DEC …DJoïæNVÿæ/./. HnÿæNºHnHnÿæ/.NºN^ _Þü NÐÓ2STR �<€D2STR ‚D2STR D2STR ‰$3100000DEC2STR 4‰D2DEC D2DEC $…RJoïÞNVÿÞ n CîÿøJ"Ø"Ø/.HnÿøHnÿÞNºHnHnÿÞ/.NºN^ _Þü NÐÄ2STR �J€C2STR ‚C2STR C2STR ‰$3100000DEC2STR 4‰C2DEC C2DEC $…RJoïÞNVÿÞ n CîÿøJ"Ø"Ø/.HnÿøHnÿÞNºHnHnÿÞ/.NºN^ _Þü NÐÃ2STR �J€X2STR ‚X2STR X2STR ‰$3100000DEC2STR 6‰X2DEC X2DEC &…TJoïÜNVÿÜ n CîÿöJ"Ø"Ø2�/.HnÿöHnÿÜNºHnHnÿÜ/.NºN^ _Þü NÐØ2STR �L€STR2S ‚STR2S STR2S ‰%_SRCHK %_SRCHK (‰DEC2S DEC2S >‰$5100000STR2DEC 2…ZJoï”NVÿ” n Cîÿ®Jp"ØS@nú2�Aîÿ®?<PNº/Hnÿ”NºHnÿ”/.NºN^ _PONÐÓTR2S �R€STR2D ‚STR2D STR2D ‰%_SRCHK %_SRCHK (‰DEC2D DEC2D >‰$5100000STR2DEC 2…ZJoï”NVÿ” n Cîÿ®Jp"ØS@nú2�Aîÿ®?<PNº/Hnÿ”NºHnÿ”/.NºN^ _PONÐÓTR2D �R€STR2C ‚STR2C STR2C ‰%_SRCHK %_SRCHK (‰DEC2C DEC2C >‰$5100000STR2DEC 2…ZJoï”NVÿ” n Cîÿ®Jp"ØS@nú2�Aîÿ®?<PNº/Hnÿ”NºHnÿ”/.NºN^ _PONÐÓTR2C �R€STR2X ‚STR2X STR2X ‰%_SRCHK %_SRCHK (‰DEC2X DEC2X >‰$5100000STR2DEC 2…ZJoï”NVÿ” n Cîÿ®Jp"ØS@nú2�Aîÿ®?<PNº/Hnÿ”NºHnÿ”/.NºN^ _PONÐÓTR2X �R€NEGX ‚NEGX NEGX ‰NEGXXXX NEGXXXX …(JoðNV/.NºN^.ŸNuÎEGX � €NEXTS ‚NEXTS NEXTS ‰NEXTSXXXNEXTSXXX….JoðNV/. HnNºN^ _PONÐÎEXTS �&€CLASSS ‚CLASSS CLASSS ‰CLASSSXXCLASSSXX…4JoðNVBgHn /.Nº_N^ _PONÐÃLASSS �,€SCALBX ‚SCALBX SCALBX ‰SCALBXXXSCALBXXX….JoðNVHn /.NºN^ _\ONÐÓCALBX �&€SETENV ‚SETENV SETENV ‰SETENVXXSETENVXX…*JoðNVHnNºN^ _TONÐÓETENV �"€PROCEXIT ‚PROCEXITPROCEXIT‰PROCEXITPROCEXIT…*JoðNV?.NºN^ _TONÐÐROCEXIT�" $INTERFACE (CONST ,SIGDIGLEN = 20; { Maximum length of SigDig. } ,DECSTRLEN = 80; { Maximum length of DecStr. } (TYPE ,{----------------------------------------------------------------- ,** Numeric types. ,-----------------------------------------------------------------} 0Single = array [0..1] of integer; 0Double = array [0..3] of integer; 0Comp = array [0..3] of integer; 0Extended = array [0..4] of integer; ,{----------------------------------------------------------------- ,** Decimal string type and intermediate decimal type, ,** representing the value: ,** (-1)^sgn * 10^exp * dig ,-----------------------------------------------------------------} 0SigDig = string [SIGDIGLEN]; 0DecStr = string [DECSTRLEN]; 0Decimal = record ?sgn : 0..1; { Sign (0 for pos, 1 for neg). } ?exp : integer; { Exponent. } ?sig : SigDig { String of significant digits. } ;end; {^ne 16 } ,{----------------------------------------------------------------- ,** Modes, flags, and selections. ,** NOTE: the values of the style element of the DecForm record ,** have different names from the PCS version to avoid name ,** conflicts. ,-----------------------------------------------------------------} 0Environ = integer; 0RoundDir = (TONEAREST, UPWARD, DOWNWARD, TOWARDZERO); 0RelOp = (GT, LT, GL, EQ, GE, LE, GEL, UNORD); <{ > < <> = >= <= <=> } 0Exception = (INVALID, UNDERFLOW, OVERFLOW, DIVBYZERO, eINEXACT); 0NumClass = (SNAN, QNAN, INFINITE, ZERO, NORMAL, DENORMAL); 0DecForm = record @style : (FloatDecimal, FixedDecimal); @digits : integer €HW?<©ëT�NÐBA`r"WHWaÿx/H€J/f·`÷HWaÿHP�NÑ�R’TOOLINTFˆ { Created 23 Nov 1983 by Rony Sebok, merged from numerous files } { Modification history: } { 10 Feb 84 RTM First pass at inline traps } { 11 Apr 84 JTC noControl, resUser out; scrapCount, axes added } { Copyright 1982, 1983, 1984 by Apple Computer, Inc. All Rights Reserved. } INTERFACE USES {$U-} ({$U obj/MemTypes } MemTypes, ({$U obj/QuickDraw } QuickDraw, ({$U Obj/OsIntf } OsIntf; CONST "{ for Font Manager } "systemFont = 0; "applFont = 1; "NewYork = 2; "Geneva = 3; "Monaco = 4; "Venice = 5; "London = 6; "Athens = 7; "SanFran = 8; "Toronto = 9; "propFont = $9000; "fixedFont = $B000; "fontWid = $ACB0; "{for Window Manager} "{window messages} "wDraw = 0; "wHit = 1; "wCalcRgns = 2; "wNew = 3; "wDispose = 4; "wGrow = 5; "WDrawGIcon = 6; "{types of windows} "dialogKind = 2; "userKind = 8; "{window definition procedure IDs} "DocumentProc = 0; "DBoxProc = 1; "plainDBox = 2; "altDBoxProc = 3; "noGrowDocProc = 4; "RDocProc = 16; "{FindWindow Result Codes} "inDesk = 0; "inMenuBar = 1; "inSysWindow = 2; "inContent = 3; "inDrag = 4; "inGrow = 5; "inGoAway = 6; "{defProc hit test codes} "wNoHit = 0; "wInContent = 1; "wInDrag = 2; "wInGrow = 3; "wInGoAway = 4; "{axis constraints for DragGrayRgn call} "bothAxes = 0; "hAxisOnly = 1; "vAxisOnly = 2; "{for TextEdit} "teJustLeft = 0; "teJustRight = -1; "teJustCenter = 1; "{for Resource Manager} "{Resource attribute byte} "ResSysRef= 128; { Reference to system resource? } "ResSysHeap= 64; { System or application heap? } "ResPurgeable= 32; { Purgeable resource? } "ResLocked= 16; { Load it in locked? } "ResProtected= 8; { Protected? } "ResPreload= 4; { Load in on OpenResFile? } "ResChanged= 2; { Resource changed? } "MapReadOnly= 128; { Resource file read-only } "MapCompact= 64; { Compact resource file } "MapChanged= 32; { Write map out at update } "ResNotFound= -192; { Resource not found } "ResFNotFound= -193; { Resource file not found } "AddResFailed= -194; { AddResource failed } "AddRefFailed= -195; { AddReference failed } "RmvResFailed= -196; { RmveResource failed } "RmvRefFailed= -197; { RmveReference failed } "{ID's for resources provided in sysResDef} {standard cursor definitions} IBeamCursor = 1; {text selection cursor} CrossCursor = 2; {for structured selection} PlusCursor = 3; {for drawing graphics} WatchCursor = 4; {for indicating a long delay} {icons} stopIcon = 0; noteIcon = 1; cautionIcon = 2; {patterns} patternList = 38; {ID of PAT# which contains 38 patterns} "{for Control Manager} "{control messages} "drawCntl = 0; "testCntl = 1; "calcCRgns = 2; "initCntl = 3; "dispCntl = 4; "posCntl = 5; "thumbCntl = 6; "dragCntl = 7; "autoTrack = 8; "{FindControl Result Codes} "inButton = 10; "inCheckbox = 11; "inUpButton = 20; "inDownButton = 21; "inPageUp = 22; "inPageDown = 23; "inThumb = 129; "{control definition proc ID's} "PushButProc = 0; "CheckBoxProc = 1; "RadioButProc = 2; "ScrollBarProc = 16; "UseWFont = 8; "{for Dialog Manager} "UserItem= 0; "CtrlItem= 4; $BtnCtrl= 0; { Low two bits specify what kind of control } $ChkCtrl= 1; $RadCtrl= 2; $ResCtrl= 3; "StatText= 8; { Static text } "EditText= 16; { Editable text } "IconItem= 32; { Icon item } "PicItem= 64; { Picture item } "ItemDisable= 128; { Disable item if set } "OK= 1; { OK button is first by convention } "Cancel= 2; { Cancel button is second by convention } "{for Desk Manager} "undoCmd = 0; "cutCmd = 2; "copyCmd = 3; "pasteCmd = 4; "clearCmd = 5; "{for Menu Manager} "maxItem = 31; { max number of items in a text menu } "noMark = 0; { mark symbols for MarkItem } "commandMark = $11; "checkMark = $12; "diamondMark = $13; "appleMark = $14; "appleSymbol = $14; "TextMenuProc = 0; "{ menu defProc messages } "mDrawMsg = 0; "mChooseMsg = 1; "mSizeMsg = 2; "{for Scrap Manager} "noTypeErr = -102; "{package manager} "dskInit = 2; {Disk Initializaton} "stdFile = 3; {Standard File} "flPoint = 4; {Floating-Point Arithmetic} "trFunc = 5; {Transcendental Functions} "intUtil = 6; {International Utilities} "bdConv = 7; {Binary/Decimal Conversion} TYPE "{General Utilities} "Int64Bit = RECORD /hiLong: LongInt; /loLong: LongInt; -END; "CursPtr = ^Cursor; "CursHandle = ^CursPtr; "PatPtr = ^Pattern; "PatHandle = ^PatPtr; "{for Font Manager} "FMInput = PACKED RECORD .family: INTEGER; .size: INTEGER; .face: Style; .needBits: BOOLEAN; .device: INTEGER; .numer: Point; .denom: Point; ,END; "FMOutPtr = ^FMOutPut; "FMOutPut = PACKED RECORD /errNum: INTEGER; /fontHandle: Handle; /bold: Byte; /italic: Byte; /ulOffset: Byte; /ulShadow: Byte; /ulThick: Byte; /shadow: Byte; /extra: SignedByte; /ascent: Byte; /descent: Byte; /widMax: Byte; /leading: SignedByte; /unused: Byte; /numer: Point; /denom: Point; -END; "FontRec = RECORD .fontType: INTEGER; .firstChar: INTEGER; .lastChar: INTEGER; .widMax: INTEGER; .kernMax: INTEGER; .nDescent: INTEGER; .fRectMax: INTEGER; .chHeight: INTEGER; .owTLoc: INTEGER; .ascent: INTEGER; .descent: INTEGER; .leading: INTEGER; .rowWords: INTEGER; -{bitImage: ARRAY[1..rowWords,1..chHeight] OF INTEGER; .locTable: ARRAY[firstChar..lastChar+2] OF INTEGER; .owTable: ARRAY[firstChar..lastChar+2] OF INTEGER;} ,END; "{for Event Manager} "{the Event Record is defined in OsIntf} #KeyMap = ARRAY[0..3] OF LONGINT; "{for Window Manager} "WindowPtr = GrafPtr; "WindowPeek = ^WindowRecord; "WindowRecord = RECORD 3port: GrafPort; 3windowKind: INTEGER; 3visible: BOOLEAN; 3hilited: BOOLEAN; 3goAwayFlag: BOOLEAN; 3spareFlag: BOOLEAN; 3strucRgn: RgnHandle; 3contRgn: RgnHandle; 3updateRgn: RgnHandle; 3windowDefProc: Handle; 3dataHandle: Handle; 3titleHandle: StringHandle; 3titleWidth: INTEGER; 3ControlList: Handle; 3nextWindow: WindowPeek; 3windowPic: PicHandle; 3refCon: LongInt; 1END; "{for TextEdit} "TERec = RECORD ,destRect: Rect; {Destination rectangle} ,viewRect: Rect; {view rectangle} ,selRect: Rect; {Select rectangle} ,lineHeight: INTEGER; {Current font lineheight} ,fontAscent: INTEGER; {Current font ascent} ,selPoint: Point; {Selection point(mouseLoc)} ,selStart: INTEGER; {Selection start} ,selEnd: INTEGER; {Selection end} ,active: INTEGER; {<>0 if active} ,workBreak: LONGINT; {Word break routine} ,clikLoop: LONGINT; {Click loop routine} ,clickTime: LONGINT; {Time of first click} ,clickLoc: INTEGER; {Char. location of click} ,caretTime: LONGINT; {Time for next caret blink} ,caretState: INTEGER; {On/active booleans} ,just: INTEGER; {fill style} ,TELength: INTEGER; {Length of text below} ,hText: Handle; {Handle to actual text} ,recalBack: INTEGER; {<>0 if recal in background} ,recalLines: INTEGER; {Line being recal'ed} ,clikStuff: INTEGER; {click stuff (internal)} ,crOnly: INTEGER; {Set to -1 if CR line breaks only} ,txFont: INTEGER; {Text Font} ,txFace: Style; {Text Face} ,txMode: INTEGER; {Text Mode} ,txSize: INTEGER; {Text Size} ,inPort: GrafPtr; {Grafport} ,highHook: PTR; {Highlighting hook} ,caretHook: PTR; {Highlighting hook} ,nLines: INTEGER; {Number of lines} ,lineStarts: ARRAY [0..16000] OF INTEGER; {Actual line starts themselves} *END; {RECORD} "TEPtr = ^TERec; "TEHandle = ^TEPtr; "CharsHandle = ^CharsPtr; "CharsPtr = ^Chars; "Chars = PACKED ARRAY[0..32000] OF CHAR; "{for Resource Manager} "ResType=PACKED ARRAY[1..4] OF CHAR; "{for Control Manager} "ControlPtr = ^ControlRecord; "ControlHandle = ^ControlPtr; "ControlRecord = %RECORD 'nextControl: ControlHandle; 'contrlOwner: WindowPtr; 'contrlRect: Rect; 'contrlVis: BOOLEAN; 'contrlHilite: BOOLEAN; 'contrlValue: INTEGER; 'contrlMin: INTEGER; 'contrlMax: INTEGER; 'contrlDefProc: Handle; 'contrlData: Handle; 'contrlAction: ProcPtr; 'contrlrfCon: LONGINT; 'contrlTitle: Str255; %END; {ControlRecord} "{for Dialog Manager} "DialogPtr= WindowPtr; "DialogPeek= ^DialogRecord; "DialogRecord= Record 2window: WindowRecord; 2Items: Handle; 2textH: TEHandle; 2EditField: Integer; 2EditOpen: INTEGER; 2ADefItem: INTEGER; 0End; "DialogTHndl= ^DialogTPtr; "DialogTPtr= ^DialogTemplate; "DialogTemplate=RECORD 3boundsRect: Rect; 3procID: INTEGER; 3visible: BOOLEAN; 3filler1: BOOLEAN; 3goAwayFlag: BOOLEAN; 3filler2: BOOLEAN; 3refCon: LongInt; 3ItemsID: INTEGER; 3title: Str255; 1END; "StageList= PACKED ARRAY [1..4] OF RECORD IboldItem: 0..1; IboxDrawn: BOOLEAN; Isound: 0..3; GEND; "AlertTHndl= ^AlertTPtr; "AlertTPtr= ^AlertTemplate; "AlertTemplate=RECORD 2boundsRect: Rect; 2itemsID: INTEGER; 2stages: StageList; 0END; "{for Menu Manager} "MenuPtr = ^MenuInfo; "MenuHandle = ^MenuPtr; "MenuInfo = RECORD /menuId: INTEGER; /menuWidth: INTEGER; /menuHeight: INTEGER; /menuProc: Handle; /enableFlags: PACKED ARRAY[0..maxItem] OF BOOLEAN; /menuData: Str255; -END; "{for Scrap Manager} "ScrapStuff = RECORD &scrapSize: LONGINT; &scrapHandle: Handle; &scrapCount: INTEGER; &scrapState: INTEGER; &scrapName: StringPtr; "END; "pScrapStuff = ^ScrapStuff; {General Utilities} FUNCTION BitAnd (long1,long2: LongInt): LongInt; INLINE $A858; FUNCTION BitOr (long1,long2: LongInt): LongInt; INLINE $A85B; FUNCTION BitXor (long1,long2: LongInt): LongInt; INLINE $A859; FUNCTION BitNot (long: LongInt): LongInt; INLINE $A85A; FUNCTION BitShift (long: LongInt; count: INTEGER): LongInt; INLINE $A85C; FUNCTION BitTst (bytePtr: Ptr; bitNum: LongInt): BOOLEAN; INLINE $A85D; PROCEDURE BitSet (bytePtr: Ptr; bitNum: LongInt); INLINE $A85E; PROCEDURE BitClr (bytePtr: Ptr; bitNum: LongInt); INLINE $A85F; PROCEDURE LongMul (a,b: LongInt; VAR dst: Int64Bit); INLINE $A867; FUNCTION FixMul (a,b: Fixed): Fixed; INLINE $A868; FUNCTION FixRatio (numer,denom: INTEGER): Fixed; INLINE $A869; FUNCTION HiWord (x: LongInt): INTEGER; INLINE $A86A; FUNCTION LoWord (x: LongInt): INTEGER; INLINE $A86B; FUNCTION FixRound (x: Fixed): INTEGER; INLINE $A86C; PROCEDURE PackBits (VAR srcPtr,dstPtr: Ptr; srcBytes: INTEGER); INLINE $A8CF; PROCEDURE UnPackBits(VAR srcPtr,dstPtr: Ptr; dstBytes: INTEGER);INLINE $A8D0; FUNCTION SlopeFromAngle(angle: INTEGER): Fixed; INLINE $A8BC; FUNCTION AngleFromSlope(slope: Fixed): INTEGER; INLINE $A8C4; FUNCTION DeltaPoint(ptA,ptB: Point): LongInt; INLINE $A84F; FUNCTION NewString(theString:Str255): StringHandle; INLINE $A906; PROCEDURE SetString(theString:StringHandle; strNew: Str255); INLINE $A907; FUNCTION GetString(stringID: INTEGER): StringHandle; INLINE $A9BA; PROCEDURE GetIndString(VAR theString: str255; strListID: INTEGER; 7index: INTEGER); FUNCTION Munger(h: Handle; offset: LongInt; ptr1: Ptr; len1: LongInt; 0ptr2: Ptr; len2: LongInt): LongInt; INLINE $A9E0; FUNCTION GetIcon(iconID: INTEGER): Handle; INLINE $A9BB; PROCEDURE PlotIcon(theRect: Rect; theIcon: Handle); INLINE $A94B; FUNCTION GetCursor (cursorID: INTEGER): CursHandle; INLINE $A9B9; FUNCTION GetPattern(patID: INTEGER): PatHandle; INLINE $A9B8; FUNCTION GetPicture(picID: INTEGER): PicHandle; INLINE $A9BC; PROCEDURE ShieldCursor(shieldRect: Rect; offsetPt: Point); INLINE $A855; {for Font Manager} PROCEDURE InitFonts; INLINE $A8FE; PROCEDURE GetFontName(familyID: INTEGER; VAR theName: Str255); INLINE $A8FF; PROCEDURE GetFNum(theName: Str255; VAR familyID: INTEGER); INLINE $A900; PROCEDURE SetFontLock(lockFlag: BOOLEAN); INLINE $A903; FUNCTION FMSwapFont(inRec: FMInput): FMOutPtr; INLINE $A901; FUNCTION RealFont(famID: INTEGER; size: INTEGER): BOOLEAN; INLINE $A902; {for Event Manager} FUNCTION EventAvail(mask:INTEGER; VAR theEvent: EventRecord): BOOLEAN; `INLINE $A971; FUNCTION GetNextEvent(mask:INTEGER; VAR theEvent: EventRecord): BOOLEAN; `INLINE $A970; FUNCTION StillDown:BOOLEAN; INLINE $A973; FUNCTION WaitMouseUp:BOOLEAN; INLINE $A977; PROCEDURE GetMouse (VAR pt: Point); INLINE $A972; FUNCTION TickCount:LongInt; INLINE $A975; FUNCTION Button: BOOLEAN; INLINE $A974; PROCEDURE GetKeys(VAR k: keyMap); INLINE $A976; FUNCTION DoubleTime: LongInt; FUNCTION CaretTime: LongInt; {for Window Manager} PROCEDURE ClipAbove(window: WindowPeek); INLINE $A90B; PROCEDURE PaintOne(window: WindowPeek; clobbered: RgnHandle); INLINE $A90C; PROCEDURE PaintBehind(startWindow: WindowPeek; clobbered: RgnHandle); `INLINE $A90D; PROCEDURE SaveOld(window: WindowPeek); INLINE $A90E; PROCEDURE DrawNew(window: WindowPeek; fUpdate: BOOLEAN); INLINE $A90F; PROCEDURE CalcVis(window: WindowPeek); INLINE $A909; PROCEDURE CalcVisBehind(startWindow: WindowPeek; clobbered: RgnHandle); `INLINE $A90A; PROCEDURE ShowHide(window: WindowPtr; showFlag: BOOLEAN); INLINE $A908; FUNCTION CheckUpdate(VAR theEvent: EventRecord): BOOLEAN; INLINE $A911; PROCEDURE GetWMgrPort(VAR wPort: GrafPtr); INLINE $A910; PROCEDURE InitWindows; INLINE $A912; FUNCTION NewWindow(wStorage: Ptr; 4boundsRect: Rect; 4title: Str255; 4visible: BOOLEAN; 4theProc: INTEGER; 4behind: WindowPtr; 4goAwayFlag: BOOLEAN; 4refCon: LongInt): WindowPtr; INLINE $A913; PROCEDURE DisposeWindow (theWindow: WindowPtr); INLINE $A914; PROCEDURE CloseWindow (theWindow: WindowPtr); INLINE $A92D; PROCEDURE MoveWindow (theWindow: WindowPtr; h,v: INTEGER; BringToFront:BOOLEAN); `INLINE $A91B; PROCEDURE SizeWindow (theWindow: WindowPtr; width,height: INTEGER; fUpdate: BOOLEAN); `INLINE $A91D; FUNCTION GrowWindow (theWindow: windowPtr; startPt: Point; bBox: Rect): LongInt; `INLINE $A92B; PROCEDURE DragWindow (theWindow: WindowPtr; startPt: Point; boundsRect: Rect); `INLINE $A925; PROCEDURE ShowWindow (theWindow: WindowPtr); INLINE $A915; PROCEDURE HideWindow (theWindow: WindowPtr); INLINE $A916; PROCEDURE SetWTitle (theWindow: WindowPtr; title: Str255); INLINE $A91A; PROCEDURE GetWTitle (theWindow: WindowPtr; VAR title: Str255); INLINE $A919; PROCEDURE HiliteWindow (theWindow: WindowPtr; fHiLite: BOOLEAN); INLINE $A91C; PROCEDURE BeginUpdate (theWindow: WindowPtr); INLINE $A922; PROCEDURE EndUpdate (theWindow: WindowPtr); INLINE $A923; PROCEDURE SetWRefCon (theWindow: WindowPtr; data: LongInt); INLINE $A918; FUNCTION GetWRefCon (theWindow: WindowPtr): LongInt; INLINE $A917; PROCEDURE SetWindowPic (theWindow: WindowPtr; thePic: PicHandle); INLINE $A92E; FUNCTION GetWindowPic (theWindow: WindowPtr): PicHandle; INLINE $A92F; PROCEDURE BringToFront (theWindow: WindowPtr); INLINE $A920; PROCEDURE SendBehind (theWindow,behind: WindowPtr); INLINE $A921; FUNCTION FrontWindow: WindowPtr; INLINE $A924; PROCEDURE SelectWindow (theWindow: WindowPtr); INLINE $A91F; FUNCTION TrackGoAway (theWindow: WindowPtr; thePt: Point): BOOLEAN; `INLINE $A91E; PROCEDURE DrawGrowIcon (theWindow: WindowPtr); INLINE $A904; PROCEDURE ValidRect (goodRect: Rect); INLINE $A92A; PROCEDURE ValidRgn (goodRgn: RgnHandle); INLINE $A929; PROCEDURE InvalRect (badRect: Rect); INLINE $A928; PROCEDURE InvalRgn (badRgn: RgnHandle); INLINE $A927; FUNCTION FindWindow (thePoint: Point; :VAR theWindow: WindowPtr): INTEGER; INLINE $A92C; FUNCTION GetNewWindow (windowID: INTEGER; wStorage: Ptr; >behind: WindowPtr): WindowPtr; INLINE $A9BD; FUNCTION PinRect(theRect: Rect; thePt: Point): LongInt; INLINE $A94E; FUNCTION DragGrayRgn(theRgn: RgnHandle; startPt: Point; boundsRect, 6slopRect: Rect;axis: INTEGER; 6actionProc: ProcPtr): LongInt; INLINE $A926; {For TextEdit} PROCEDURE TEActivate( h: TEHandle ); INLINE $A9D8; PROCEDURE TECalText( h: TEHandle ); INLINE $A9D0; PROCEDURE TEClick( pt: Point; extend: BOOLEAN; h: TEHandle ); INLINE $A9D4; PROCEDURE TECopy( h: TEHandle ); INLINE $A9D5; PROCEDURE TECut( h: TEHandle ); INLINE $A9D6; PROCEDURE TEDeActivate( h: TEHandle ); INLINE $A9D9; PROCEDURE TEDelete( h: TEHandle ); INLINE $A9D7; PROCEDURE TEDispose( h: TEHandle ); INLINE $A9CD; PROCEDURE TEIdle( h: TEHandle ); INLINE $A9DA; PROCEDURE TEInit; INLINE $A9CC; PROCEDURE TEKey( key: CHAR; h: TEHandle ); INLINE $A9DC; FUNCTION TENew( dest, view: Rect ): TEHandle; INLINE $A9D2; PROCEDURE TEPaste( h: TEHandle ); INLINE $A9DB; PROCEDURE TEScroll( dh, dv: INTEGER; h: TEHandle ); INLINE $A9DD; PROCEDURE TESetSelect( selStart, selEnd: LONGINT; h: TEHandle ); INLINE $A9D1; PROCEDURE TESetText( inText: Ptr; textLength: LONGINT; h: TEHandle ); INLINE $A9CF; PROCEDURE TEInsert( inText: Ptr; textLength: LONGINT; h: TEHandle ); INLINE $A9DE; PROCEDURE TEUpdate( rUpdate: Rect; h: TEHandle ); INLINE $A9D3; PROCEDURE TESetJust( just: INTEGER; h: TEHandle ); INLINE $A9DF; FUNCTION TEGetText( h: TEHandle ): CharsHandle; INLINE $A9CB; FUNCTION TEScrapHandle: Handle; FUNCTION TEGetScrapLen: LongInt; PROCEDURE TESetScrapLen(length: LongInt); {Box drawing utility} PROCEDURE TextBox( inText: Ptr; textLength: LONGINT; r: Rect; style: INTEGER ); `INLINE $A9CE; {for Resource Manager} FUNCTION InitResources: INTEGER; INLINE $A995; PROCEDURE RsrcZoneInit; INLINE $A996; PROCEDURE CreateResFile(fileName: Str255); INLINE $A9B1; FUNCTION OpenResFile(fileName: Str255): INTEGER; INLINE $A997; PROCEDURE UseResFile(refNum: INTEGER); INLINE $A998; FUNCTION GetResFileAttrs(refNum: INTEGER): INTEGER; INLINE $A9F6; PROCEDURE SetResFileAttrs(refNum: INTEGER; attrs: INTEGER); INLINE $A9F7; PROCEDURE UpdateResFile(refNum: INTEGER); INLINE $A999; PROCEDURE CloseResFile(refNum: INTEGER); INLINE $A99A; PROCEDURE SetResPurge(install: Boolean); INLINE $A993; PROCEDURE SetResLoad(AutoLoad: Boolean); INLINE $A99B; FUNCTION CountResources(theType: ResType): INTEGER; INLINE $A99C; FUNCTION GetIndResource(theType: ResType; index: INTEGER): Handle; `INLINE $A99D; FUNCTION CountTypes: INTEGER; INLINE $A99E; PROCEDURE GetIndType(VAR theType: ResType; index: INTEGER); INLINE $A99F; FUNCTION UniqueID(theType: ResType): INTEGER; INLINE $A9C1; FUNCTION GetResource(theType: ResType; ID: INTEGER): Handle; INLINE $A9A0; FUNCTION GetNamedResource(theType: ResType; name: Str255): Handle; `INLINE $A9A1; PROCEDURE LoadResource(theResource: Handle); INLINE $A9A2; PROCEDURE ReleaseResource(theResource: Handle); INLINE $A9A3; PROCEDURE DetachResource(theResource: Handle); INLINE $A992; PROCEDURE ChangedResource(theResource: Handle); INLINE $A9AA; PROCEDURE WriteResource(theResource: Handle); INLINE $A9B0; FUNCTION HomeResFile(theResource: Handle): INTEGER; INLINE $A9A4; FUNCTION CurResFile: INTEGER; INLINE $A994; FUNCTION GetResAttrs(theResource: Handle): INTEGER; INLINE $A9A6; PROCEDURE SetResAttrs(theResource: Handle; attrs: INTEGER); INLINE $A9A7; PROCEDURE GetResInfo(theResource: Handle; 5VAR theID: INTEGER; 5VAR theType: ResType; 5VAR name: Str255); INLINE $A9A8; PROCEDURE SetResInfo(theResource: Handle; 5theID: INTEGER; 5name: Str255); INLINE $A9A9; PROCEDURE AddResource(theResource: Handle; 6theType: ResType; 6theID: INTEGER; 6name: Str255); INLINE $A9AB; PROCEDURE AddReference(theResource: Handle; 7theID: INTEGER; 7name: Str255); INLINE $A9AC; PROCEDURE RmveResource(theResource: Handle); INLINE $A9AD; PROCEDURE RmveReference(theResource: Handle); INLINE $A9AE; FUNCTION SizeResource(theResource: Handle): LongInt; INLINE $A9A5; FUNCTION ResError: INTEGER; INLINE $A9AF; {for Control Manager} FUNCTION NewControl(curWindow: windowPtr; 4boundsRect: Rect; 4title: Str255; 4visible: BOOLEAN; 4value: INTEGER; 4min: INTEGER; 4max: INTEGER; 4contrlProc: INTEGER; 4refCon: LongInt): ControlHandle; INLINE $A954; PROCEDURE DisposeControl (theControl: ControlHandle); INLINE $A955; PROCEDURE KillControls (theWindow: WindowPtr); INLINE $A956; PROCEDURE MoveControl (theControl: ControlHandle; h,v: INTEGER); INLINE $A959; PROCEDURE SizeControl (theControl: ControlHandle; w,h: INTEGER); INLINE $A95C; PROCEDURE DragControl (theControl: ControlHandle; startPt: Point; :bounds: Rect; slopRect: Rect; axis:INTEGER); INLINE $A967; PROCEDURE ShowControl (theControl: ControlHandle); INLINE $A957; PROCEDURE HideControl (theControl: ControlHandle); INLINE $A958; PROCEDURE SetCTitle (theControl: ControlHandle; title: Str255); INLINE $A95F; PROCEDURE GetCTitle (theControl: ControlHandle; VAR title: Str255); INLINE $A95E; PROCEDURE HiliteControl (theControl: ControlHandle; hiliteState: INTEGER); `INLINE $A95D; PROCEDURE SetCRefCon (theControl: ControlHandle; data: LongInt); INLINE $A95B; FUNCTION GetCRefCon (theControl: ControlHandle): LongInt; INLINE $A95A; PROCEDURE SetCtlValue (theControl: ControlHandle; theValue: INTEGER); INLINE $A963; FUNCTION GetCtlValue (theControl: ControlHandle): INTEGER; INLINE $A960; FUNCTION GetCtlMin (theControl: ControlHandle): INTEGER; INLINE $A961; FUNCTION GetCtlMax (theControl: ControlHandle): INTEGER; INLINE $A962; PROCEDURE SetCtlMin (theControl: ControlHandle; theValue: INTEGER); INLINE $A964; PROCEDURE SetCtlMax (theControl: ControlHandle; theValue: INTEGER); INLINE $A965; FUNCTION GetCtlAction (theControl: ControlHandle): ProcPtr; INLINE $A96A; PROCEDURE SetCtlAction (theControl: ControlHandle; newProc: ProcPtr); INLINE $A96B; FUNCTION TestControl (theControl: ControlHandle; thePt: Point): INTEGER; `INLINE $A966; FUNCTION TrackControl (theControl:ControlHandle; thePt: Point; JGg*/- Hz4Bg À/- HÇ/?< À/-  À Nºûê.N^NuÒMINITFIREWRITE Error in InitFileJoïüNVÿüHçJ­ùÒg„ -ùÒмÿ//< "„ <Hmù‚/-ùÖ??-ù€ À";_ÿö ÀR>JGVÀ¼mÿöVÁ€g>/- Hz¤Bg À/- HÇ/?< À/- 0-ÿöHÀ/?< À/-  À Nºû*Hmù‚?< À( ÀR>JGg*/- Hz6Bg À/- HÇ/?< À/-  À NºúêLßÀN^NuÒMCLOSEF8CLOSE Error in CloseFileBLOCKWRITE Error in CloseFileJoðNV n l/- 0. Ð|0A¼ÿ?< Àþ`/- 0. Ð|7A¼ÿ?< ÀþN^ _\ONÐ×RITEDIGJoðNV0.HÀ�ü?/Nºÿ�0.HÀ�üH@J@?/NºÿzN^ _TONÐ×RITEBYTJoïþNVÿþ/R­þŠ-ö]g`â mùÖ0-ùÔA¼ÿ2.C¼ÿ�R­ùÒ-ùÛg>?.Nºÿ~-ùÕ@ g/- < ?< Àþ/-ùÒp / "ŠJŸf/-  À ­€ùÒfvHmù‚/-ùÖ?<@?-ù€ À";_ÿö ÀR>JGVÀ m@ÿöVÁ€g>/- HzVBg À/- HÇ/?< À/- 0-ÿöHÀ/?< À/-  À Nºùm@ù€B­ùÒ.N^ _TONÐÏUTPUTBY BlockWrite Error in OutputByteJoðNVBg?.NºnÈNºþÀBg?.Nºn¬Nºþ²N^ _TONÐÏUTPUTWOJoðNVBg/.NºnzNºÿ¶Bg/.NºnbNºÿ¨N^.ŸNuÏUTPUTLOJoîüNVþúHç nCîÿJp@"ØS@nú.ÿ@ÿ<JFf`(=Fþú~`O¼ÿAîÿ0p@ÿ?Nºþ RGi¾nþúoàLßÀN^.ŸNuÏUTPUTSTJoì¤NVü¤Hç n CîÿJp@"ØS@núJ®f`ÜHnü°Hnÿ?<ÿÿ ÀŽ ÀR8JDg*/- HzÐBg À/- HÄ/?< À/-  À Nº÷š,.BE †oBHnü°Hný?<? À=_ü¨REBG`O¼ÿAîý0p@ÿ?NºýVRG Gÿo✼`¶J†oHnü°Hný?<? À=_ü¨BGJ†oO¼ÿAîý0p@ÿ?NºýRGS†`àHnü°Bg À(LßðN^ _PONÐÏUTPUTFIRESET Error in OutputFileJoîüNVþø/ n CîÿJp@"ØS@núJ®g*-nþø~`O¼ÿAîÿ0p@ÿ?NºüŽR‡i¾®þøoà.N^ _PONÐÏUTPUTDAJoïüNVÿø/J®gn-nÿø~`^ @g*Bg n R€/p/ "„ A¼ã@?0Nºl.Nºü&`(Bg n R€/p/ "„ A¼ã@?0NºköNºûüR‡i¾®ÿøoœ.N^ _PONÐÏUTPUTDBJoðNV mùÜf HmùàHmú0?<?-ù~ À;_ÿöRmù~BmùÜ0-ùÜA¼ÿAíú00Aÿ=ARmùÜN^NuÒEADBYTEJoðNVBgNºÿš0á@/BgNºÿŽ2 Ò@=AN^NuÒEADWORDJoðNVBgNºÿh0HÀ//<€ "�BgNºÿ¬0HÀП-@N^NuÒEAD3BYTJoðNVBgNºÿ†0HÀ/<€/ "�BgNºÿp0HÀП-@N^NuÒEADLONGJoïúNVÿúHç0-ùÜHÀ".Ò€. ‡o@//< "„ S€<Ýmù~HmùàHmú0?<?-ù~ À;_ÿöRmù~//< "Š.;GùÜLßÀN^.ŸNuÓKIPOVERJoîþNVþþ/ nCîÿJp@"ØS@nú;|ùÜBmù~HmùàHnÿ?<ÿÿ ÀŽ ÀR>JGg8/- HzDBg À/- HnÿBg À/- HÇ/?< À/-  À Nºóì.N^.ŸNuÏPENREADRESET Error in OpenRead on JoïúNVÿúHç(n > @ g:,<0.HÀ// "�, HÀ�üR@A¼ã@/Bg/NºiN2 9�`" HÀ�üR@A¼ã@2.HÁƒüHAJAÓtRTLßÀN^ _\ONÐÄAPPENDBJoðNV/. Bg?.NºiNºÿV/. Bg?.NºhöNºÿDN^ _\ONÐÄAPPENDWJoðNV/. Bg/.NºhÀNºÿª/. Bg/.Nºh¤Nºÿ˜N^ _PONÐÄAPPENDLJoîüNVþúHç n CîÿJp@"ØS@nú(n.ÿ@ÿ>.g/ ?NºþºJGo*=Gþú|`/ M¼ÿAîÿ0`@ÿ?Nºþ–RFi¼nþúoÞ n WÀ"A Àg/ BgNºþn n WÀ"AÀg/ BgNºþTLßÀN^ _Þü NÐÄAPPENDSJoïþNVÿþ/~`/. 0S@A¼6p@ÿ?NºþRG GoÞ.N^ _PONÐÄAPPENDTJoðNV nal=n `0.�| A¼ÿ=@ N^ _TONÐÆOLDCHARJoìüNVüúHç(nB.ýþB=|1þþ@ÿ=@üú~`VpO¼ÿ4pAÿAîþþ�O¼ÿ4p@ÿ @ g|g$HnýþHnþþHnüü?< "ÆAîýþCîüüp@ ÙS@núRGi¾nüúo¤Aîýþ"Lp@"ØS@núLßÀN^.ŸNuÔRIMBLANJoïNVÿ/ n CîÿJp@"ØS@nú(n.ÿ@ÿJ@fB.`4JTf8¼.ÿ@ÿ°T\À2C¼ÿAîÿ0Bÿ B WÁÀgRT`Ô.ÿ@ÿ°T\ÀD@(_N^ _PONÐÓCANTOSTJoîüNVþüHç nCîÿJp@"ØS@nú(nBT|BgAîÿ?<ÿ "z//. Nºÿ6 n .ÿ@ÿ°P^ÀÀgH n 0A¼ÿAîÿ0Aÿ A-f |ÿ n RP`" n 0A¼ÿAîÿ0Aÿ A+f n RP n .ÿ@ÿ°P\À n 2C¼ÿAîÿ0Bÿ B VÁÀÀgp n 0A¼ÿAîÿ0Aÿ A0\À n 2C¼ÿAîÿ0Bÿ B9_ÁÀg(~0Áü n 2C¼ÿAîÿ0BÿÔ@”|08‚`B n RP`ÿ` ÁÔ8€GLßÀN^ _Þü NÐÇETINT JoîüNVþüHç nCîÿJp@"ØS@nú(nB”|BgAîÿ?<ÿ "z//. NºýÔ n .ÿ@ÿ°P^ÀÀgH n 0A¼ÿAîÿ0Aÿ A-f |ÿ n RP`" n 0A¼ÿAîÿ0Aÿ A+f n RP n .ÿ@ÿ°P\À n 2C¼ÿAîÿ0Bÿ B VÁÀÀgv n 0A¼ÿAîÿ0Aÿ A0\À n 2C¼ÿAîÿ0Bÿ B9_ÁÀg.~p // "� n 0A¼ÿAîÿ0AÿHÁÒŸp0’€(�`B n RP`ÿZHÆ// "�(ŸGLßÀN^ _Þü NÐÇETLINT JoíüNVýü nCîÿJp@"ØS@nú=| þþ nBBgAîÿ?<ÿ "z//. Nºüf_þý n .ÿ@ÿ°P\À n 2C¼ÿAîÿ0Bÿ B VÁÀgPp n 2C¼ÿAîÿ0BÿAîþþ‚ n//.HnþþHnýü?< "Æ _Cîýüp@ ÙS@nú n RP`€N^ _Þü NÐÇETSTR JoîúNVþúHç nCîÿJp@"ØS@núB.|~`>Bg n 0S@A¼0p@ÿ?Nºú¨BgO¼ÿAîÿ0p@ÿ?Nºú�0°_gBRG Go¼  gH~`>Bg n 0S@A¼0p@ÿ?NºúXBgO¼ÿAîÿ0p@ÿ?Nºú@0°_g`RG Go¼|LßÀN^ _PONÐÍATCHTYPJoðNV/ (nBg/ HzÞNºÿg | `–Bg/ Hz¾Nºþög| `|Bg/ Hz NºþÞg| `dBg/ Hz‚NºþÆg| `LBg/ HzdNºþ®g| `4Bg/ HzFNºþ–g| `Bg/ Hz(Nºþ~g| `B. (_N^.ŸNuÍATCHOBJ*PACKDSATKEYCCDEFMDEFWDEFDRVRJoðNVB. N^.ŸNuÍATCHDEBJoìªNVüªHç n CîÿJp@"ØS@núHnÿHzæ "´g Hnþ°Hnÿ?<ÿÿ ÀŽ ÀR>JGg8/- Hz˜Bg À/- HnÿBg À/- HÇ/?< À/-  À Nºê0 ÀRJ_fHnþ°Hnü®?<Bg À:Hnþ°Bg À(. g0.ü¾Ð| 2.ü²Ò@’nü°ãA<`<.ü®=FLßàN^ _\ONÐÓIZEFONT$!RESET Error in SizeFont. fname = JoìöNVüôHç n CîÿJp@"ØS@núAîÿ?<ÿ "z/NºõHmùàHnüö?<?<ÿÿ À<0.üúÐ|�nüøã@=@þø0.ý[@:0.üú�nüø8HmùàBg À(=nþø. g`’Aîÿ?<ÿ "z/Nºô¦~` BgNºóxNºð"RG GoîBgNºóf<?<Nºð ~` BgNºóRNºïüRG GoîBgNºó@<BgNºïæ ã@HÀ/NºóÖ=Düô~`BgNºóNºïÈRGi¾nüôoìHmùàBg À(LßðN^ _\ONÐÐROCESSWJoîþNVþþHç(nBg?. NºèÆ>,ýÿ @ýÿ,ýÿgH0,üúé@ÐG9@üúp2,üúC¼ÿAìüþ� l//,HlüþHnþþ?< "Æ _Cîþþp@ ÙS@nú`9GüúL߀N^ _\ONÐÓTUFFDIGJoìúNVüø/ nCîÿJp@"ØS@nú nCîþJp@"ØS@nú|ýÿ=| üþ nB.ÿ@ÿ=@üø~`ÈBgO¼ÿAîÿ0p@ÿ?Nºè&gO¼ÿAîÿ0p@ÿ?/Nºþì`ŒO¼ÿAîÿ0p@ÿ @ f`r/- Hz*Bg À/-  À /- HzþBg À/- HnÿBg À/-  À /- HzÄBg À/- O¼ÿAîÿ0p@ÿ?< Àþ/-  À NºæÒRGi¾nüøoÿ4 n@ÿ°n VÀ nÿÿ VÁÀg6/- HnþBg À/- Hz8Bg À/- HnÿBg À/-  À Nºæt.N^ _ÞüNÐÐROCESSHf: wrong # of hex digits in- offending digit is: offending string is: non hex digits in HEXA typeJoíþNVýþ/ nCîÿJp@"ØS@nú~|gnHmü0 À4gB/- Hz¨Bg À/-  À Nºå¨`BHmü0Hnýþ?<ÿ ÀòHmü0 Àæ.ýþ@ÿJ@fBB.`pAîýþ0Aÿ A*gB`Ž.ýþ@ÿJ@g,Aîýþ?<ÿ "z//.?. Aîÿ?<ÿ "z/NºýF.N^ _Þü NÐÇETHEXLIPremature end of fileJoïNVÿ nCîÿJp@"ØS@núBg/.?. Aîÿ?<ÿ "z/NºþÐgÞN^ _Þü NÐÓEGETHEXJoïÐNVÿÎHç n CîÿêJp"ØS@nú2� nCîÿÔJp"ØS@nú2�.ÿê@ÿ.ÿÔAÿ²@fT~.ÿê@ÿ=@ÿÎ|`:g2BgM¼6`ê@ÿ?NºòŠBgM¼6`Ô@ÿ?Nºòv0°_WÀDRFi¼nÿÎoÀ`BGLßÀN^ _PONÐÍATCHTOKJoïNVÿ n //. Hz\Hnÿ?< "Æ _Cîÿp@ ÙS@nú n "n @ÿA¼ÿH瀀Bg?.NºY˜2LßC¼ÿ�N^ _\ONÐÁPPENDBY JoðNV/. Bg?.NºYnNºÿv/. Bg?.NºYNNºÿdN^ _\ONÐÁPPENDINJoðNV/. Bg/.NºYNºÿª/. Bg/.NºXüNºÿ˜N^ _PONÐÁPPENDLOJoìþNVüþ/ nCîÿJp@"ØS@nú.ÿ@ÿR@>/. S@?NºþÞ n //. HnÿHnýþ?< "Æ _Cîýþp@ ÙS@nú.ÿ@ÿ@g* n //. Hz6Hnüþ?< "Æ _Cîüþp@ ÙS@núRG=G.N^ _PONÐÁPPENDST JoïNVÿ/.?<HzNºýDN^.ŸNuÒEADPAT patternJoìNVü/ (n/ ?< HzxNºýHnþ?< HzhNºý/ HnþHný?< "ÆAîý"Lp@"ØS@núHnþ?<Hz8NºüÐ/ HnþHnü?< "ÆAîü"Lp@"ØS@nú(_N^.ŸNuÒEADCURScursorJoìþNVüþHç(nB~`2Hnþ?<HzBNºüp/ HnþHnüþ?< "ÆAîüþ"Lp@"ØS@núRG G oÈL߀N^.ŸNuÒEADICONiconJoîúNVþúHç nCîÿJp@"ØS@nú(nz.ÿ@ÿ>JGgоT^À2C¼ÿAîÿ0Bÿ B WÁÀgRT`Ü0A¼ÿAîÿ0Aÿ A gL| n 0S@A¼ H瀀Bg2C¼ÿCîÿ1Bÿ?NºîÚ2Lß�ÿRTRF¾T]À FWÁ€g¸Bg(/- Hz:Bg À/- HnÿBg À/-  À NºàBLßàN^ _Þü NÐÇETTYPEN(&missing resource type name in string: JoíþNVýþ/BGBgHnþ?<ÿÿHzHNºùîg(.þ@ÿÞ@/.Aîþ?<ÿ "z/BgBgNºí `Â=G .N^.ŸNuÒEADHEX hexaJoíöNVýöHnÿNºã=|þüAîÿ?<ÿ "z/HnþøHnþüNºþB/./.þøNºíhBgAîÿ?<ÿ "z/HnþüHnþöNºîüg/.?.þöNºì`/- HznBg À/-  À NºßAîÿ?<ÿ "z/HnþüHnýöNºñ„/.Aîýö?<ÿ "z/Bg<Nºì,.ýö@ÿ\@R@=@ N^.ŸNuÒEADFREFlocal icon ID missing in FREFJoíðNVýìHç(nHnÿNºâ=|þþAîÿ?<ÿ "z/HnþúHnþþNºý:/ /.þúNºìbBgAîÿ?<ÿ "z/HnþþHnþðNºíög / ?.þðNºë`/- HzrBg À/-  À NºÞHnÿNºá˜=|þþBgAîÿ?<ÿ "z/HnþþHnþðNºí g/ 0.þðS@?Nºê¨`/- HzîBg À/-  À NºÝ¶=nþðýî~`>HnÿNºá2=|þþAîÿ?<ÿ "z/HnþúHnþþNºüX/ /.þúNºë€BgAîÿ?<ÿ "z/HnþþHnþôNºígÈ/ 0.þôS@?Nºê=nþôýì|`¤HnÿNºàÀ=|þþBgAîÿ?<ÿ "z/HnþþHnþøNºìÈg / ?.þøNºéÔ`/- HzôBg À/-  À NºÜâBgAîÿ?<ÿ "z/HnþþHnþøNºì€g / ?.þøNºéŒ`/- Hz„Bg À/-  À NºÜšRFi¼nýìoÿX`/- Hz`/- HzpBg À/-  À NºÙn`†0@Bg4]@gS@gTW@gœY@gâW@gü`^Aîþ?<ÿ "z/Hnÿ?<ÿÿHzNºñ>/ Aîÿ?<ÿ "z/BgBgNºæZ` BgAîþ?<ÿ "z/HnýüHnýúNºè¢g / ?.ýúNºå®`/- HzšBg À/-  À NºØ¼`ÔBgAîþ?<ÿ "z/HnýüHnýöNºé¸g / /.ýöNºå `/- Hz2Bg À/-  À NºØp`ˆ/ Aîþ?<ÿ "z/Bg<Nºå¢`h/ Aîþ?<ÿ "z/BgBgNºå„`JAîþ?<ÿ "z/HnýüHnüôNºêž.üô@ÿJ@f/- Hz�Bg À/-  À Nº×ìBgAîþ?<ÿ "z/HnýüHnüòNºçŠ g/- Hz*Bg À/-  À Nº×¬BgAîþ?<ÿ "z/HnýüHnüðNºçJ g/- HzÎBg À/-  À Nº×l/- Hz¢Bg À/- HnüôBg À/- Hz‚Bg À/- 0.üðHÀ/?< À/- HzZBg À/- 0.üòHÀ/?< À/-  À Aîüô?<ÿ "z/?.üò?.üð/ NºüL`üÚLßÀN^.ŸNuÒEADGNRLà for  @ Raw binary from: offset missing in GNRL type$number of bytes missing in GNRL typemissing filename in GNRL typelong expected in GNRL typeinteger expected in GNRL typeGNRL"code expected after . in GNRL typeJoïþNVÿü/B.-¥>@ÿ=@ÿü~` O¼ÿAí¥>0p@ÿ°n f|RGi¾nÿüoÚ.N^ _\ONÐÍETACHARJoïüNVÿúHç(n0,üòR@A¼ÿAìÿ0Aÿ>0. @!gd_@g_@gR@ g`@"g6`˜ m¦>l?-¦> l HhNºKB`0-¦>�|? l Hh NºK*`d �|09@üöRlüò`T9GüøRlüò`J9GüúRlüò`@-¤>@ÿ=@ÿú|`&M¼ÿAí¤>0`@ÿ°Gf S@?HlüüNºJàRFi¼nÿúoÔRlüòLßÀN^ _\ONÐÕPDATEMEJoëòNVûòHç nCîÿJp@"ØS@nú|BnüöBnüøBnüüBnüúBnüòRnüò0.üòA¼ÿAîÿ0Aÿ A VÀ.ÿAÿ²nüòWÁ€gÐB.ý=| þ0.üòA¼ÿAîÿ0Aÿ>pAîþ‡Bg?/Nºþg ?/Nºþh`$HnýHnþHnûò?< "ÆAîýCîûòp@ ÙS@núRnüò.ÿ@ÿ°nüòl’/. Aîý?<ÿ "z/Bg<Nºàø/. ?.üöNºßÞ/. ?.üøNºßÒ/. ?.üúNºßÆ/. ?.üüNºßºLßÀN^ _PONÐÄAPPENDMJoîüNVþüHnÿü?< Àp nÿü0¼ nÿüBh n| BgHnþüNºÖTg(/.ÿüAîþü?<ÿ "z/Bg<NºàX nÿüRh`Ê nÿü0HÀ n!@ n!nÿüN^.ŸNuÒEADSTRLJoîüNVþüHnÿü?< Àp nÿü0¼ nÿüBh n| BgHnþüNºÕÆg/.ÿüAîþü?<ÿ "z/BgBgNºßÌ`Ô nÿü0Y@ nÿü1@ nÿü0HÀ n!@ n!nÿüN^.ŸNuÒEADLSTRJoîøNVþø/ (nHnÿü?< Àp nÿüBP| /.ÿü?,NºÞâ/.ÿüB§NºßHnþüNºÕŠ=|þøBgAîþü?<ÿ "z/HnþøHnþúNºá’g /.ÿü?.þúNºÞœ/.ÿüBgNºÞ’HnþüNºÕD` /.ÿüB§NºÞ¼/.ÿüpÿ/NºÞ°HnþüNºà/.ÿüAîþü?<ÿ "z/Bg<NºÞÈ;|¦>B.þüBgHnþüNºÔŽg&HnþüNºßÞ/.ÿüAîþü?<ÿ "z/Nºü Rm¦>`Ì/.ÿüBgNºÝr nÿü0HÀ)@)nÿü(_N^.ŸNuÒEADMENUJoðNV/. NºÔŠ nBPN^ _PONÐÎEXTLN JoïNVÿ nCîÿJp@"ØS@nú/- pA¼ÿ?< Àþ/-  À /- Hz¢Bg À/- HnÿBg À/- Hz|Bg À/- möT hHh?<Bg À/- HzLBg À/- möT0(HÀ/?< À/- <.?< Àþ/-  À NºÏæN^.ŸNu×RITEERR, ID = in TYPE Bad JoîþNVþþB.HnþþHnÿþNºþÞBgAîþþ?<ÿ "z/Hnÿþ/.Nºß„ g Hz¢NºþØ`fBgAîþþ?<ÿ "z/Hnÿþ/. NºßT g HzbNºþ¨`6BgAîþþ?<ÿ "z/Hnÿþ/.Nºß$ g Hz"Nºþx`|N^ _Þü NÐÒEADVALU.control maximumcontrol minimum control valueJoíúNVýúHç~B. (nHnýüHnÿüNºýäHnýüNºÝlAîýü"Lp@"ØS@núHnýüHnÿüNºýÂBFBgAîýü?<ÿ "z/HnÿüM¼ ã@AìHpNºÞZRF   FWÁ€@g¾  g Hz¦Nºý–`THnýüHnÿüNºý^||Aîýü?<ÿ "z/HnÿüHnþüNºàÊBgAîþü?< "z/HzLNºéxg|BgAîþü?< "z/HzNºéTgB,BgAîþü?< "z/HzôNºé2g|BgAîþü?< "z/HzÆNºégB,.ýü@ÿ°nÿünÿJHnýüHnÿüNºüŽBgAîýü?<ÿ "z/HnÿüHlNºÝ4  g HzhNºü†`DHnýüHnÿüNºüPBgAîýü?<ÿ "z/HnÿüHl NºÞX  g Hz"NºüH`| LßÀN^.ŸNuÒEADTEMPBrefCon defProcIDNOGOAWAYGOAWAY INVISIBLEVISIBLE boundsRectJoîìNVþìHç(n nB�BgHnþðNºýžgxBF`/ M¼ ã@?6ðNºéRF Foæ/ ?.ÿøNºèü.ÿþg><`BG/ ?Nºèæ.ÿÿg><`BG/ ?NºèÐ/ /.ÿúNºéBg/ Aîþð?<ÿ "z/Nºé*<.þð@ÿÐ|HÀ n €LßÀN^ _PONÐÒEADWINDJoîæNVþæHç(n BgHnþðNºüÞgšBgHnþêHnþæHnþèNºûÖg‚BG`/ O¼ ã@?6ðNºè4RG Goæ/ ?.þêNºè".ÿþg<<`BF/ ?Nºè / ?.þèNºè/ ?.þæNºçø/ ?.ÿøNºçî/ /.ÿúNºè"Bg/ Aîþð?<ÿ "z/NºèH>.þð@ÿÐ|HÀ n €LßÀN^ _PONÐÒEADCONTJoìÒNVüÒHç(n /- HzòBg ÀHnþÖHnüÔNºùðBgAîþÖ?<ÿ "z/HnüÔHnÿðNºÚ– g4/- HzˆBg À/- HnþÖBg À/- <"?< Àþ/-  À BgAîþÖ?<ÿ "z/HnüÔHnÿòNºÚ< g4/- HzBg À/- HnþÖBg À/- <"?< Àþ/-  À BgAîþÖ?<ÿ "z/HnüÔHnÿôNºÙâ g4/- Hz~Bg À/- HnþÖBg À/- <"?< Àþ/-  À BgAîþÖ?<ÿ "z/HnüÔHnÿöNºÙˆ g4/- HzøBg À/- HnþÖBg À/- <"?< Àþ/-  À B/ ?.ÿðNºæ/ ?.ÿòNºåø/ ?.ÿôNºåî/ ?.ÿöNºåäHnþÖHnüÔNºøRAîþÖ?<ÿ "z/HnüÔHnüÖNºÛÊAîÿÖCîüÖp ÙS@nú0‘BgAîþÖ?<ÿ "z/HnüÔHnÿúNºØÊ g4/- HzBg À/- HnþÖBg À/- <"?< Àþ/-  À / ?.ÿúNºåFBgAîÿÖ?< "z/HzÆNºäg / ?<Nºå`/ BgNºåAîþÖ?<ÿ "z/HnüÔHnüÖNºÛAîÿÖCîüÖp ÙS@nú0‘BgAîÿÖ?< "z/Hz^Nºã¢g / ?<Nºä¾`/ BgNºä´BgAîþÖ?<ÿ "z/HnüÔHnÿìNºÙ6 g4/- HzüBg À/- HnþÖBg À/- <"?< Àþ/-  À / BgNºäR/ ?.ÿîNºäHHnþÖHnüÔNºö¶BgAîþÖ?<ÿ "z/HnüÔHnÿþNº×\ g4/- HzfBg À/- HnþÖBg À/- <"?< Àþ/-  À / ?.ÿþNºãØBgHnýÖNºÊ|/- <"?< Àþ/- HnýÖBg À/- HzúBg À/- 0.ÿðHÀ/?< À/- <,?< Àþ/- 0.ÿòHÀ/?< À/- <,?< Àþ/- 0.ÿôHÀ/?< À/- <,?< Àþ/- 0.ÿöHÀ/?< À/- HzdBg À/- 0.ÿþHÀ/?< À/-  À n/Bg/ CîýÖ?<ÿ "z/ NºãT0 _Ð|HÀ €L߀N^ _PONÐÒEADDIAL&--list ": Can't find item list ID in "Can't find refCon in "goAwayVisibleCan't find window proc ID in "*Can't find right coordinate of Dialog in "+Can't find bottom coordinate of Dialog in ")Can't find left coordinate of Dialog in "(Can't find top coordinate of Dialog in "Dialog JoìòNVüò/ (n/- Hz Bg ÀHnþHnýôNºóâBgAîþ?<ÿ "z/HnýôHnýöNºÔˆ g4/- Hz¤Bg À/- HnþBg À/- <"?< Àþ/-  À BgAîþ?<ÿ "z/HnýôHnýøNºÔ. g4/- Hz Bg À/- HnþBg À/- <"?< Àþ/-  À BgAîþ?<ÿ "z/HnýôHnýúNºÓÔ g4/- HzšBg À/- HnþBg À/- <"?< Àþ/-  À BgAîþ?<ÿ "z/HnýôHnýüNºÓz g4/- HzBg À/- HnþBg À/- <"?< Àþ/-  À B/ ?.ýöNºßô/ ?.ýøNºßê/ ?.ýúNºßà/ ?.ýüNºßÖHnþHnýôNºòDBgAîþ?<ÿ "z/HnýôHnýþNºÒê g4/- HzhBg À/- HnþBg À/- <"?< Àþ/-  À / ?.ýþNºßfHnÿ?<Hz NºÝÜ/ HnÿHnüò?< "ÆAîüò"Lp@"ØS@nú/- 0.ýöHÀ/?< À/- <,?< Àþ/- 0.ýøHÀ/?< À/- <,?< Àþ/- 0.ýúHÀ/?< À/- <,?< Àþ/- 0.ýüHÀ/?< À/- HzlBg À/- 0.ýþHÀ/?< À/-  À /- Hz0Bg À/- HnþBg À/-  À (_N^.ŸNuÒEADALERîAlert stages are --list alertCan't find item list ID in ")Can't find right coordinate of Alert in "*Can't find bottom coordinate of Alert in "(Can't find left coordinate of Alert in "'Can't find top coordinate of Alert in "Alert: JoðNVBg"nAéüð?< "z/Hz2NºÜgn€ n/(ûì?. NºÌîN^ _\ONÐÁPPENDTY DisabledJoïþNVÿþHç(n?. /.NºÿŠ n fTHlþHlýðNºïVBgAìþ?<ÿ "z/HlýðHlýüNºÏü gHzbNºïP/,ûì?<NºÌh/,ûì?,ýüNºÌî`,BgHlþNºÃ8/,ûìAìþ?<ÿ "z/?<<NºÍ gHz0Nºí’/,ûì?<NºÊª/,ûì?,ýüNºË0(_N^.ŸNuÒEADPICICan't find picture ID in:JoðNVBg/.Nºý4 n/(ûìBgNºÊRN^.ŸNuÒEADUFIEJoðNV/ (nHlþHlýðNºìÜAìþ?<ÿ "z/HlýðHlûðNºÐTAìþ?<ÿ "z/HlýðHlüðNºÐ8/,ûìBgNºÊx/,ûìBgNºÊnHlþHlýðNºì„BgAìþ?<ÿ "z/HlýðHlýòNºÍ* gHzªNºì~BgAìþ?<ÿ "z/HlýðHlýôNºÌü gHzXNºìPBgAìþ?<ÿ "z/HlýðHlýöNºÌÎ gHzNºì"BgAìþ?<ÿ "z/HlýðHlýøNºÌ  gHz²Nºëô/,ûì?,ýòNºÉž/,ûì?,ýôNºÉ’/,ûì?,ýöNºÉ†/,ûì?,ýøNºÉzBgAìûð?< "z/Hz^Nº×Þg?</.Nºûî`ÀBgAìûð?< "z/Hz&Nº×°g?</.NºûÀ`’BgAìûð?< "z/HzðNº×‚g?</.Nºû’`dBgAìûð?< "z/HzºNº×Tg?</.Nºûd`6BgAìûð?< "z/Hz‚Nº×&g?</.Nºû6`BgAìûð?< "z/HzJNºÖøg?</.NºûÜ`ÚBgAìûð?< "z/HzNºÖÊg?</.Nºû®`¬BgAìûð?< "z/HzÚNºÖœg /.Nºûâ`‚BgAìûð?< "z/Hz¨NºÖrg /.NºüN`XBgAìûð?< "z/HzvNºÖJg /.Nºü¾`0BgAìûð?< "z/HzDNºÖ"g /.Nºü–`HzNºéØ(_N^.ŸNuÒEADITEMNo such itemlist kindUserItem UserFieldPicItemIconItemEditTextStatText RadioItemChkItemBtnItemResCItemCtrlItem#Can't find right coordinate of item$Can't find bottom coordinate of item"Can't find left coordinate of item!Can't find top coordinate of itemJoëìNVûêHç(nHnûì?< Àp nûìBP| HnþHnýðNºè\BgAîþ?<ÿ "z/HnýðHnýúNºÉ gHzÊNºèV/- Hz²Bg À/- 0.ýúHÀ/?< À/- Hz†Bg ÀSnýú/.ûì?.ýúNºÅÌ=nýúûêBG` /NºúêRGi¾nûêoð nûì0HÀ)@/- /,?< À/- Hz*Bg À/-  À )nûìL߀N^.ŸNuÒEADITEM0 bytes. items, Item list: Can't find nItemsJoíòNVýðHç(nHnÿü?< Àp nÿüBP| HnýüHnýòNºç$BgAîýü?<ÿ "z/HnýòHnýôNºÇÊ gHz�Nºç/.ÿü?.ýôNºÄÈ=nýôýð|`:Hnþü?<Hz\NºÒÜ~`/.ÿüO¼ÿAîþü0p@ÿ?NºÃþRG GoÞRFi¼nýðoÀ nÿü0HÀ)@)nÿüLßÀN^.ŸNuÒEADPATL, pattern listCan't find number of patternsJoíòNVýò/ (nHnÿü?< Àp nÿüBP| HnýüHnýòNºæBgAîýü?<ÿ "z/HnýòHnýôNºÆÂ gHzNºæBgAîýü?<ÿ "z/HnýòHnýöNºÆ” gHzÞNºåè lCîþüp@"ØS@nú/- Hz°Bg À/- HnþüBg À/- Hz�Bg À/- 0.ýöHÀ/?< À/- HzhBg À/- 0.ýôHÀ/?< À/-  À Aîþü?<ÿ "z/?.ýô?.ýö/.ÿüNºÛ– nÿü0HÀ)@)nÿü(_N^.ŸNuÒEADRAW @ for  @ Raw binary from: Can't find offsetCan't find nBytesJoïìNVÿêHç möv0( R@ möv1@ Hnÿü?<$ Àp(nÿüHl?< ÀpB”)mövB, | B¬9|ÿÿpÿ)@9nB¬Bl"Hnÿì?<" Àp&nÿìBSBgNº¿Ä>BgNº¿¼</ ?NºÂ/ ?NºÂ Ð|HÀ�üã@ÁÆ8=Dÿêz`/ BgNº¿.NºÁNREiºnÿêoê0HÀ)@/- Hz„Bg À/- 0.HÀ/?< À/- Hz\Bg À/- /,?< À/-  À )KJ­öXf+nÿüöX+möXöP` möP ®ÿü+nÿüöPLßðN^ _TONÐÍAKEABMA is Bitmap length forJoîþNVþþ/ n CîÿJp@"ØS@núAîÿ?<ÿ "z/Nº¿Ê~` ÐnS@?NºþPRG GoêHmùàBg À(.N^ _\ONÐÒEADALI1JoíæNVýäHç n CîÿJp@"ØS@núBnHnÿHzvHnýæ?< "ÆAîýæ?<ÿ "z/Nº¿HBgNº½Ä0HÀ+@ÿàB§Nº¾B,~`B§Nº¾r ;@ÿöRG Goì †ÿ^À/Hmùà À4 ÀfØBgNº½zpç@2’@;AùÞB§Nº½ô,0-ùÞk°|nAúâ2æIDA0ÿ <g6/- Hz¶Bg À/- 0-ùÞHÀ/?< À/-  À HmùàBg À(`p mùÞg=Fýä~`BgNº¼ú;_ÿöRGi¾nýäoì`6B§Nº½¬ ;@ÿö Q€*. g=E`J…oBgNº¼¾Nº¸–S…`î` mùÞfÿHmùàBg À(LßàN^ _\ONÐÐROCESSOBad blocktype = ·.OBJJoîþNVþþ nCîÿJp@"ØS@núBgAîÿ?<ÿ "z/BgNºþ,=_þþ=nþþ N^.ŸNuÓIZEDRVRJoîþNVþþ n CîÿJp@"ØS@núBgAîÿ?<ÿ "z/<NºýÞ=_þþN^ _PONÐÏUTPUTOBJoïúNVÿøHçBn 0.2SAC¼ÿé@Aíæ@:00-æHÁüÐ|<0-æFS@=@ÿøBG`&0S@A¼þ ã@Aí¦Bºpf ç@=@ ` VFRGi¾nÿøoÔLßàN^ _TONÐÇETJTOFFJoïøNVÿöHçBG0-æHÁüÐ|<0.2SAC¼ÿé@Aíæ@800-æFS@=@ÿöBE`0S@A¼þ ã@Aí¦B¸pfRGVFREiºnÿöoÜ=G LßðN^ _TONÐÇETJTENTJoíäNVýÞHç nCîÿJp@"ØS@núHnÿHzHnýä?< "ÆAîýä?<ÿ "z/Nº¼B †ÿ^À/Hmùà À4 Àf(BgNººnpç@2’@;AùÞB§Nººè, mùÞfHB-ÿÿz/p/ "„ =@ýâ~`$0S@A¼þ ã@/BgNºº~2 Aí¦B1�RGi¾nýâoÖ`¬ mùÞfH|ÿÿz/p/ "„ =@ýà~`$0S@A¼þ ã@/BgNºº,2 Aí¦B1�RGi¾nýàoÖ`Z mùÞfH|ÿÿz/p/ "„ =@ýÞ~`$0S@A¼þ ã@/BgNº¹Ü2 Aí¦B1�RGi¾nýÞoÖ` Y€/Nººd mùÞWÀ€@gþÀ  g\/-  À /- Hz€Bg À/- HnÿBg À/- HzPBg À/-  À /- pA¼ÿ?< Àþ/-  À Nú#zHmùàBg À(LßàN^.ŸNuÒEADJTAB4 is not executable!Fatal Error -- the file .OBJJoïúNVÿôHç-ÿÿH€gJS@g S@gÎ`,;m¦læH=mæHÿø|`¬0S@A¼ÿ é@Aíæ:Ið8† S@ÁüÐ|> T@2SAC¼þã@Aí¦B;pör V@2SAC¼þã@Aí¦B;pöt)mör0S@A¼þ ã@Aí¦B;pör R@2SAC¼þã@Aí¦B;pöt)mör X@2SAC¼þã@Aí¦B9pRFi¼nÿøoÿP`d;m¦\æH;m¦^æF:-æF/- HznBg À/- 0-æHHÀ/?< À/- Hz Z@2SAC¼þã@Aí¦B20HÁ)A T@2SAC¼þã@Aí¦B;pör V@2SAC¼þã@Aí¦B;pöt)mör R@2SAC¼þã@2-æFåAÒ|4SBE¼þãAAí¦B40Aí¦B”p9B ¼mæHf9E`8 Ð|2SAC¼þã@"RA4SBE¼þãAAí¦B40Aí¦B”pHÂ…ü9BšlRFi¼nÿöoþü`ò;m¦\æH=mæHÿô|`Ø0S@A¼ÿ é@Aíæ:Ið8† S@é@Ð|> Z@2SAC¼þã@Aí¦B20HÁ)A T@2SAC¼þã@Aí¦B;pör V@2SAC¼þã@Aí¦B;pöt)mör R@2SAC¼þã@Aí¦B20’m¦`HÁƒü çA9A Ð|2SAC¼þã@"RA4SBE¼þãAAí¦B40Aí¦B”pHÂ…ü 9BRFi¼nÿôoÿ$LßàN^NuÍAKESEGL #JTEntries = #Segs = JoîüNVþü/ nCîÿJp@"ØS@nú möv0( R@ möv1@ Hnþü?<$ Àp(nþüHl?< ÀpB”)mövB¬| lCîÿp@ ÙS@núB¬9|ÿÿpÿ)@BlB¬9|0"J­öXf+nþüöX+möXöP` möP ®þü+nþüöP-nþü (_N^.ŸNuÄEFINECOJoîúNVþøHç nCîÿJp@"ØS@nú=mæHþøBG`ðB§Aîÿ?<ÿ "z/Nºþþ(_9GJlf9| " lf 0,"X@9@"JGg0S@A¼ÿ é@Aíæ<"0X�)A`�-ÿÿH€gNS@gS@g4`v0-æHÁüÐ|2SAC¼þã@Aí¦B;pæF0-æFç@Ð|HÀ+@æB`D0-æFç@Ð|HÀ+@æB`20-æHé@Ð|2SAC¼þã@Aí¦B20’m¦`HÁƒü çAÒ|HÁ+AæB)mæBRGi¾nþøoÿ L߀N^.ŸNuÄEFINESEJoïNVÿ nCîÿJp@"ØS@núAîÿ?<ÿ "z/Nºø"Nºú^Aîÿ?<ÿ "z/NºþˆN^.ŸNuÍAKECODEJoïîNVÿâHç-ö]gJ/-  À /- Hz†Bg À/- -æBr��/?< À/- HzTBg À/-  À /-  À BgNº¯v -æBr Ð�r��?Nº¯d;m¦Lör;m¦Nöt-mörÿô;m¦Pör;m¦Röt-mörÿø .ÿøÐ®ÿô( „l(</Nº¯X -æBr��/Nº¯Jp /Nº¯B-ÿÿH€g6S@g S@g„`¤0-æHÁüÐ|<=mæHÿì~`\Bg?Nºöx=_ÿêz`B T@2SAC¼þã@Aí¦B20QA?Nº®®VF? R@2SAC¼þã@Aí¦B?0Nº­†ZF?. GN­WÀ GHmWÁ€ GNíWÁ€ GAíWÁ€ GCíWÁ€ GEíWÁ€ GGíWÁ€ GIíWÁ€ GKíWÁ€ GMíWÁ€ GOíWÁ€g|`B..N^ _\ONÐÓHOULDPAJoðNVHç>. (n,þñ gBg?/.NºÿRg|þñ`B,þñ`bB,þñ¾lþîoX-ÿÿH€g:S@gS@g`F �lþîHÀ�üç@Ð| T@>`./- HzBBg À/-  À ` �lþîHÀ�ü ç@Ð| T@>=GL߀N^ _\ONÐÃODEFILT Logic error!JoíîNVýêHç n CîÿJp@"ØS@nú8.JDfNºûÎ`ì0S@A¼ÿ é@Aíæ:IðB.þñ-ÿÿH€g8S@gS@g0`V0-¦ZÐm¦Fr ÃíæHÒ@=AþîBg?NºòzNº«VBg?NºòòNº«J`(0-¦ZÐm¦V2-æHëAÒ@Ò| =Aþî?, Nº«(?,Nº« HnÿHz¢Hnýî?< "ÆAîýî?<ÿ "z/Nº¯n/, Nº®ìBBgNº­àpç@2’@;AùÞB§Nº®Z : mùÞg Y@HÀ/Nº®º`rB§Nº®v-_þò -ÿÿg4/,p/ "„ =@ýì~`BgBgNº­Þ/NºýôNºª‚RGi¾nýìoä`*/,p/ "„ =@ýê~`BgNº­¬NºªVRGi¾nýêoì|Hmùà À4 Eÿ^ÀÀ€gÿHHmùàBg À(  gl/-  À /- HzzBg À/- HÄ/?< À/- HzVBg À/- HnÿBg À/-  À /- pA¼ÿ?< Àþ/-  À Nú>LßðN^ _\ONÐÏUTPUTCO. of !Fatal Error -- cant find segment .OBJJoïþNVÿüHç(n/- lHh?<Bg À/- < ?< Àþ/- /,Bg À l@ÿr’@=Aÿü~`/- < ?< ÀþRGi¾nÿüoæ/- HzPBg À/- /,?< À/- Hz$Bg À/-  À L߀N^.ŸNuÐRINTOBJ bytes long. is JoëþNVûþHç(n+LöTBg/,HzNº´¼gB0,HÀ�ü@H@J@J@fB¬`&Bg l?<ÿ "z/BgNº¶t0HÀ)@/ NºþÎ`Bg/,Hz´Nº´hg*Bg l?<ÿ "z/BgNº·D0HÀ)@/ Nºþ’`âBg/,Nºµg¬Bg l?<ÿ "z/Nºîb0HÀ)@/ NºþZBg/,Hz>Nº³øgpJ¬gj lp0Aÿ A.VÀ lr0Bÿ B&VÁÀg>=|AþprC¼ÿAîþ� l/Hnþ/,Hnüþ?< "Æ _Cîüþp@ ÙS@nú`(Bg/,Hz²Nº³rgp)@B, /,Nº½¢`Bg/,Hz„Nº³JgB, / Nºçz`àBg/,Hz^Nº³*gpD)@B, /,Nº½Š`¸Bg/,Hz0Nº³g)|€B, /,Nº½ö`ŽBg/,HzNº²Øg8| Hm¦@?< Àp m¦@BPBg/-¦@Nº¿N0HÀ)@)m¦@B, `DBg/,Hz°Nº²Žg2Bg l?<ÿ "z/<Nº´\0HÀ)@| / Nºü°`Bg/,HzfNº²JBg/,HzRNº²<€gnBg/,Nº¡ôHz6/,Hnûþ?< "ÆAîÿCîûþp@ ÙS@nú l@ÿR@HÀ)@p",S�C¼ÿAîÿ� lCîÿp@ ÙS@núB, `pBg/,HzÈNº±ºgp )@B, /,NºÙ0`HBg/,HzšNº±’gB, /,HlNºÒú`"Bg/,HznNº±lgB, / NºÊœ`Bg/,HzHNº±LgB, / NºË `âBg/,Hz"Nº±,gB, / Nºä$`ÂBg/,HzüNº± gB, / NºË^`¢Bg/,HzÖNº°ìgB, /,HlNºÐ¬`|Bg/,HzªNº°ÆgB, /,HlNºÑL`VBg/,Hz~Nº° Bg/,HzjNº°’€gB, / NºåÊ`&Bg/,HzBNº°pg8| Hm¦@?< Àp m¦@BPBg/-¦@Nº½L0HÀ)@)m¦@B, `ÜBg/,HzòNº°&g8| Hm¦@?< Àp m¦@BPBg/-¦@Nº¾0HÀ)@)m¦@B, `’Bg/,Hz¢Nº¯Üg6| Hm¦@?< Àp m¦@BPBg/-¦@NºÀÂ0HÀ)@)m¦@B, `HBg/,HzTNº¯”g6| Hm¦@?< Àp m¦@BP/-¦@NºÁð m¦@0HÀ)@)m¦@B, L߀N^.ŸNuÃASEOBJE˜GNRLICN#BNDLFREFANYBRAWBCNTLWINDMENUDITLLSTRSTR#DLOGALRT STRGSTR PICTHEXAICONCURSPAT#PAT DRVRFWIDFONTJoðNV/ (nB.(­özJ”g" TXˆCî p± VÈÿüf |`` T(�`Ú(_N^ _PONÐÆINDTYPEJoíðNVýðHç nCîÿJp@"ØS@núB. =|þü.ÿ@ÿ>JGf`„-| ýô¾nþü\À2.þüC¼ÿAîÿ0Bÿ B WÁÀgRnþü`Ö¾nþül`HAîýüCúX Ù0‘|`NBg0.þüA¼ÿAîÿ0Aÿ?Nº¨¦M¼ÿAîýü0`@ÿ°_g`0S@A¼ Aîý÷¼ RnþüRF Fo¬| Aîÿ?<ÿ "z/HnýøHnþüNº¸Ö¾nþü^À2.þüC¼ÿAîÿ0Bÿ B=VÁÀgRnþü`Ö0.þüA¼ÿAîÿ0Aÿ A=f RnþüAîÿ?<ÿ "z/HnýôHnþüNº¸rAîýøCújp± VÈÿüf-|STR ýøBg/.ýøHmövNºþ*g`.Hmöv?< ÀpRmöL(möv(­öz)nýø)nýôBl +mövözLßÀN^.ŸNuÔYPEDEFI STRGTYPEJoíüNVýüHç nCîÿJp@"ØS@nú n CîþJp@"ØS@nú&n0+ R@7@ Hnýü?<$ Àp(nýüHl?< ÀpB, B”)KB¬| lCîþp@ ÙS@núHnÿHz° "–gB¬`Hl?< Àp lCîÿp@ ÙS@nú9|ÿÿpÿ)@9n B¬9n".ÿ@ÿJ@o nýü1möNRmöN` nýü1|ÿÿ/.ýüNºö®J­öXf+nýüöX+möXöP` möP ®ýü+nýüöPLßN^ _ÞüNÐÍAKEOBJEJoïúNVÿúHç&n >.(nB.BSBnÿü|BB¾n_À"ÂgšO¼ÿAìÿ0p@ÿ @@f z=SÿüBS`rO¼ÿAìÿ0p@ÿ @0\ÀO¼ÿAìÿ0pAÿ A9_ÁÀg&0Áü O¼ÿAìÿ0pAÿÒ@’|06�|`O¼ÿAìÿ0p@ÿ @-fx`BRG`ÿ\g0.ÿüï@ÑSg0D@6€LßðN^ _Þü NÐÇETNUM JoêòNVúòHç nCîÿJp@"ØS@núB. nB nB nBP n BP.ÿ@ÿ<.ÿ@ÿJ@f`î~¼G\ÀO¼ÿAîÿ0pAÿ A WÁÀgRG`Þ¼Gl`Â8¼G\ÀO¼ÿAîÿ0pAÿ A,VÁÀgRG`Þ¼Gl(/- HzªBg À/- HnÿBg À/-  À `r=Gýøz¼E\ÀK¼ÿAîÿ0PAÿ A(VÁÀgRE`Þ=|ýô¼nýô\À2.ýôC¼ÿAîÿ0Bÿ B)VÁÀgRnýô`Ö¼El:¼nýôl=FýôBg R@??/./Nºýº g`êBg R@??.ýô/. /Nºý˜ g n BP| ¸nýøf`¶>¾nýø]ÀO¼ÿAîÿ0pAÿ A!VÁÀgRG`ܾnýøm0 n/Hnÿ? �D?Hnüò "Ì _Cîüòp@ ÙS@nú nB`X n/Hnÿ? �D?Hnûò "Ì _Cîûòp@ ÙS@nú n/Hnÿ R@?0.ýø�GS@?Hnúò "Ì _Cîúòp@ ÙS@núLßðN^ _ÞüNÐÐARSESTRmissing comma in: JoêúNVúú/ nCîÿJp@"ØS@nú/- Hz"Bg À/- HnÿBg À/-  À /-  À Hmü0Hnÿ?<ÿþ ÀŽ ÀR>JGg*/- HzÄBg À/- HÇ/?< À/-  À Nº“öHnúúNº—~Aíø~Cîúúp@ ÙS@núHmü0 À4 g(BgHnþNº”ºgBgAîþ?<ÿ "z/Nºø® gôBgAîþ?<ÿ "z/HnûþHnüþHnûüHmöJ/Nºüˆg¬HnûþHz "–gAîûþCîüþp@ ÙS@nú mövXˆCúêp± VÈÿüfAîüþ?<ÿ "z/Nºê"`^ mövXˆCú¼p± VÈÿüfAîüþ?<ÿ "z/?.ûüNºÞž`0/-övAîûþ?<ÿ "z/Aîüþ?<ÿ "z/?.ûü?-öJNºù¨`/- Hz4Bg À/-  À Nº’ª`þÊHmü0Bg À(.N^.ŸNuÓCANFILEp)Syntax error in resource definition file.ALI1CODE*RESET Error in ScanFile"Scanning resource definition file JoðNVB­öXB­özBmöNBmöLN^NuÉNITOBJLJoðNV/-þŠ/< "ŠJŸgBgNº—Ð`æN^NuÐADTOBLOJoïþNVÿþ//-öjNº™/-önNº™ -ön�­öj/Nº˜ú -öf�­ön/Nº˜ì~`BgNº—€RG Gðoò.N^Nu×RITEHEAJoïöNVÿöHç(möXB‡+mþŠöj g)G/,Nº˜ Bg/,Nº¥tg l?<ÿ "z//,Nºß`ÌBg/,HzêNº¤ng l?<ÿ "z/?,NºìJ`žBg/,Hz¶Nº¤@gBg l?<ÿ "z/<Nº§<`l, g l?<ÿ "z//,Nº˜˜`L, g6Bg l/(Nº¥¶g|ùÛ l?<ÿ "z//,Nº™ŽB-ùÛ` /,/,Nº™Ü ,ЇX€.(T`þìLßÀN^Nu×RITEODA FWIDCODEJoïþNVÿþ/+mþŠön~`BgNº–RG Goò -öb�­ön?Nº— -ö^�­ön?Nº— .N^Nu×RITEMHEJoïøNVÿøHç&möz gb(möX'mþŠ gP·ìfF?,Nº–ÊBg/,NºvNº–¼?,"Nº•ˆBgBg/,NºhNºnNº•tBg/,NºLNº–’B§Nº–Â(T`¬&S`šLßN^Nu×RITEOPTJoïúNVÿúHç+mþŠöb0-öLS@?Nº–T(möz g¢-ö]gX/- Hz¶Bg À/- Hl?<Bg À/- Hz�Bg À/- 0, HÀ/?< À/- HzdBg À/-  À ~`0S@A¼4p@ÿ?Nº”¦RG Goâ0, S@?Nº•¾ ,�­öb?Nº•°(T`ÿ\L߀N^Nu×RITETYP objects. has Type JoïöNVÿöHç+mþŠö^(möXB‡(möX gVJ¬gL l/HzZ "´g:)G l@ÿ?Nº” l?<ÿ "z/Nº•Œ l@ÿHÀЇR€.(T`¦L߀N^Nu×RITENAMJoðNVNºüNºüVNºûÊNºýšNºþlNºýàNºÿTN^Nu×RITEEVE "ÀNV,_NU£2Ÿí "+O£:+N£6B§ "+_£2B-ùÛNºûV/- p A¼ÿ?< Àþ/-  À ªª‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»» ‡ÿÿ»» ‡ÿÿ»» ‡ÿÿ»» ‡ÿÿ»» ‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ»»‡ÿÿ‡ÿÿ‡ÿÿ€ÿ€€ÿÿüÿÿ€ÿ€ € € € € € € € € € 'ÿ�ÿûÿÿÿúÿÿÿùÿÿÿøÿÿÿ÷ÿÿÿöÿÿÿõÿÿÿôÿÿÿóÿÿÿòÿÿÿñÿÿÿðÿÿÿïÿÿÿîÿÿÿíÿÿÿìÿÿÿëÿÿÿêÿÿÿéÿÿÿèÿÿÿçÿÿÿæÿÿÿåÿÿÿäÿÿÿãÿÿÿâÿÿÿáÿÿÿàÿÿ :€0û ;‡ÿ/ÿßÿÿ!€3ÿ!€42!€53!€64!€75!€86!€97!€:8!€;9! ‡ÿ:ÿÞÿÿ"€>ÿ"€?="€@>"€A?"€B@"‡ÿA€Mÿ€NL€OM€PN€QO€RP€SQ‡ÿR€Uÿ€VT€WU€XV€YW€ZX€[Y‡ÿZ€]ÿ€^\€_]€`^€a_€b`€ca€db€ec €fd €ge €hf €ig €jh€ki€lj€mk€nl€om€pn€qo€rp€sq€tr€us€vt€wu€xv€yw€zx€{y€|z €}{!€~|"€}#€€~$€�%€‚€&€ƒ�'€„‚(€…ƒ)€†„*€‡…+‡ÿ†€‰ÿ€Šˆ€‹‰‡ÿŠ €�ÿ €ŽŒ €�� €�Ž €‘� €’� €“‘ €”’ €•“ €–” €—• €˜– €™— €š˜ €›™ €œš €�› €žœ €Ÿ� € ž €¡Ÿ €¢  €£¡ €¤¢ €¥£ €¦¤ €§¥ €¨¦ €©§ €ª¨ €«© €¬ª €­« !€®¬ "€¯­ #€°® $€±¯ %€²° &€³± '€´² (€µ³ )€¶´ *€·µ +€¸¶ ,€¹· -€º¸ .€»¹ /€¼º 0€½» 1€¾¼ 2€¿½ 3€À¾ 4€Á¿ 5€ÂÀ 6€ÃÁ 7€Ä 8€Åà 9€ÆÄ :€ÇÅ ;€ÈÆ <€ÉÇ =€ÊÈ >€ËÉ ?€ÌÊ @€ÍË A‡ÿÌ €Ïÿ €ÐÎ €ÑÏ €ÒÐ €ÓÑ €ÔÒ €ÕÓ €ÖÔ €×Õ €ØÖ €Ù× €ÚØ €ÛÙ €ÜÚ €ÝÛ €ÞÜ €ßÝ ‡ÿÞ €áÿ €âà €ãá €äâ €åã €æä €çå €èæ €éç €êè €ëé €ìê €íë €îì €ïí €ðî €ñï €òð €óñ €ôò €õó €öô €÷õ €øö €ù÷ €úø €ûù €üú €ýû €þü €ÿý �þ �ÿ !‡ÿ �ÿ � � � � � �  ‡ÿ � ÿ �  �  � � � � � � � � � � � � � � ‡ÿ�ÿ��� �!�" �#!�$"�%# �&$ �'% �(& �)' �*(�+)�,*�-+�.,�/-�0.�1/�20�31�42�53�64�75�86�97�:8�;9�<: �=;!�><"�?=#�@>$�A?%�B@&�CA'�DB(�EC)�FD*�GE+�HF,�IG-�JH.�KI/�LJ0�MK1�NL2�OM3�PN4�QO5�RP6�SQ7�TR8�US9�VT:�WU;�XV<�YW=�ZX>�[Y?�\Z@�][A�^\B�_]C�`^D�a_E‡ÿ`�cÿ�db�ec�fd‡ÿe�hÿ‡ÿg�jÿ�ki�lj�mk�nl�om�pn�qo�rp �sq �tr �us �vt �wu�xv�yw�zx�{y�|z�}{�~|�}�€~���‚€�ƒ�‡ÿ‚�…ÿ�†„�‡…�ˆ†�‰‡�Šˆ�‹‰�ŒŠ��‹ �ŽŒ ��� ��Ž �‘� �’��“‘�”’�•“�–”�—•�˜–‡ÿ—�šÿ�›™�œš��›�žœ�Ÿ�� ž�¡Ÿ�¢  �£¡ �¤¢ �¥£ �¦¤ �§¥�¨¦�©§�ª¨�«©�¬ª�­«�®¬�¯­�°®�±¯�²°�³±�´²�µ³�¶´�·µ�¸¶�¹· �º¸!�»¹"�¼º#�½»$�¾¼%�¿½&‡ÿ¾�Áÿ�ÂÀ‡ÿÁ�Äÿ�ÅÃ�ÆÄ�ÇÅ�ÈÆ�ÉÇ�ÊÈ�ËÉ�ÌÊ �ÍË �ÎÌ �ÏÍ �ÐÎ �ÑÏ�ÒÐ�ÓÑ�ÔÒ�ÕÓ�ÖÔ�×Õ�ØÖ�Ù×�ÚØ�ÛÙ�ÜÚ�ÝÛ�ÞÜ�ßÝ�àÞ�áß�âà�ãá �äâ!�åã"�æä#�çå$�èæ%�éç&�êè'�ëé(�ìê)�íë*�îì+�ïí,�ðî-�ñï.�òð/�óñ0�ôò1�õó2�öô3�÷õ4�øö5�ù÷6‡ÿø�ûÿ�üú�ýû�þü�ÿý‚þ‚ÿ‚‚ ‚ ‚ ‚ ‚ ‚‚ ‚ ‚  ‚  ‚  ‚ ‚ ‚‚‚‚‚‚‚‡ÿ‚ÿ‚‚‚‚‚‚‚‚  ‚! ‚"  ‚#! ‚$" ‚%#‚&$‚'%‡ÿ&‚)ÿ‚*(‚+)‚,*‡ÿ+‚.ÿ‚/-‡ÿ.‡ÿÿ‚2ÿ‚31‚42‚53‚64‚75‚86‚97‚:8 ‚;9 ‚<: ‚=; ‚>< ‚?=‚@>‚A?‚B@‚CA‚DB‚EC‚FD‚GE‚HF‚IG‚JH‚KI‚LJ‚MK‚NL‚OM‚PN‚QO ‡ÿP‚Sÿ‚TR‚US‚VT‚WU‚XV‚YW‚ZX‚[Y ‚\Z ‚][ ‚^\ ‚_] ‚`^‚a_‚b`‚ca‚db‚ec‚fd‚ge‚hf‚ig‚jh‚ki‚lj‚mk‚nl‚om‚pn‚qo‚rp ‡ÿq‚tÿ‚us‚vt‚wu‡ÿv‚yÿ‚zx‚{y‚|z‚}{‚~|‚}‚€~‚� ‚‚€ ‚ƒ� ‚„‚ ‚…ƒ ‚†„‚‡…‚ˆ†‚‰‡‚Šˆ‚‹‰‚ŒŠ‚�‹‚ŽŒ‚��‚�Ž‚‘�‚’�‚“‘‚”’‚•“‚–”‚—•‚˜– ‚™—!‚š˜"‚›™#‚œš$‚�›%‚žœ&‚Ÿ�'‚ ž(‚¡Ÿ)‚¢ *‚£¡+‚¤¢,‚¥£-‚¦¤.‚§¥/‚¨¦0‚©§1‚ª¨2‚«©3‚¬ª4‚­«5‚®¬6‚¯­7‚°®8‚±¯9‚²°:‚³±;‚´²<‚µ³=‚¶´>‚·µ?‚¸¶@‚¹·A‚º¸B‚»¹C‚¼ºD‡ÿ»‚¾ÿ‚¿½‚À¾‚Á¿‡ÿÀ ‚Ãÿ ‚Ä ‚Åà ‚ÆÄ ‚ÇÅ ‚ÈÆ ‚ÉÇ ‚ÊÈ ‚ËÉ ‚ÌÊ ‚ÍË ‚ÎÌ ‚ÏÍ ‚ÐÎ ‚ÑÏ ‚ÒÐ ‚ÓÑ ‚ÔÒ ‚ÕÓ ‚ÖÔ ‚×Õ ‚ØÖ ‚Ù× ‚ÚØ ‚ÛÙ ‚ÜÚ ‚ÝÛ ‚ÞÜ ‚ßÝ ‚àÞ ‚áß ‚âà ‚ãá !‚äâ "‚åã #‚æä $‚çå %‚èæ &‚éç '‚êè (‚ëé )‚ìê *‚íë +‚îì ,‚ïí -‚ðî .‚ñï /‚òð 0‚óñ 1‚ôò 2‚õó 3‚öô 4‚÷õ 5‚øö 6‚ù÷ 7‚úø 8‚ûù 9‡ÿú