IMD 1.16: 31/05/2007 20:01:15 FOGCPM.112 ååååååååååååååå--FOGCPM112C1 COM€ C1 COMy !"-01-19 88 ¯-07-00 86 «ASSEMBLECOM€#$%&'()*+,-./012ASSEMBLECOM!34567-CPM114 DOC"°±²³´-CPM112 DOC¬­®LINK COMb89:;<=>?@ABCDC DEF/EFGHIJC SUBKCC SUBLCL SUBMFUNCTIONCRLNSTDLIB TXTOPQC1 C QRSTUVWXYZ[\C2 C b]^_`abcdefghiC3 C %jklmnC4 C *opqrstC5 C 7uvwxyz{C6 C |}~C7 C j€�‚ƒ„…†‡ˆ‰Š‹Œ�C8 C 8Ž��‘’“”C9 C •–—˜SUBMIT C 4™š›œ�žŸTIME C # ¡¢£¤WORDPUZLC !¥¦§¨©WORDPUZLDOCªåååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååThis is the disk name. åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå*ùÍKÍžÃ+€ž4}Ô°Ã'Ã+ÃFÃŽÃrÃ7 :²2É!³q:³þ ÊŠ *³MÍ8 ÃÖá^#V#å*~#foÉá^#å*~#foÉá^#V#å*nÉá^#å*nÉá^#V#åë ~#foÉá^#åë& ~#foÉ!È+É!È#É!Ø+É!Ø#É!ð+É!ø+ÉÈÉÈÉØÉØÉðÉøÉ}»À|ºÉëz¼À{½Éë|ºÀ}»Éë|ªòìz·ð7Éë|ªòó|·ð7ÉzõÍZëÍZëÍ)ñ·ð|/g}/o#É|µÈÕå͉ÑÍk|/g}/o#Ñɯ2qÍZëÍZÍk:qÐ|/g}/o#É|·ð/g}/o#:q<2qÉÅÍqÁÉDM!x±ÈxGyOÒƒë)ëÃv|µÈÅÍ”`iÁÉ|·ú )ÖëxõÍÝÚ·Õz/W{/_ѯzW{_ñ=ÈõyOxGæ¯2qÍZëÍZë͉ÃM|ºØÀ}»Éëȯ|g}oÃæëÈ)Ãô|/g}/o#Éz/W{/_É!9~#foÉ!à !à ! à ! à !à !à Ÿ!9Å~#ÂAÁÉá"s!`å*"³!è"µ!ÜY"—>Û2­>Ó2°>É2¯2²!Ì"�!"“!@"‘!"• ÍæÊžÍ!€ßF#x·Â±Ã~#±¯!ßb¯2r~#þ ÊÈ·Êþ"ÂÞ2rÃß+}|~#·ÊÅG:r·xÁÊþ"Âæ¯2r+w#þ Âæ+6#ÃÈÕ!×6#¯2w2x*sé!ÿÿÉ>õÍrÚ<o&åÍFáñ=þÂ-ÃÍ`Í ÍrÚ'~æÊhåÍÅÍëÍÁá6þÿ!À+ÉÍ`WÖØþ?ØÕ_!×~æ7ÑzÈ?ÉÍ`ÅÍ åþ:>ªÍÖ@w#ÍÆþ.¶ÍÆ66ÑÁÉÅþ*>?ÊéÍñÚçw#ÂÏÁÍñØÃÞ> w#ÂçÁÉÍþ.7Èþ:7Èþ7Èþ!ÉþaØþ{ÐÖ Éþ Ê þ Ê ÉÅÍ`·OÂE×!·æyÂ6ÁÉÕ$Ñ Â-7ÁÉÍrÚBÖo&))T])))ë!·yÁÉÕÅõå€ÍáñÁÑÉÍù"Í $Í)Í$Í‹#ÉÅõ:+;GæÂg)xæÂs)Ãm)Åõ:+;GæÂ)xæÂs)Ã)Íù"Í $Í–)Í$Í‹#ÉåõÅ* <~æG~#æ Êâ)> °Áw" <ñáÉåõ* <~æ?ö€Í*w#> Í*Ãã)ÅG:+;æÀxÁÈöÉåõ* <~+æPÊ0*~æ€Ê(*~æ?ö@Ãã)~æÀöÃã)~æw" <ñáÉå* <~áæ@Ã?%ÅFþ€>@ÊP*>wxæ>åÊ[*>ÕÍø3ÁÉõ>åÍø3ñÉõ>áÃc*õ>ÕÃc*õ>ÑÃc*õ>ëÃc*:+;æÃ?%:6;æÃ?%BD Software C Compiler v1.41 (part II) Can't open file Write error Missing label Missing semicolon Illegal statement Can't create CRL file Illegal operator Lvalue required Lvalue needed with ++ or -- operator Illegal left operand in assignment expressionÃÈÔ$ÃeÃ Ø Ä_Ã> ÃX à ÃÔ Ã, ûbÃÊ Ã"zÅ€ë"p—!,Í?å!€Ñ"r—t—ë"<˜!"¼¤"¶¤"¦¤"®¤"°¤"¬¤"ª¤"¨¤"¢¤"ž¤" "ø£!"¸¤"º¤Í¡" ¤Í¤ͧͪÍ­ͰͳͶ͹ͼÍ¿ÍÂ*¨¤|µÊa!RÃ\a:$$$.subåÍÅÑÁÉÁÉÃwà$î$Ã7zÃNtÃè$Å!þÿ9ùDMÍh!ˆ÷ * * * small-c version 1.1 compiler * * * åÍkÑ!ÂÃäDo you wish to c-text to appear? åÍkÑ!ú£åÍnÑÍtåÍqÑYÍå !"¶¤ë!9ùëÁÉÃ& à$î$Ã7zÃè$ÆtÀ+ÅÍ !"®¤!6 ÃH Output filename? åÍ Ñ!ú£åÍ ÑÍ |µÂ_ ÁÉ!άå!ú£åÍ ÑÑ"®¤#|µÂ“ !"®¤!� ÃŽ Open failureåÍ# ÑÍ ÁÉê à$î$Ã7zÃè$ÃþtÅ!"¬¤*¬¤|µÂ9 Í› *ª¤|µÊÇ Ã9 !Í ÃÞ Input filename? åÍž Ñ!ú£åÍ¡ Ñͤ |µÂü !"ª¤Ã9 !"²¤!¤å!ú£åͧ ÑÑ"¬¤#|µÂ6 !"¬¤!$ Ã1 Open failureåÍž Ññ Í› ÁÉÃb Ã^,ÃòÃÕ,ÃíÃñÃ*-ûÃUÃHÃß-Å*ª¤|µÂV !å!u Ãz charåÍA ÑÑ|µÊ“ !åÍD ÑÍG ÃP !å!� á intåÍA ÑÑ|µÊº !åÍD ÑÍG ÃP !À ÃÅ #asmåÍJ Ñ|µÊÕ ÍM ÃP !Û Ãä #includeåÍJ Ñ|µÊô ÍP ÃP !ú à #defineåÍJ Ñ|µÊ ÍS ÃP ! à #ifndefåÍJ Ñ|µÊ0 ÍV ÃP !6 Ã= #ifdefåÍJ Ñ|µÊM ÍY ÃP Í\ Í_ Ãc ÁÉÃm Ã÷$Ã(.ÃÓbÃ9.Ãe.Ã~.Å!üÿ9ùDM* |µÂ€ à * ¤åÍ[ ÑÍ^ ! ¯w#wÍ�å* ÑÍúÒ Ía `i6 #6`i^#Vr+sz³Êý ! ^#Vr+së>˜n&åÍd ÑÍ�|µÊì Í�å* ÑÍúÚò Íg Ãý !,åÍj Ñì Ó !" ë!9ùëÁÉÃ$ ÃëbÃý.Ã(.ÃcÃ9.Ãe.Å!þÿ9ùDM!2 Ã; @globalsåÍ Ñ€ë"¾¤*¾¤å*p—ÑÍìÒË !¾¤~#fo n}þʾ *¾¤åÍ ÑÍ Í !¾¤~#fo n&ÿ|¢g}£oå!¾¤~#fon&ÿ|¢g}£oÍóÑë`is#rÍ�åÍ ÑÍ! *¾¤"¾¤ÃG ë!9ùëÁÉÃÚ Ã6cÅ!þÿ9ùDM€`is#rÍ�å*p—ÑÍåÊ# `i~#fo n}·Â Í�åÍ× ÑÍ�ë`is#rÃê ë!9ùëÁÉÃ> À+Ãe.ÃhcÃ9.Ãý.Å*¦¤|µÊj !M Ãe missing closing bracketåÍ/ Ñ*º¤|µÂ” !x Ã� missing closing #endifåÍ/ ÑÍ2 Í5 *¨¤åÍ8 Ñ!¨ ÃÀ errors in compilation.åÍ; ÑÍ2 ÁÉÃÖ ÃPuÃuvÃöwÅ*®¤|µÊü !άå!åÍÍ ÑÑ!άåÍÐ Ñ*®¤åÍÓ Ñ!"®¤ÁÉÃ"à %ÃÕ,Ãè$Ã\%Æ%à &Ã7&Ü&ÃìÅ!óÿ9ùDM! ¯w#wÍ|µÊ=Ãè!CÃE*åÍ Ñ|µÊ�`i6#6! ^#Vr+sÍ *ÍåÂ~! ^#Vr+sÍÃaÈ`i6#6! åÍÑ|µÂ™Í! åÍÑ|µÊ°! åÍÑÍ�åÍ�å!åÍ�å! åÍÑÑÑÑÑ!ÖÃØ,åÍ Ñ|µÂåÃèÃ*ë! 9ùëÁÉÃÃxÃè$Ã\%À+à$ÃþtÅ!Þÿ9ùDMÍ÷åÍôÑ|µÊ!ÍúÃ! 6 Í÷<ÍåÂ<! 6>ÍúÍ÷"ÍåÂQ! 6"Íú! ¯w#wÍ� ÍùÒžÍ÷|µÊžÍ÷å! nÑ&ÍåÊž! ^#Vr+sëë`iåÍ÷ëásÍúÃYÍ� ë`i6! nåÍ÷ÑÍåÊü! n}þ ÂÍÍ÷|µÊü!ÓÃñinvaild file name for includeåÍýÑÍòÍ� |µÂ4! Ã)missing file name for includeåÍýÑÍò!"´¤*°¤|µÊl!HÃanested include not aloudåÍýÑÍò!Ȩå`iåÍÑÑ"°¤#|µÂ¯!‡äOpen failure on include fileåÍýÑ!"°¤Íë!"9ùëÁÉÃÓÃß-ÃKÆ%À+à$Ã'Ã7&Å!óÿ9ùDM;! åÍÁÑ|µÊõ!"º¤ÃL`iåÍÄÑ|µÂ%!Ãinvaild identifieråÍÇÑÍÊÃL`iåÍÍÑ|µÂ=`iåÍÐÑ|µÊF!"º¤ÃL!"º¤ë! 9ùëÁÉÃmÃß-ÃKÆ%À+à$Ã'Ã7&Å!óÿ9ùDMÍX! åÍ[Ñ|µÂ�!"º¤Ãã`iåÍ^Ñ|µÂ¼!¡ôinvaild identifieråÍaÑÍd`iåÍgÑ|µÂÔ`iåÍjÑ|µÊÝ!"º¤Ãã!"º¤ë! 9ùëÁÉÃþÃÕ,ÃÃÀ+ÃycÃLxÅ!úÿ9ùDM! Ã[åÍïÑ|µÊ…! ^#Vr+sÍòë`is#rz³Êu! n}þÂPÍ�åÍ�Ñë`is#rÃr! 6! n}þÂrÍ�åÍ�Ñë`is#rÂ! 6`i6#6ö! n}þš`i6#6ö! n}þ¯`i6#6ö`i6#6! n}þÊÎþÊ:þÊ­Ã*p—å!,Í?å!€ÑÑÍìÚ!îà global symnol table overflowåÍõÑ!é*p—ë! s#r*p—"p—Í�ë! s#rÃ*¢¤åÍ�ÑÍúåÍøÑ"¢¤*¢¤ë! s#r*r—å!a—ÑÍìÚ•!nÊlocal symbol table overflowåÍõÑ!é*r—ë! s#r*r—"r—Ã*¤¤ë! s#r*¤¤++"¤¤*r—å!a—ÑÍìÚû!ÔÃðlocal symbol table overflowåÍõÑ!é*r—ë! s#r*r—"r—ÃÍ� åÍ�åÍûÑÑ! ~#fo å! nëás! ~#fo å! nëás! ~#fo å! nëás! ~#fo åÍ�ëás! ~#foåÍ�Íåëás! ~#fo åÍ�ëás!éë!9ùëÁÉûÃÕ,À+Å!ÂÃÄ;å͵Ñ|µÂë!ÔÃæmissing semicolonå͸ÑÁÉÃÿÈ'ÃÕ,Ãý.Ãe.à$Å!"¸¤Íð!Ã#endasmåÍóÑ|µÊ$Ã=*ª¤|µÊ/Ã=!ú£åÍöÑÍùÃÍü!"¸¤ÁÉÇÆ%À+à$ÃÕ,Ã7&Ü&ÃädÃLxÃÛ(Ãß-Ã*/à %Ã^,àòîÃycÃeÃX Ô$Å!õÿ9ùDM`iåÍKÑ|µÂÌ!¡ÃÁillegal function or declarationåÍNÑÍQú!ÒÃÔ(åÍTÑ|µÂ!äÃillegal function or declarationåÍNÑÍQú`iåÍWÑë! s#rz³Êu! ~#fo n}þÊ@`iåÍZÑÃr! ~#fo n}þÂ]`iåÍZÑÃr! ~#fo 6`iåÍ]ÑÃ;*p—å!,Í?å!€ÑÑÍìÚ¹!•ñgobal symbol table overflowåÍNÑÃ4*p—ë! s#r*p—"p—`iåÍ� åÍ`ÑÑ! ~#fo 6! ~#fo å! ~#fo sás! ~#foå! ~#fo å! ~#fo sásás`iåÍ]Ñ!"¤¤!GÃI)åÍTÑ|µÂè`iåÍKÑ|µÊj*¤¤##"¤¤ÃŽ!pÆillegal argument nameåÍNÑÍcÍf!—Ù)å*š¤å!ú£ÑåÍiÑÑ|µÂÚ!´ö,åÍTÑ|µÂÚ!ÆÃÕexpected commaåÍNÑÍl|µÊåÃèÃA!,Í?å!€Ñ"r—!"¢¤*¤¤|µÊ~!å!ÃcharåÍoÑÑ|µÊ4!åÍrÑÍuÃ{!å!>ÃBintåÍoÑÑ|µÊ[!åÍrÑÍuÃ{!aÃswrong number argsåÍNÑÃ~ÃÍxÍåÊ•!åÍ{ÑÍ~!"¢¤!,Í?å!€Ñ"r—Í�Í„" ¤ë! 9ùëÁÉÃØÃÕ,ÃÁKÀ+Ãè$Ã\%Ã4)Å!þÿ9ùDM!æÃè]åÍÆÑ|µÊø!×`iåÍÉÑ|µÂL! Ãmust be constantåÍÌÑÍÏ,ÍåÊFÍÏ;ÍåÊFÍÏ|µÊFÍÒà !×Í�|·òƒ![Ãqnegative size illegalåÍÌÑÍ�Íúë`is#r!‰Ë]åÍÕÑÍ�×ë!9ùëÁÉÃÁÃÕ,Ãè$Ã\%Æ%à &Ã'Ü&Ãìà %À+Å!òÿ9ùDM! ¯w#w*¤¤|µÂÜÃ¥!âÃä*åÍ£Ñ|µÊ"! 6#6! ^#Vr+sͦ*ÍåÂ! ^#Vr+sÍ©ÃÃ+! 6#6`iåͬÑ|µÂ:ͯ`iåͲÑ|µÊM`iå͵ÑÍ� åÍ� å!åÍ�å`iå͸ÑÑÑÑÑÍ»|µÊvÃ¥!|Ã~,åÍ£Ñ|µÂ¢!ŽÃ�expected commaå;ÑÃÉë!9ùëÁÉÃÞÃè$Ã^,ùoòÃÕ,ÃÁÃÃÅÃfÕÃ’"ú"à #ÃíÃË7Åͱ|µÂô*ª¤|µÊôÁÉú!å!þÃcharåÍ´ÑÑ|µÊ!åÍ·Ñͺú!å!&Ã*intåÍ´ÑÑ|µÊC!åÍ·Ñͺú!IÃK{åͽÑ|µÊ[ÍÀú!å!eÃhifåÍ´ÑÑ|µÊÍÃ!"¼¤Ãº!å!‰Ã�whileåÍ´ÑÑ|µÊ¦ÍÆ!"¼¤Ãº!å!°ôforåÍ´ÑÑ|µÊËÍÉ!"¼¤Ãº!å!ÕÃÜswitchåÍ´ÑÑ|µÊóÍÌ!"¼¤Ãº!å!ýÃreturnåÍ´ÑÑ|µÊÍÏͺ!"¼¤Ãº!å!(Ã.breakåÍ´ÑÑ|µÊHÍÒͺ!"¼¤Ãº!å!RÃ[continueåÍ´ÑÑ|µÊuÍÕͺ!"¼¤Ãº!{Ã};åͽÑ|µÊŠú!�Õ#asmåͽÑ|µÊ®ÍØͺ!"¼¤ÃºÍÛͺ! "¼¤*¼¤ÁÉÁÉÃÊÃÕ,îÅ*¦¤#"¦¤!ØÃÚ}åÍÄÑ|µÂ÷*ª¤|µÊñÁÉÃôÍÇÃÒ*¦¤+"¦¤ÁÉÃÔ$ûLîÃycÃ^,Ão)Ã/eÅ!øÿ9ùDM*r—ë`is#r*¢¤ë! s#rÍë! s#rÍ�åÍÑÍ Í�åÍ Ñ"¢¤Í�"r—!å!hÃmelseåÍÑÑ|µÂ„Í�åÍÑüÍë! s#rÕÍÑÍ�åÍÑÍ Í�åÍ Ñ"¢¤Í�"r—Í�åÍÑë!9ùëÁÉÃàÔ$Ô)Ão)ûLîÃ/eÃycÃ*Å!ôÿ9ùDM*r—ë`is#r*¢¤ë! s#rÍÈë! s#r! s#rÍÈë! s#r`iåÍËÑÍ�åÍÎÑÍ�åÍÑÑÍÔÍ�åÍ×ÑÍ�åÍÎÑÍ�"r—Í�åÍÚÑ"¢¤ÍÝë! 9ùëÁÉÃ�Ô$Ô)Ã^#Ã*ÃË7í#Ão)ÃaeÃ/eÃø#îÃycÅ!òÿ9ùDM*r—ë`is#r*¢¤ë! s#rÍië! s#rÍië! s#rÍië! s#rÍië! s#r`iåÍlÑÍo|µÊêÍrÃŒÍuÍx|µÊûÍrÃŒÍ�åÍ{ÑÍuë! s#rÍ� åÍ�åÍ~ÑÑÍ� åÍ�ÑÍx|µÊ5ÍrÃŒÍ�åÍ{ÑÍuÍ�åÍ�ÑÍ„|µÊXÍrÃŒÍ� åÍ{Ñ͇Í�åÍ�ÑÍ�åÍ{ÑÍ�"r—Í�åÍŠÑ"¢¤Írë!9ùëÁÉÃÚÔ$Ô)Ã^#Ã*ÃË7ÃÂeÃø#ÃH$Ã/eÃ^,à MÀ+Ão)ÃÕ,ÃåeÃrfÃ9.Ãý.Ã÷$Ãe.ÃycîÅ!îû9ùDM!ø ¯w#w*r—ë! s#r*¢¤ë! s#r͘ë! s#r!  s#r!  s#r!ü s#r! åÍ›ÑÍž|µÊ7 Í¡É"ͤͧͪ|µÊK Í¡É"Í­|µÊY Í¡É"͘ë!þ s#rÕͰÑ*¢¤##"¢¤!å!{ À caseåͳÑÑ|µÊM!! åͶÑ|µÂ´ !Ÿ ì Bad constantå͹ÑÃq ̓øüÍùÒü ̓ø)ë`iå̓ëás#r!ø ^#Vr+së)ë!ü å͘ëás#rÕͼÑÃ!!!Ã!Too many case statmentså͹Ñ!%!Ã'!:åÍ¿Ñ|µÂJ!!7!ÃE!Missing colonå͹ÑÆ"!å!W!Ã_!defaultåͳÑÑ|µÊ­!͘ë!ü s#r̓üåͼÑ!…!Ç!:åÍ¿Ñ|µÂª!!—!Ã¥!Missing colonå͹ÑÆ"!³!õ!}åÍ¿Ñ|µÊƒ"̓ åͰÑ! ¯w#w̓þåͼÑ̓üå͘ë!þ s#rÕ̓øåÍÂÑÑÑ̓þåͼÑ̓å̓øÑÍúÒ["ÍÅ̓)ë`i~#foåÍÈÑ!1"Ã3",åÍËÑ! ^#Vr+së)ë!ü ~#foåÍÎÑÍÑÃ"Í¡̓ åͼÑ̓"r—̓åÍÔÑ"¢¤Ã‰"Æ"Í×Ãq ë!9ùëÁÉá"à %ÃË7ÃycÃeÅÍ•"|µÂ­"͘"!åÍ›"ÑÍž"ÁÉÃÆ"Ã:*ÃycÃ/eÅ!þÿ9ùDMͽ"ë`is#rz³Âß"Ã#`i~#fo##~#foåÍÀ"Ñ`i~#fo~#foåÍÃ"Ñë!9ùëÁÉÃ#Ã:*ÃycÃ/eÅ!þÿ9ùDMÍ#ë`is#rz³Â1#ÃU#`i~#fo##~#foåÍ#Ñ`i~#fo~#foåÍ#Ñë!9ùëÁÉÃj#ÃÕ,À+ÃÛ(Å!q#Ãs#(åÍa#Ñ|µÊ‚#!ÁÉ!ˆ#Þ#Missing left parnthisåÍd#ÑÍg#!ÁÉÁÉù#ÃÕ,À+ÃÛ(Å!À#ÃÂ#;åͰ#Ñ|µÊÑ#!ÁÉ!×#Ãé#Missing semicolonåͳ#ÑͶ#!ÁÉÁÉÃ$ÃÕ,À+ÃÛ(Å! $à $)åÍû#Ñ|µÊ$!ÁÉ!"$Ã9$Missing right parnthisåÍþ#ÑÍ$!ÁÉÁÉÃT$ÃÕ,À+ÃÛ(Å![$Ã]${åÍK$Ñ|µÊl$!ÁÉ!r$Ã…$Missing left braceåÍN$ÑÍQ$!ÁÉÁÉÅ*ž¤#"ž¤ÁÉÁÉÅ!"š¤>2ú£ÁÉô$ÃdzÅ!9ùDM! åͱ$ÑÍ�n}·Êæ$! ^#Vr+sën&åͱ$ÑÃÄ$ÁÉÅ*š¤ú£n&ÁÉÁÉÃ%Ãý.Ã9.Å!9ùDM!%Ã%@åÍú$ÑÍ�åÍý$ÑÁÉÃ,%Ãß-Ã*/Ãè$ÅÍ#%!6%Ã8%;å*š¤å!ú£ÑåÍ&%ÑÑ|µÍ£ÂX%Í)%|µÍ�ÁÉÁÉÃb%Ãè$ÅÍ_%|µÂs%!ÁÉÄ%*š¤#"š¤+ú£n&ÁÉÁÉØ%Ãß-Ã}*Ãè$Ãà*Ã\%Å!ýÿ9ùDM͉%Í�%åÍŒ%Ñ|µÂ¶%!Ã&`i¯w#wÍ�%åÍ’%Ñ|µÊé%! ~#foå`i^#Vr+sëÑåÍ•%ëásü%! ~#foåÍ�Ñ6!Ã&ë!9ùëÁÉÃ&À+ÃÛ(Å!&Ã-&illegal symbol nameåÍ &ÑÍ&ÁÉÃ=&Ö/Å!þÿ9ùDM€`is#rÍ�å*p—ÑÍåÊ�&!åÍ�åÍ�åÍ:&ÑÑÑ|µÊ|&Í�Ó&Í�ë`is#rÃM&!Ó&ë!9ùëÁÉè&ÃLxÃ_xÃt0Å!°ÿ9ùDM!¶&ÃÛ&already defined symbol or function "å`iåÍŸ&ÑÑÍ�Tå`iåÍ¢&ÑÑ!÷&Ãù&"å`iåÍ¢&ÑÑ`iåÍ¥&Ñë!P9ùëÁÉÃ'Ö/Å!þÿ9ùDM!,Í?å!€Ñë`is#rÍ�å*r—ÑÍåÊy'!åÍ�åÍ�åÍ'ÑÑÑ|µÊh'Í�Ã'Í�ë`is#rÃ9'!Ã'ë!9ùëÁÉã'à$Ø Ã{xÃ~zÃhcÃû1Ãý.Ãe.Å!üÿ9ùDMÍ‹'*¬¤|µÂ¹'ÍŽ'*ª¤|µÊÄ'ÃÒ(*°¤|µÊà'Ȩ! s#r*´¤#"´¤Ãñ'¤! s#r*²¤#"²¤Í�åÍ‘'Ñë`is#rz³ÊS(Í� ÍåÊ,(*š¤OÍùÒ,(Í�ÍåÂ/(ÃS(Í� ÍåÊP(*š¤#"š¤+ú£åÍ�ëásÃñ'*š¤ú£6Í�ÍÒv(Í�ÍåÂ�(*°¤|µÊ�(*°¤åÍ”'Ñ!"°¤Ã�(*¬¤åÍ”'Ñ!"¬¤*š¤|µÊÏ(*¶¤|µÊÆ(*¸¤|µÊÆ(Í—'Íš'!ú£åÍ�'ÑÍ '!"š¤ÃÒ(ë'ë!9ùëÁÉÃí(Ãà*Ã+Ãè$Ã\%Ãß-ÅÍá(åÍÞ(Ñ|µÊ)Íä(åÍÞ(Ñ|µÊ)Íç(Ãû(Ã/)Íä(åÍÞ(Ñ|µÂ/)Íä(|µÂ))Ã/)Íç(Ã)Íê(ÁÉÃ=)ÃÕ,À+Å!9ùDMÍ�åÍ7)Ñ|µÂm)!Y)Ãh)missing braketåÍ:)ÑÁÉÃ{)Ã÷$Ã(.Ãe.Å!9ùDMÍ�åÍr)ÑÍu)Íx)ÁÉÚ)À+Å!þÿ9ùDM*<˜å!0˜ÑÍåÂÕ)!¶)ÃÍ)too many active whilesåÍ—)ÑÃ*`i¯w#wÍ�ÍùÒ**<˜##"<˜++å! ~#foå`i^#Vr+së)Ñ~#foëás#rÃÛ)ë!9ùëÁÉÃ%*Ã:*ÅÍ"*|µÊ8**<˜ôÿ"<˜ÁÉÃ@*À+Å*<˜å!t—ÑÍåÂr*!U*Ãe*no active whileåÍ=*Ñ!ÁÉÃ{**<˜ôÿÁÉÁÉÅ!9ùDM! n&aÍùͯÚ«*! n&zÍͯÒÜ*! n&AÍùͯÚÑ*! n&ZÍͯÒÜ*! n}þ_Í�ÁÉÁÉÃé*Ã}*ÃQ+Å!9ùDM! n&åÍã*Ñ|µÍ£Â+! n&åÍæ*Ñ|µÍ£ÁÉÁÉÃ&+È'à 2Ã\%Å*š¤ú£n}·ÂJ+*ª¤|µÊA+!ÁÉÍ+Í +Ã'+Í#+ÁÉÁÉÅ!9ùDM! n&0ÍùͯÚ|+! n&9ÍͯÁÉÁÉÃ�+ÃLxÃ_xÃ}yÃt0Å!¬ÿ9ùDMÍ�Xå`iå̓+ÑÑ!ª+í+ "å`iå͆+ÑÑ*š¤öÿë!P s#rÍ�P|·òÖ+!P ¯w#w`iå͉+Ñë!R s#rÍ�Pñÿå*š¤ÑÍúÒ0,Í�Pú£n}·Ê0,!R ^#Vr+sëë`iå!P ^#Vr+sëú£nëásÃå+Í�Rë`i6!@,ÃB,"å`iå͆+ÑÑ`iåÍŒ+ÑÃU,ë!T9ùëÁÉÃp,Ãß-Ö/Ãà*Ãè$Ã+Å!þÿ9ùDMÍa,Í�åÍ�å*š¤å!ú£ÑåÍd,ÑÑÑë`is#rz³ÊÆ,*š¤åÍ�Ñ"š¤Íj,åÍg,Ñ|µÊÀ,Ím,í,!ÃÌ,!ÃÌ,ë!9ùëÁÉÃÞ,Ãß-Ã*/Å!þÿ9ùDMÍØ,Í�å*š¤å!ú£ÑåÍÛ,ÑÑë`is#rz³Ê-*š¤åÍ�Ñ"š¤!Ã!-!Ã!-ë!9ùëÁÉÃE-Æ%à &à$ô5ÃxÃè$Ã\%À+Å!õÿ9ùDM`iåÍ--Ñ|µÂb-Í0-Í3-ÃÖ-! ¯w#w! ^#Vr+sëë`in&åÍ6-Ñ|µÊ‹-Ãj-Í<-åÍ9-Ñ|µÊž-Í?-Ë-Í?-åÍ6-Ñ|µÊ®-Þ-*ø£çÍùÚÖ-!À-ÃÑ-marco table fullåÍB-Ñë! 9ùëÁÉÃñ-Ãè$È'à 2ÃxÃ\%ÅÍâ-|µÂ.Íå-Íè-*ª¤|µÊ .Ã.Ãò-Íâ-åÍë-Ñ|µÊ!.Íî-Ã#.ÁÉÃò-ÁÉÃ..Ã~.Å!:åÍ+.ÑÁÉÃB.Ãý.Ãê5Å!öÿ9ùDMÍ�å`iåÍ?.ÑÑåÍ<.Ñë! 9ùëÁÉÃk.Ã~.Å! åÍh.Ñ! åÍh.ÑÁÉÃ�.ÃPuÃÊ Ã€+ÃdzÅ!9ùDM! n}·Â¤.!ÁÉ*®¤|µÊæ.!άå! n&åÍ�.ÑÑ#|µÂã.Í„.!Ì.ÃÞ.Output file errorå͇.ÑÃò.! n&åÍŠ.Ñ! n&ÁÉÁÉÃ/Ã~.Å!9ùDM! ^#Vr+sën&åÍ/Ñ|µÊ(/à /ÁÉÅ!þÿ9ùDM`i¯w#w! ~#foåÍ�Ñn}·Ê†/! ~#foåÍ�Ñnå! ~#foåÍ�ÑnÑ}»Êz/!Ã�/`i^#Vr+sÃ8/Í�Ã�/ë!9ùëÁÉÜ/Ãà*Å!þÿ9ùDM`i¯w#wÍ�åÍ� ÑÍúÒ 0! ~#foåÍ�Ñnå! ~#foåÍ�ÑnÑ}»Êä/à 0! ~#foåÍ�Ñn}·Âü/à 0! ~#foåÍ�Ñn}·Â0à 0`i^#Vr+sê/! ~#foåÍ�Ñn&åÍ™/Ñ|µÊB0!Ãk0! ~#foåÍ�Ñn&åÍ™/Ñ|µÊd0!Ãk0Í�Ãk0ë!9ùëÁÉÕ0ÃhcÃý.Ãe.Ãû1Ã~.ÃLxÃê5Ã}yÃ_xî$Å!¬ÿ9ùDMÍw0!ú£åÍz0ÑÍ}0Íw0!P ¯w#wÍ�På*š¤ÑÍúÒð0Í�Pú£n}þ ÂÚ0Í€0Ãâ0! å̓0Ñ!P ^#Vr+sö0!^å̓0ÑÍ}0Íw0!1à 1****** åÍz0ÑÍ�XåÍz0Ñ!!1Ã*1 ******åÍz0ÑÍ}0*°¤|µÊ�1!@1Ã_1Error in include file at line å`iå͆0ÑÑ*´¤å`iåÍŒ0Ñå`iÑå͉0ÑÑõ1!‡1Ö1Error at line å`iå͆0ÑÑ*²¤å`iåÍŒ0Ñå`iÑå͉0ÑÑ!»1ý1 å`iåÍ�0ÑÑÍ�Xå`iåÍ�0ÑÑ!Ù1ÃÛ1 å`iåÍ�0ÑÑ`iåÍ’0Ñ*¨¤#"¨¤ë!T9ùëÁÉÃ2Ã~.Å! åÍþ1ÑÁÉÃ02ÃÕ,È'Ãè$ÃxÃò6Ã\%À+æpÃÌpÃà*Ã(7Å!ôÿ9ùDM*¸¤|µÂC2ë5!"š¤"œ¤*º¤|µÂ‚2*ª¤|µÂ‚2!b2Ãi2#endifåÍ2Ñ|µÊ|2!"º¤Ã2Í2ÃL2Í2#Íå 2!”2Û2#endifåÍ2ÑÍ2|µÊJ5Í2åÍ2Ñ|µÊÓ2! åÍ2ÑÍ2åÍ2Ñ|µÊÐ2Í2ý2ÃG5Í2\ÍåÂ'3Í2åÍ2ÑÍ2Í2|µÂ3!ø2Ã3missing escape characteråÍ!2ÑÃJ5Í2åÍ2ÑÍ2ÃG5Í2"Íå›3Í2åÍ2ÑÍ2Í2"ÍåÊ�3Í2|µÂn3!X3Ãf3missing quoteåÍ!2ÑÃ�3Í2\Íå‚3Í2åÍ2ÑÍ2åÍ2ÑÃ>3Í2!"åÍ2ÑÃG5Í2'ÍåÂ4!'åÍ2ÑÍ2Í2'ÍåÊ4Í2|µÂç3!Ì3Ãß3missing apostropheåÍ!2ÑÃ4Í2\ÍåÂû3Í2åÍ2ÑÍ2åÍ2Ñò3Í2!'åÍ2ÑÃG5Í2/ÍåÂr4Í$2*ÍåÂr4Í'2Í'2Í2*ÍåÂJ4Í$2/ÍåÊi4Í2|µÂX4Í2Ã[4Í'2*ª¤|µÊf4Ãi4Ã24Í'2Í'2ÃG5Í2åÍ*2Ñ|µÊ?5`i¯w#wÍ2åÍ*2Ñ|µÊ½4Í�ÍùÒ·4`i^#Vr+sëë! åÍ2ëásÍ2Ã…4Í�ë! 6! åÍ-2Ñë`is#rz³Ê 5`i^#Vr+së në! s{·Ê5! n&åÍ2ÑÃÝ4Ã<5`i¯w#w`i^#Vr+sëë! në! s{·Ê<5! n&åÍ2ÑÃ5ÃG5Í2åÍ2Ñà2!åÍ2Ñ*œ¤OÍùÚw5!d5Ãr5line too longåÍ!2Ñ!"œ¤"š¤*š¤#"š¤+ú£å*œ¤#"œ¤+J¤nëás{·Ê¥5À5!"š¤ë! 9ùëÁÉÅ!9ùDM*ø£ å! nëás*ø£çÍùÒß5*ø£#"ø£! n&ÁÉÁÉÅ!ùÿ9ùDM! s#r! s#r`i6#6'Í� |·ò<6Í� Íúë! s#r! ~#foå! ^#Vr+sëÑ6-Í�ÍùÚÑ6Í� åÍ�ÑÍË0ë! s! n}þ0Â~6Í�+|µÊ~6Í�|µÊ¨6! 6#6! ~#foå! ^#Vr+sëÑå! nëásÍ� åÍ�ÑÍë! s#rÍ� ëÍËë`is#rÃ<6! ~#foåÍ�Ñ6Í� Ãé6ë!9ùëÁÉÅ!9ùDM*œ¤J¤å! nëás*œ¤OÍùÒ7*œ¤#"œ¤! n&ÁÉÁÉÃ.7Ö/Å!þÿ9ùDM`i¯w#wÍ�å*ø£ÑÍúÒ¼7!åÍ�å! ÑåÍ�åÍ+7ÑÑÑ|µÊ‰7`i^#Vr+së n}·Ê‚7Ãj7Í�ÃÂ7`i^#Vr+së n}·Ê¡7É7`i^#Vr+së n}·Ê¹7á7Ã<7!ÃÂ7ë!9ùëÁÉÃÔ7ÃdMà 8Å!øÿ9ùDM! ¯w#w! å`iåÍÑ7ÑÑå`iåÍÎ7ÑÑÍ�Ã8ë!9ùëÁÉÃ=8Ã6:Ãè$æpÃ\%äPÃdQÃ*RÃýkÃlÃ6lÃPlÃilÃ{lÔlílÃnRÅ!üÿ9ùDMÍ� åÍ�åÍ 8ÑÑë`is#rÍ8=ÍåÊy8Í8=ÍåÊy8Í�Ã-:Í� ¯w#wÍ8>=½Â�8>¼Êó8>+½Âœ8>¼Ê9>-½Â¨8>¼Ê9>*½Â´8>¼ÊE9>/½ÂÀ8>¼Êg9>%½ÂÌ8>¼Ê‰9>&½ÂØ8>¼Ê«9>^½Âä8>¼ÊÍ9>|½Âð8>¼Êï9Ã:Í8Í�åÍ�åÍ8ÑÑÃ:Í8Í8Í�åÍ�åÍ8ÑÑÍ�åÍ8ÑÍ8-ÍåÂ89Í"8Ã;9Í%8`i6#6Ã:Í8Í8Í�åÍ�åÍ8ÑÑÍ(8`i6#6Ã:Í8Í8Í�åÍ�åÍ8ÑÑÍ+8`i6#6Ã:Í8Í8Í�åÍ�åÍ8ÑÑÍ.8`i6#6Ã:Í8Í8Í�åÍ�åÍ8ÑÑÍ18`i6#6Ã:Í8Í8Í�åÍ�åÍ8ÑÑÍ48`i6#6Ã:Í8Í8Í�åÍ�åÍ8ÑÑÍ78`i6#6Ã:Í�Ã-:Í�åÍ�åÍ:8ÑÑ!Ã-:ë!9ùëÁÉÃT:Ã;Ãß-Ãè$æpÃdMÔ$ÃÕ,ÊfÃo)Å!öÿ9ùDMÍ�åÍ�åÍ9:ÑÑë`is#rÍ<:Í?:|ÍåÂŒ:ÍB:|ÍåÊ“:Í�à ;Í�åÍ�åÍE:ÑÑÍH:ë! s#r!³:ö:||åÍK:Ñ|µÊù:Í�~#foåÍ�åÍN:ÑÑÍ�6#6Í�å! åÍ9:ÑÑå! åÍE:ÑÑÃ;Í�åÍQ:Ñ!à ;í:ë! 9ùëÁÉÃ2;Ãò;Ãß-Ãè$æpÃdMÔ$ÃÕ,ÃaeÃo)Å!öÿ9ùDMÍ�åÍ�åÍ;ÑÑë! s#rÍ;Í;&ÍåÂl;Í ;&ÍåÊs;Í�Ãé;Í�åÍ�åÍ#;ÑÑÍ&;ë`is#r!‘;Ô;&&åÍ);Ñ|µÊ×;Í�~#foåÍ�åÍ,;ÑÑÍ�6#6Í�å! åÍ;ÑÑå! åÍ#;ÑÑÃæ;Í�åÍ/;Ñ!Ãé;Ë;ë! 9ùëÁÉà <÷<Ãß-Ãè$æpÃdMÃÕ,ÃÂeílÅ!øÿ9ùDMÍ�åÍ� åÍõ;ÑÑë`is#rÍø;Íû;|ÍåÂQ<Íþ;|ÍåÊQ<Íþ;=ÍåÂX<Í�î<Í�åÍ� åÍ<ÑÑ!m<Ão<|åÍ<Ñ|µÊ¥<Í<Í�å! åÍõ;ÑÑå! åÍ<ÑÑÍ <Í�6#6ëÃß-Ãè$æpÃdMÃÕ,ÃÂeÃ{lÅ!øÿ9ùDMÍ�åÍ� åÍs=ÑÑë`is#rÍv=Íy=&ÍåÂÏ=Í|=&ÍåÊÏ=Í|==ÍåÂÖ=Í�Ã,>Í�åÍ� åÍ=ÑÑ!ë=Ãí=&åÍ‚=Ñ|µÊ#>Í…=Í�å! åÍs=ÑÑå! åÍ=ÑÑ͈=Í�6#6Ã)>!Ã,>Ãå=ë!9ùëÁÉÃP>ÃR?Ãß-Ã*/ÃdMÃÕ,ÃÂeÃÅlÃÝlÅ!øÿ9ùDMÍ�åÍ� åÍ8>ÑÑë`is#rÍ;>!v>Ãy>==å*š¤å!ú£ÑåÍ>>ÑÑ|µÂ³>!”>×>!=å*š¤å!ú£ÑåÍ>>ÑÑ|µÂ³>Í�ÃI?Í�åÍ� åÍA>ÑÑ!È>ÃË>==åÍD>Ñ|µÊ?ÍG>Í�å! åÍ8>ÑÑå! åÍA>ÑÑÍJ>Í�6#6ÃF?!?à ?!=åÍD>Ñ|µÊ@?ÍG>Í�å! åÍ8>ÑÑå! åÍA>ÑÑÍM>Í�6#6ÃF?!ÃI?ÃÂ>ë!9ùëÁÉÂ?ÃCÃß-Ã*/ÃdMÃÕ,ÃÂeÃõlÃmÃ&mÃ?mÃ+ÃWmÃpmÈmámÅ!øÿ9ùDMÍ�åÍ� åÍU?ÑÑë`is#rÍX?!¨?ê?<å*š¤å!ú£ÑåÍ[?ÑÑ|µÂ@!Å?ÃÇ?>å*š¤å!ú£ÑåÍ[?ÑÑ|µÂ@!â?Ãå?<=å*š¤å!ú£ÑåÍ[?ÑÑ|µÂ@!@Ã@>=å*š¤å!ú£ÑåÍ[?ÑÑ|µÂ@Í�ÃC!%@Ã(@>>å*š¤å!ú£ÑåÍ[?ÑÑ|µÊD@Í�ÃC!J@ÃM@<<å*š¤å!ú£ÑåÍ[?ÑÑ|µÊi@Í�ÃCÍ�åÍ� åÍ^?ÑÑ!~@Ã�@<=åÍa?Ñ|µÊAÍd?Í�å! åÍU?ÑÑå! åÍ^?ÑÑÍ�6#6! ~#fo~#fo"¾¤|µÊÝ@!¾¤~#fo n}þÂÝ@Íg?Ãx@Í�"¾¤|µÊA!¾¤~#fo n}þÂAÍj?Ãx@Íj?ÃC! AÃA>=åÍa?Ñ|µÊ–AÍd?Í�å! åÍU?ÑÑå! åÍ^?ÑÑÍ�6#6! ~#fo~#fo"¾¤|µÊlA!¾¤~#fo n}þÂlAÍm?Ãx@Í�"¾¤|µÊ�A!¾¤~#fo n}þÂ�AÍm?Ãx@Íp?ÃC!œAÞA<å*š¤å!ú£ÑåÍ[?ÑÑ|µÊPB!¹AüA<<å*š¤å!ú£ÑåÍ[?ÑÑ|µÂPBÍs?Íd?Í�å! åÍU?ÑÑå! åÍ^?ÑÑÍ�6#6! ~#fo~#fo"¾¤|µÊ&B!¾¤~#fo n}þÂ&BÍv?Ãx@Í�"¾¤|µÊJB!¾¤~#fo n}þÂJBÍv?Ãx@Íy?ÃC!VBÃXB>å*š¤å!ú£ÑåÍ[?ÑÑ|µÊ C!sBÃvB>>å*š¤å!ú£ÑåÍ[?ÑÑ|µÂ CÍs?Íd?Í�å! åÍU?ÑÑå! åÍ^?ÑÑÍ�6#6! ~#fo~#fo"¾¤|µÊàB!¾¤~#fo n}þÂàBÍ|?Ãx@Í�"¾¤|µÊC!¾¤~#fo n}þÂCÍ|?Ãx@Í?ÃC!ÃCÃx@ë!9ùëÁÉÃ7CÃ?DÃß-Ã*/ÃdMÃÕ,ÃÂeùmÃÒmÅ!øÿ9ùDMÍ�åÍ� åÍCÑÑë`is#rÍ"C!]CÃ`C>>å*š¤å!ú£ÑåÍ%CÑÑ|µÂšC!{CÃ~C<<å*š¤å!ú£ÑåÍ%CÑÑ|µÂšCÍ�Ã6DÍ�åÍ� åÍ(CÑÑ!¯CòC>>åÍ+CÑ|µÊëCÍ.C! åÍCÑë`is#rÍ�å! åÍ(CÑÑÍ1CÍ�¯w#wÃ3D!ñCÃôC<<åÍ+CÑ|µÊ-DÍ.C! åÍCÑë`is#rÍ�å! åÍ(CÑÑÍ4CÍ�¯w#wÃ3D!Ã6DéCë!9ùëÁÉÃ`DÃlEÃß-Ãè$æpÃdMÃÂeÃ\%Ã*RÃlÃýkÅ!øÿ9ùDMÍ�åÍ� åÍBDÑÑë`is#rÍEDÍHD+ÍåʘDÍHD-Íå¤DÍKD=Íå«DÍ�ÃcEÍ�åÍ� åÍNDÑÑÍHD>+½ÂÉD>¼ÊØD>-½ÂÕD>¼ÊEÃZEÍQDÍTDÍ�å! åÍBDÑÑë`is#rÍ�å! åÍNDÑÑÍ� åÍWDÑÍZDÍ�¯w#wÃ`EÍQDÍTDÍ�å! åÍBDÑÑë`is#rÍ�å! åÍNDÑÑÍ� åÍWDÑÍ]DÍ�¯w#wÃ`E!ÃcEúDë!9ùëÁÉÃ�EÃúFÃß-Ãè$æpÃdMÃÕ,ÃÂeÃ6lÃPlÃilÅ!öÿ9ùDM! ¯w#wÍ�å! åÍ�åÍoEÑÑÑë`is#rÍrEÍuE*ÍåÊßEÍuE/ÍåÊßEÍuE%ÍåÂëEÍxE=ÍåÂòEÍ�ÃñFÍ�åÍ�åÍ{EÑÑ!Fà F*åÍ~EÑ|µÊNFÍ�EÍ�å! å! åÍoEÑÑÑë`is#rÍ�å! åÍ{EÑÑÍ„EÍ�¯w#wÃîF!TFÃVF/åÍ~EÑ|µÊ›FÍ�EÍ�å! å! åÍoEÑÑÑë`is#rÍ�å! åÍ{EÑÑ͇EÍ�¯w#wÃîF!¡FãF%åÍ~EÑ|µÊèFÍ�EÍ�å! å! åÍoEÑÑÑë`is#rÍ�å! åÍ{EÑÑÍŠEÍ�¯w#wÃîF!ÃñFÃFë! 9ùëÁÉÃ9GÃÕ,ÃúFÃúpÃfUÃëmÃnÃ�yæpÃKÃdMÃInÀ+ÃìfÃý.Ãe.ÃbnÃxVÃ�zÃ|nìnÅ!õÿ9ùDM!GGÃJG++åÍýFÑ|µÊ¾GÍ�åÍ�åÍ�åÍGÑÑÑë`is#rë|µÂ~GÍG!ÃK! ~#fo##å~#foåÍ�~#foÑëás#rÍ�åÍ�åÍGÑÑÍ�åÍ GÑ!ÃKÃK!ÄGÃÇG--åÍýFÑ|µÊDHÍ�åÍ�åÍ�åÍGÑÑÑë`is#rë|µÂûGÍG!ÃK! ~#fo##å~#foåÍ�~#foÑëás#rÍ�åÍ�åÍGÑÑÍ�åÍ GÑÍ�6#6!ÃKÃK!JHÃLH-åÍýFÑ|µÊ¨HÍGåÍGÑ|µÊiHÍGßHÍ�åÍ�åÍ�åÍGÑÑÑë`is#rÍ�åÍ�åÍGÑÑÍGÍ�6#6!ÃKÃK!®HðH*åÍýFÑ|µÊ'IÍ�^#Vr+sÍ�åÍ�åÍ�åÍGÑÑÑë`is#rÍ�åÍ�åÍGÑÑ! ~#fo##å~#foåÍ�~#foÑëás#rÍ�¯w#wÍ�¯w#w!ÃKÃK!-IÃ/I&åÍýFÑ|µÊÞIÍ�åÍ�åÍ�åÍGÑÑÑë`is#rÍ�¯w#wÍ�|µÊvI! ~#fo~#fo|µÊšI!|IÃŒIillegal addressåÍGÑ!ÃKÃÛI! ~#fo##~#fo|µÊ¶I!ÃKÃÛIÍ!G! ~#fo~#foë! s#rÕÍ$GÑÍ'G!ÃKÃK!äIÃæI!åÍýFÑ|µÊ%JÍ�åÍ�åÍ�åÍGÑÑÑåÍ�åÍGÑÑÍ*GÍ�6#6!ÃKÃKÍ�åÍ�åÍ-GÑÑë`is#r!Í?å! åÍ�åÍ0GÑÑÑ! å~#foåÍ�~#foÑëás#r!sJÃvJ++åÍýFÑ|µÊ¼JÍ�|µÂ’JÍG!ÃKÍ�åÍ�åÍGÑÑÍ�åÍ3GÑÍ�6#6!ÃKÃK!ÂJÃÅJ--åÍýFÑ|µÊ KÍ�|µÂáJÍG!ÃKÍ�åÍ�åÍGÑÑÍ�åÍ6GÑÍ�6#6!ÃKÃKÍ�ÃKë! 9ùëÁÉÃ9KàXÃìfÃÁKÃóYÂZÃ÷$Ã~.Ã9.Ãe.Å!9ùDMÍ�åÍKÑ|µÊUKÍ!KæKÍ�åÍ$KÑ|µÊiKÍ!KæKÍ�åÍ'KÑ|µÊ}KÍ!KæKÍ�åÍ*KÑ|µÊ¡KÍ!K* ¤åÍ-KÑ!+åÍ0KÑæK!ÁÉ! ~#fo~#foåÍ3KÑÍ6K!ÁÉÁÉÃÐKÃÕ,ÃQ+Ãè$Ã+Å!ûÿ9ùDM! s#r`is#rÍ�|µÊ:L`i¯w#w!üKÃþK+åÍÄKÑ|µÊL`i6#6!LÃL-åÍÄKÑ|µÊ7LÍ�Íúë! s#r`i6#6ÃçKÍÊKåÍÇKÑ|µÂML!òLÍÊKåÍÇKÑ|µÊ„LÍÍKë! sÍ� Í?å! n&ÐÿÑë`is#rÃMLÍ�|·òšLÍ�Íúë`is#r! ~#foåÍ�ëás#r!òLë!9ùëÁÉÃÇLÃ4)ÃË7ÃaeÅ!þÿ9ùDM!ÕLÃ×L(å;LÑÍÁLë`is#r!ëLÃíL)å;LÑÍ�åÍ�åÍÄLÑÑë!9ùëÁÉÃMÃß-àXÃÁKÃóYÅ!9ùDMÍ MÍ�åÍMÑ|µÊ7M!ÁÉÍ�åÍMÑ|µÊJM!ÁÉÍ�åÍMÑ|µÊ]M!ÁÉ!ÁÉÁÉÃsMÃgÃHgÃfUÃEhÅ!þÿ9ùDM! ~#fo~#foë`is#rÍ�|µÂ™MÛP`i~#fo n}þÊ·MþÊ·MþÊOÛP`i~#fo n}þÊÕMþÊDNþÊÇNÃO! ~#fo##~#foå`i~#fo nÑ&ÍåÂ2NÍ�+|µÂN`i~#fo n&åÍgMÑÃ/N`i~#fo n&åÍ�åÍjMÑÑÃANÍ�åÍ�åÍmMÑÑÃO! ~#fo##~#foå`i~#fo nÑ&Íå¡NÍ�+|µÂ†N`i~#fo n&åÍgMÑÞN`i~#fo n&åÍ�åÍjMÑÑÃÄNÍ�+|µÂ¶N!åÍgMÑÃÄN!åÍ�åÍjMÑÑÃOÍ�+|µÂæN`i~#fo n&åÍgMÑÃþN`i~#fo n&åÍ�åÍjMÑÑÃOÛP`i~#fo n}þÊ"OþÊÂOþÊ\PÛP! ~#fo##~#foå`i~#fo nÑ&Íå‘OÍ�+|µÂdO`i~#fo n&åÍgMÑÃŽO! ~#fo~#foå`i~#fo n&åÍ�åÍpMÑÑÑÿOÍ�+|µÂ°O`i~#fo n&åÍgMÑÿOÍ�åÍ�åÍmMÑÑÛP! ~#fo##~#foå`i~#fo nÑ&ÍåÂ1PÍ�+|µÂP`i~#fo n&åÍgMÑÃ.P! ~#fo~#foå`i~#fo n&åÍ�åÍpMÑÑÑÃYPÍ�+|µÂFP!åÍgMÑÃYP!å!åÍ�åÍpMÑÑÑÛPÍ�+|µÂ{P`i~#fo n&åÍgMÑØP!å`i~#fo n&åÍ�åÍpMÑÑÑÛPë!9ùëÁÉóPÃúpÃÂeÃdMà 8Å!öÿ9ùDM! ~#fo~#foë`is#r`i~#fo n}þÂQ`i~#fo nå! ~#fo##~#foÑÍåÊQͧPÃ[QÍ�>½ÂQ>¼Ê2Q>½Â#Q>¼Ê8Q>½Â/Q>¼Ê>QÃAQͧPÃAQͪPÃAQÃAQ! å! åͰPÑÑå! åÍ­PÑÑë! 9ùëÁÉÃvQÃúpÃfUÃÂeÃdMà 8Å!öÿ9ùDM! ~#fo~#foë`is#r`i~#fo n}þÂÄQ`i~#fo nå! ~#fo##~#foÑÍåÂÞQÍ�|µÊÞQ! ~#fo~#fo|µÂäQÍgQÃ!RÍ�åÍ�åÍjQÑÑÍmQ!åÍ�åÍpQÑÑÍmQ! å! åÍsQÑÑå! åÍpQÑÑë! 9ùëÁÉÃ3RÃ`[ÃõhÅ!þÿ9ùDMÍ�åÍ-RÑë`is#rÍ�+|µÂWRÃeRÍ�++|µÂeRÍ0Rë!9ùëÁÉÃzRÃiÃ1iÃ2jÅ!þÿ9ùDM! ~#fo~#foë`is#rÍ�|µÂ RÃ]U`i~#fo n}þʾRþʾRþÊùSÃ]U`i~#fo n}þÊÜRþÊ9SþʼSÃöS! ~#fo##~#foå`i~#fo nÑ&ÍåÂ6SÍ�+|µÂS`i~#fo n&åÍqRÑÃ6S`i~#fo n&åÍ�åÍtRÑÑÃöS! ~#fo##~#foå`i~#fo nÑ&Íå–SÍ�+|µÂ{S`i~#fo n&åÍqRÑÓS`i~#fo n&åÍ�åÍtRÑÑùSÍ�+|µÂ«S!åÍqRÑùS!åÍ�åÍtRÑÑÃöSÍ�+|µÂÛS`i~#fo n&åÍqRÑÃóS`i~#fo n&åÍ�åÍtRÑÑÃöSÃ]U`i~#fo n}þÊTþʆTþÊUÃ]U! ~#fo##~#foå`i~#fo nÑ&ÍåƒTÍ�+|µÂYT`i~#fo n&åÍqRÑÃT! ~#fo~#foå`i~#fo n&åÍ�åÍwRÑÑÑÃ]U! ~#fo##~#foå`i~#fo nÑ&ÍåÂóTÍ�+|µÂÈT`i~#fo n&åÍqRÑÃðT! ~#fo##~#foå`i~#fo n&åÍ�åÍwRÑÑÑÃUÍ�+|µÂU!åÍqRÑÃU!å!åÍ�åÍwRÑÑÑÃ]UÍ�+|µÂ=U`i~#fo n&åÍqRÑÃZU!å`i~#fo n&åÍ�åÍwRÑÑÑÃ]Uë!9ùëÁÉÃxUÃìfÃý.Ã9.Ãe.ÃsÅ!þÿ9ùDM! ~#fo~#foë`is#rë|µÊ£UÍ�++|µÊ¦UÃoV`i~#fo n}þÊÄUþÊ VþÊ VÃoVÍiUÍ�åÍlUÑ! ~#fo~#fo|µÊV!ëUÃíU+åÍlUÑ! ~#fo~#foåÍoUÑÍrUÃoVÍiU`i~#fo nå`i~#fon&Í?Ñå! ~#fo~#foÑå*¢¤ÑÍúåÍoUÑÍrU!]VÃdVdad spåÍuUÑÍrUÃoVë!9ùëÁÉñVÃ?\Ãß-Ãè$Ã\%à MÃ`[Ã4)ÃË7Ã*RújÃfUÃÓjÃìfÃ9.Ãe.ÃdMÃqÃÁqÅ!öÿ9ùDMÍ�åÍ�åÍ{VÑÑë`is#r! ~#fo~#foë! s#rÍ~VÍ�V>[½ÂôV>¼ÊW>(½ÂW>¼ÊnXÃ�XÍ„V! ~#fo n}þÊ!WþÊÁWÃ_XÍ�¯w#w! ~#fo##^#Vr+s! å͇VÑ|µÊŽWÍ�V]ÍåÂŽW! ~#foåÍ�åÍŠVÑåÍ�ÑÍ?ëás#r!~WÀW]åÍ�VÑ!×XÃÁWÍ�VÍ�åÍ“VÑÍ–V!åÍ�åÍ™VÑÑÍœV!´WöW]åÍ�VÑ!×XÍ�¯w#w! å͇VÑ|µÊXÍ�V]ÍåÂXÍŸVÍ�åÍŠVÑåÍ�ÑÍ?åÍ¢VÑÍ¥VÍ–V!åÍ�åͨVÑÑÍœVÃ7XÍ�VÍ�åÍ“VÑÍ–V!åÍ�åͨVÑÑÍœV!=XÃ?X]åÍ�VÑ! ~#fo##å~#fo#ëás#r!×XÍ�åÍ«VÑ!×XÍ�¯w#wÍ„V! ~#fo~#foåÍ®VÑ!×XÍ�×Xë! 9ùëÁÉøXÃè$æpÃ\%ÃNtþyÀ+ÃÛ(Å!üÿ9ùDMÍ£X0ÍåÂäXͦXXÍåÊêXͦXxÍåÊêX!ÃêYÍ©XÍ©X! 6Í©XåͬXÑë! s! å!Yà Y0123456789ABCDEFåͯXÑÑë`is#rë|µÂgY!8YÃMYinvaild hex constantåͲXÑ͵X! ~#fo¯w#w!ÃêY! ~#foåÍ�+ëás#rÍ£XåͬXÑë! s! å!“YäY0123456789ABCDEFåͯXÑÑë`is#rë|µÂ¼Y!ÃêY! ~#foå! ~#fo~#foÍ?åÍ�Ñ+ëás#rÍ©XÃzYë!9ùëÁÉÃZÃÕ,Ãè$Ã�^Ã\%Å!þÿ9ùDM`i¯w#w!ZÃZ'åÍöYÑ|µÂ(Z!ÃyZÍùY'ÍåÊ^ZÍùY|µÊ^ZÍ�ÿ|¢g}£oÍ?åÍüYÑë`is#rÃ(ZÍÿY! ~#foåÍ�ëás#r!ÃyZë!9ùëÁÉÔZÃÕ,Ãè$À+Ã�^Ã\%Å!ÿÿ9ùDM!¢ZäZ"åÍ…ZÑ|µÂ´Z!ÃW[! ~#foå* ëás#r͈Z"ÍåÊ@[͈Z|µÂÜZÃ@[* ÏÍùÚ*[!îZÃ[string space exhaustedåÍ‹ZÑ͈Z"ÍåÊ$[͈Z|µÊ$[ÍŽZà [!ÃW[* #" +>˜åÍŽZëásÃÅZÍ‘Z* #" +>˜6!ÃW[ë!9ùëÁÉÅ!þÿ9ùDM! ~#fo~#foë`is#rë|µÂ†[!Ã6\`i~#fo n}þʤ[þÊÉ[þÊ0\Ã6\`i~#fo n}þʽ[þÊÃ[ÃÉ[!Ã6\!Ã6\! ~#fo##~#foå`i~#fo nѯgÍúÒ \`i~#fo n&ÍÒ \!Ã6\Ã0\`i~#fo n}þÊ$\þÊ*\Ã0\!Ã6\!Ã6\!Ã6\ë!9ùëÁÉÃf\ÃÕ,à 8Ã4)Æ%Ã'Ã7&Ãè$À+ÃLxàrÃKÃÛ(Å!ñÿ9ùDM! ~#foå! ~#fo##å! ~#fos#rás#rás#r!¢\ä\(åÍB\Ñ|µÊÙ\Í�åÍ�åÍE\ÑÑë! s#r!Ë\ÃÍ\)åÍH\ÑÍ� Æ^Í�¯w#w! åÍK\Ñ|µÊH^! ~#foå! åÍN\Ñëás#rz³Ê]!Æ^! ~#foå! åÍQ\Ñë`is#rás#rz³ÊI]`i~#fo n}þÊI]!Æ^ÍT\(ÍåÂ9^! åÍQ\Ñë`is#rë|µÂ^*p—å!,Í?å!€ÑÑÍìÚ°]!Š]è]global symbol table ofverflowåÍW\ÑÃ^*p—ë`is#r*p—"p—! åÍ�åÍZ\ÑÑ`i~#fo 6`i~#fo 6`i~#fo å`i~#foå`i~#fo å`i~#fo sásásás! ~#foåÍ�ëás#r!Æ^ÃH^! åÍ]\Ñ!Æ^! åÍ`\Ñ|µÊ_^!Æ^Æ^!e^Ãx^invalid expressionåÍW\ÑÍc\!Æ^ë!9ùëÁÉÞ^Ãè$Ã\%ÃNtÃ�yÅ!ÿÿ9ùDMÍ’^\Íåʸ^Í•^Ã{_Í•^Í•^ë`isÕ͘^Ñ>R½ÂÕ^>¼Ê_>N½Âá^>¼Ê_>B½Âí^>¼Ê_>T½Âù^>¼Ê_>F½Â_>¼Ê _Ã&_! Ã{_! Ã{_!Ã{_! Ã{_! Ã{_`in&åÍ›^Ñ|µÂ=_`in&Ã{_`in&Ðÿë`isÍ’^åÍ›^Ñ|µÊs_`in&Í?åÍ•^ÑÐÿë`isÃJ_`in&Ã{_ë!9ùëÁÉÃ�_Ãý.Ãe.Ã&sÅ!—_Ã¥_@start: csectå͇_ÑÍŠ_!³_ý_jmp @initåÍ�_Ñ!È_Ãí_extrn @and,@asl,@asr,@comp,@com,@divåÍ�_Ñ!ø_Ã`extrn @gchar,@gint,@incdecåÍ�_Ñ!`ÃD`extrn @mult,@neg,@nlog,@or,@pint,@subåÍ�_Ñ!O`Ãt`extrn @sxt,@ucomp,@xor,@init,@switchåÍ�_Ñ!`ç`extrn @gintss,@gintsl,@gcharss,@gcharslåÍ�_Ñ!²`ÃÚ`extrn @pintss,@pintsl,@pcharss,@pcharslåÍ�_Ñ!å`Ãó`@eq equ @compå͇_ÑÍŠ_!aÃa@ge equ @comp+35hå͇_ÑÍŠ_!!aÃ3a@gt equ @comp+1ahå͇_ÑÍŠ_!AaÃSa@le equ @comp+43hå͇_ÑÍŠ_!aaÃsa@lt equ @comp+28hå͇_ÑÍŠ_!�aÓa@ne equ @comp+0dhå͇_ÑÍŠ_!¡aõa@uge equ @ucomp+6chå͇_ÑÍŠ_!ÃaÃ×a@ugt equ @ucomp+51hå͇_ÑÍŠ_!åaÃùa@ule equ @ucomp+79hå͇_ÑÍŠ_!bÃb@ult equ @ucomp+5fhå͇_ÑÍŠ_!)bÃ=b@preinc equ @incdecå͇_ÑÍŠ_!KbÃdb@postinc equ @incdec+10hå͇_ÑÍŠ_!rbÊb@predec equ @incdec+08hå͇_ÑÍŠ_!˜bñb@postdec equ @incdec+1ahå͇_ÑÍŠ_ÁÉÃÁbÃ&sÅ!ÈbÃÌbendå;bÑÁÉÃÙbÃsÅ!àbÃäbdb åÍÖbÑÁÉÃ÷bÃý.Ã(.Ã&sÅ!9ùDMÍ�åÍîbÑÍñb!cÃcdsectåÍôbÑÁÉÃ$cÃsÅ!+cÃ/cds åÍ!cÑÁÉÃ?cÃý.Ãe.Å!9ùDM!McÃUc extrn åÍ9cÑÍ�åÍ9cÑÍfÃEfmvi b,åÍèeÑÍ�åÍñeÑÍîe!\fÃhfjmp @switchåÍèeÑÍîeÁÉÃxfÃsÅ!fÃfdw åÍufÑÁÉÙfÃ&sÃsÃ÷$Ãe.Å!9ùDMÍ�|µÂÎf!°føfmov a,håÍ�fÑ!ÃfÃÉfora låÍ�fÑ!ÔfÃÙfjnz åÍ�fÑÍ�åÍ“fÑÍ–fÁÉÃòfÃsÅ!ùfÃglxi h,åÍïfÑÁÉà gÃíjÅ!9ùDM! n}þÂ5g!&gÃ-g@gcharåÍ gÑÃFg!;gÃAg@gintåÍ gÑÁÉÃTgà kÃíjÃEkÅ!üÿ9ùDM! ~#fo~#foë`is#r`i~#fo nå`i~#fon&Í?Ñå! ~#fo~#foÑå*¢¤ÑÍúë! s#rÍ� ++|µÂúgÍ�åÍKgÑ|µÊäg!ÔgÃÜg@gintssåÍNgÑÃ÷g!êgÃòg@gintslåÍNgÑÃ3hÍ�åÍKgÑ|µÊh!hÃh@gcharssåÍNgÑÃ3h!%hÃ.h@gcharslåÍNgÑÍ�åÍQgÑë!9ùëÁÉÃWhÃsÃý.Ã9.Ãe.ÃíjÅ!9ùDMÍ�+|µÂ·h!ohÃthlda åÍHhÑÍ�åÍKhÑÍ�|µÊ¡h!‘hÓh+åÍKhÑÍ�åÍNhÑÍQh!ªhïh@sxtåÍThÑÃóh!½hÃÃhlhld åÍHhÑÍ�åÍKhÑÍ�|µÊðh!àhÃâh+åÍKhÑÍ�åÍNhÑÍQhÁÉÃûhÃ&sÅ!iÃidad håÍøhÑÁÉÃiÄkækÅ!9ùDMÍi! n&åÍiÑÁÉÃ=ià kÃíjÃEkÅ!üÿ9ùDM! ~#fo~#foë! s#r! ~#fo nå! ~#fon&Í?Ñå! ~#fo~#foÑå*¢¤ÑÍúë`is#r! n}þÂçiÍ�åÍ4iÑ|µÊÑi!ÁiÃÉi@pintssåÍ7iÑÃäi!×iÃßi@pintslåÍ7iÑà jÍ�åÍ4iÑ|µÊ j!ûiÃj@pcharssåÍ7iÑà j!jÃj@pcharslåÍ7iÑÍ�åÍ:iÑë!9ùëÁÉÃDjÃ&sÃsÃý.Ã9.Ãe.Å!9ùDMÍ�+|µÂ|j!\jÃdjmov a,låÍ5jÑ!ojÃtjsta åÍ8jÑÃ�j!‚jÈjshld åÍ8jÑÍ�åÍ;jÑÍ�|µÊµj!¥jçj+åÍ;jÑÍ�åÍ>jÑÍAjÁÉÃÀjÃ&sÅ!ÇjÃÌjxchgåͽjÑÁÉÃÙjÃ&sÅ!àjÃæjdad dåÍÖjÑÁÉÃùjÃsÃý.Ãe.Å!9ùDM!kà kcall åÍðjÑÍ�åÍójÑÍöjÁÉÅ!9ùDMÍ�|·ÍµúAkÍ�ÿÍͯÁÉÁÉÃWkà kÃÓbÃrfÃ9.Ãe.Å!9ùDMÍ�åÍHkÑ|µÊskÍKkÃvkÍNkÍ�åÍQkÑÍTkÁÉÊkÃ&sÅ!‘k×kpop då͇kÑ*¢¤##"¢¤ÁÉïkÃ&sÃíjÅ!9ùDM! n}þÂêk!ÈkÃÐkmov a,låÍ©kÑ!ÛkÃâkstax dåÍ©kÑÃûk!ðkÃök@pintåͬkÑÁÉÃlÃÏsÅ! lÃl@subåÍlÑÁÉÃlÄkÃ&sÅÍl!)lÃ/ldad dåÍlÑÁÉÃ<ê¤zí°ÁÉ~# x±Â¤zÁÉ ë ë><êÀzí¸ÁÉ~+ x±ÂÀzÁÉ|ºÀ}»ÉÃÛzÃ"zÃ{Í7*ŸÅåÍÕzÑ\ÍþÿÁÊ!å*ŸåÍØzÑÑÉÍ7¯Í,Ú2që*ŸëÅÍ&ÍþÿÁÊ:qÍ):¡·Ê?{=Ê?{=Âr:qo&ÉÍ Åþ Âa{ Í ÍÃe{_Í ÍæÂq{ÁÉÍþÊÁÉÍ7Å:ŸO*¡ëÍo`ÁÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u€Í*£|µ*uÊö{*¡€€~#ÂÍ{"¡*sëÍ·*uÂö{#"u*£+"£ú{ÁÉÃþ{Ã}Í7:ŸÍ,ÚÅå*ŸåÍû{Ñë:£*¡·Ê |}|æ2qã å¾ÊQ|ãëÕÍÑáþÿÂG|ÑÁÃ:qwÕÍÑþÿÊB|! Ñ{æwëÁÉ:w·oÊr|¯2w&ÉÅÍÁþÊþ!ÿÿÈoþ •|Å ÍÁ. &ÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u*£|µÊî|*¡ëÍ*sëÕÍÑþÁÊÅþÂó|! ~þ€Âî|6*uÁÉ*£+"£*¡€"¡*u#"uú|Í Í,ÚÅ FN¯xg>G�oy ò2}$ÁÉ*Ÿë!·È#ÇyÅ!9ùDM! n&0ÍùͯÚºy! n&9ÍͯÁÉÁÉÍ7Å*Ÿë*¡·Êéy¾ÂÌyÕ#~·Êîy¾ÊÙyÑÃÉyÁ!É`iÑÁÉÅ!9ùDM! n&aÍùͯÚz! n&zÍͯÁÉÁÉÍ Åë!\Í&Í!ÁÉÍ Å6ÿ ëÕÕÕÍ Íá#F#Ñx·Ê_z~#ÃRz¯áÁÉÍ Å_þ Âyz Í ÍÁÉÃ#Í7*£|µÈÅDM*¡ë*ŸÍÌzÚ°z><ê¤zí°ÁÉ~# x±Â¤zÁÉ ë ë><êÀzí¸ÁÉ~+ x±ÂÀzÁÉ|ºÀ}»ÉÃÛzÃ"zÃ{Í7*ŸÅåÍÕzÑ\ÍþÿÁÊ!å*ŸåÍØzÑÑÉÍ7¯Í,Ú2që*ŸëÅÍ&ÍþÿÁÊ:qÍ):¡·Ê?{=Ê?{=Âr:qo&ÉÍ Åþ Âa{ Í ÍÃe{_Í ÍæÂq{ÁÉÍþÊÁÉÍ7Å:ŸO*¡ëÍo`ÁÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u€Í*£|µ*uÊö{*¡€€~#ÂÍ{"¡*sëÍ·*uÂö{#"u*£+"£ú{ÁÉÃþ{Ã}Í7:ŸÍ,ÚÅå*ŸåÍû{Ñë:£*¡·Ê |}|æ2qã å¾ÊQ|ãëÕÍÑáþÿÂG|ÑÁÃ:qwÕÍÑþÿÊB|! Ñ{æwëÁÉ:w·oÊr|¯2w&ÉÅÍÁþÊþ!ÿÿÈoþ •|Å ÍÁ. &ÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u*£|µÊî|*¡ëÍ*sëÕÍÑþÁÊÅþÂó|! ~þ€Âî|6*uÁÉ*£+"£*¡€ *ùÍKÍžÃ+TžFQežÃ'Ã+ÃFÃŽÃrÃ7 :²2É!³q:³þ ÊŠ *³MÍ8 ÃÖá^#V#å*~#foÉá^#å*~#foÉá^#V#å*nÉá^#å*nÉá^#V#åë ~#foÉá^#åë& ~#foÉ!È+É!È#É!Ø+É!Ø#É!ð+É!ø+ÉÈÉÈÉØÉØÉðÉøÉ}»À|ºÉëz¼À{½Éë|ºÀ}»Éë|ªòìz·ð7Éë|ªòó|·ð7ÉzõÍZëÍZëÍ)ñ·ð|/g}/o#É|µÈÕå͉ÑÍk|/g}/o#Ñɯ2qÍZëÍZÍk:qÐ|/g}/o#É|·ð/g}/o#:q<2qÉÅÍqÁÉDM!x±ÈxGyOÒƒë)ëÃv|µÈÅÍ”`iÁÉ|·ú )ÖëxõÍÝÚ·Õz/W{/_ѯzW{_ñ=ÈõyOxGæ¯2qÍZëÍZë͉ÃM|ºØÀ}»Éëȯ|g}oÃæëÈ)Ãô|/g}/o#Éz/W{/_É!9~#foÉ!à !à ! à ! à !à !à Ÿ!9Å~#ÂAÁÉá"s!`å*"³!è"µ!ÜY"—>Û2­>Ó2°>É2¯2²!Ì"�!"“!@"‘!"• ÍæÊžÍ!€ßF#x·Â±Ã~#±¯!ßb¯2r~#þ ÊÈ·Êþ"ÂÞ2rÃß+}|~#·ÊÅG:r·xÁÊþ"Âæ¯2r+w#þ Âæ+6#ÃÈÕ!×6#¯2w2x*sé!ÿÿÉ>õÍrÚ<o&åÍFáñ=þÂ-ÃÍ`Í ÍrÚ'~æÊhåÍÅÍëÍÁá6þÿ!À+ÉÍ`WÖØþ?ØÕ_!×~æ7ÑzÈ?ÉÍ`ÅÍ åþ:>ªÍÖ@w#ÍÆþ.¶ÍÆ66ÑÁÉÅþ*>?ÊéÍñÚçw#ÂÏÁÍñØÃÞ> w#ÂçÁÉÍþ.7Èþ:7Èþ7Èþ!ÉþaØþ{ÐÖ Éþ Ê þ Ê ÉÅÍ`·OÂE×!·æyÂ6ÁÉÕ$Ñ Â-7ÁÉÍrÚBÖo&))T])))ë!·yÁÉÕÅõå€ÍáñÁÑÉÕÍø3͵(>ÑÍø3>@26;Ãq å*-;";áÂ.Í,4:+;æþö2+;É";|·Â²!}·Â£!9/Í,4Éõñõ·Ê¹!¦!ñ90Í,4Éñ>�GÈ>)Íø3þ!#ÍÝ'̓&ñõÍÎ)ÍÞÍ*͵(Í1þÊÊð!ÍÂ&,Í2ÑÉ#ÍÎ%Âý!`/Í,4ñÍ^(õͤ&ÍÂ&ÍÎ)ñÍÞÍ*͵(Íy(É~þùÄÃ7#^#V#Í+"Í1ÉÅåë))){S~õæþÀ+Ì2ñæ‡G~õæ`°20;ñæ25;#~æ2/;~æ?>Êk"=2);#^#V#Õ^#V#ë"1;ë^#Vë"3;Ñ:5;·Ê•"*;ë!:0;æ@ʦ""3;áÁÉå*G;#w"G;áÉå*G;~þÿÊÂ"·ÂÍ"++Í2Í1:áÉ+"G;áÉå*G;+"G;áÉå! >"G;6ÿ!+>"I;áÉå*G;~·áÈþÿÉåõ*/;ë*I;s#r#ë*1;ës#r#ë*3;ës#r#ë*+;ës#r#ë*-;ës#r#:5;w#"I;Íw#ñáÉåõ*:;ë*I;s#r#ë*<;ës#r#ë*>;ës#r#ë*6;ës#r#ë*8;ës#r#:@;w#"I;Íw#ñáÉ|þ?ØÂ‚#}þÃàÃ}>Ãö@Ã2NÃ(AÃ;AÃpAÃŒAÃÞAà BÄBÃh ÇÂ/Ã5NÃW1Ãd Ãv1ÖBûCÃÍ�ë`is#rÃJÍ�ë! s#rÃÃ!ÃSë! 9ùëÁÉÅ!9ùDM*Tå! ^#Vr+sáë)))n}þʵþʵþʵþʵþʵþʵþ ʵþʺþ ʺþÊ¿þ Ê¿ÃÉ!ÁÉ!ÁÉ!ÁÉ!ÁÉÁÉÃéì!Ã.ÃAù=Ã[Fà =ÃÌ2Ãã=Ã&=Å!þÿ9ùDM!"Už*Tå! ^#Vr+sáë)))~#fo}2u›*TåÍ�Ñ)))n}þÊ\þʉþÊŸþʾþÊÚþÊúþÊOþ Êoþ ʧþ ÊØÃ"!åÍÎÑë`is#r!"UžÍ�}2v›Í�Íå}2w›Ã"!åÍÎÑ}2v›*Už#"UžÃ"*u›å!åÍÑÑ)))Ñ|²g}³o}2u›Ã"*u›å!åÍÑÑÑ|²g}³o}2u›Ã"*u›å!åÍÔÑ))))Ñ|²g}³o}2u›Ã"Í×ÍÝåÍÚÑ|µÊÍÝ7ÍÒ!!åÍàÑÃL*u›åÍãÐÿ)))Ñ|²g}³o}2u›Íæ|µÂL!åÍàÑÃ"*u›å!åÍÔÑ))))Ñ|²g}³o}2u›Ã"*u›å!åÍÑÑ)))Ñ|²g}³o}2u›*u›å!åÍÑÑÑ|²g}³o}2u›Ã"*u›å!åÍÑÑ)))Ñ|²g}³o}2u›!åÍÎÑ}2v›!"UžÃ"*u›å!åÍÔÑ))))Ñ|²g}³o}2u›!åÍÎÑë`is#r!"UžÍ�}2v›Í�Íå}2w›Ã"Ã%ë!9ùëÁÉÃ=ù=Ãã=ÃÌ2Ã&=Å!ÿÿ9ùDMÍ1Í4>A½ÂW>¼Ê®>B½Âc>¼Êµ>C½Âo>¼Ê¼>D½Â{>¼ÊÃ>E½Â‡>¼ÊÊ>H½Â“>¼ÊÑ>L½ÂŸ>¼ÊØ>M½Â«>¼ÊßÃô`i6Ãô`i6Ãô`i6Ãô`i6Ãô`i6Ãô`i6Ãô`i6Ãô`i6Ãô!åÍ7Ñ!Ã8Í1! n}·ÂÍ:|µÂ!åÍ7Ñ! n}þÂ0Í4,ÍåÊ0!åÍ7Ñ`in&Ã8ë!9ùëÁÉÃSù=Ãã=Ã:=ÃÌ2Ã&=Å!ÿÿ9ùDMÍD`i6ÍG>P½Âq>¼Ê¤>S½Â}>¼ÊÉ>B½Â‰>¼Êí>D½Â•>¼Êô>H½Â¡>¼ÊûÃ!ªíSWåÍJÑ|µÊ¾`i6ÃÆ!åÍMÑÃ!ÏÃÑPåÍJÑ|µÊâ`i6Ãê!åÍMÑÃ`i6Ã`i6Ã`i6à !åÍMÑ!Ã~ÍD! n}þÊ+þÊ>þÊUÃvÍP|µÂ;!åÍMÑÃvÍG,ÍåÊR!åÍMÑÃvÍP|µÊk`in&ÍÒs!åÍMÑÃv`in&Ã~ë!9ùëÁÉÖÃÃÌ2ÃaNÛ Å!üÿ9ùDM*Až+|µÂÃÍ�åÍŠÑ|µÊÃ! åÍ�Ñ!Ã]*Až++|µÂðÍ�åÍŠÑë`is#rë|µÂð! åÍ�Ñ!Ã]*Až+|µÂ*QžÍk$yë! s#rÃ-`i^#Vr+sëÍk$yë! s#r! å! ~#foåÍ�åÍ�ÑÑÑ! n}þÊfþÊfþÊ>þ ÊÃG*Až+|µÂ*KžÿÿÍÒ®*KžÍk$yå*Cžå*KžÍk$y##~#foÑÍúëás#r! n}þÂÃ! ~#fo6! n}þÂØ! ~#fo6! ~#fo##å*Cžëás#r! ~#fo#å*Qžëás*Qž"Kž*Až++|µÂ;! ~#fo#n&"Kž! ~#fo##~#foå*CžÑÍåÊ;! åÍ�ÑÃG*Až+|µÂJÃGÍ�åÍ“Ñë`is#rë|µÂm!åÍ�Ñ!Ã]! ~#fo#å`i^#Vr+sëÍkT#nëás! ~#foåÍ�ÍkT##~#foå*KžÍk$y##~#foÑÍúëás#r! ~#fo##åÍ�ÍkT##~#foëás#r! ~#fo6ÃG*Až+|µÂD! ~#fo#å*Qžëás! ~#fo##å! ~#fos#rás#r! ~#fo6ÃG*Až+|µÂW*Qž#"Qž!Ã]ë!9ùëÁÉÖÃv1ÇÃÌ2Ã"Ã>Ã&=Ãjù=Ã-Û Ãã=Ã`5Ã(AÃpAÄBÅ!üþ9ùDM̓>½Â¯>¼Ê>½Â»>¼ÊK>½ÂÇ>¼Êx>½ÂÓ>¼Ê¾>½Âß>¼ÊÑ> ½Âë>¼Êä>½Â÷>¼Ê[>½Â>¼Ê®> ½Â>¼ÊT> ½Â>¼Ê’Ãù*Až+|µÂ.*Ož+"Ož*Až++|µÂ;Íi!å!h™åÍlÑÑÃù*Až+|µÂ[*Ož+"Ož*Až++|µÂhÍi!å!h™åÍlÑÑÃù*KžÍk$yn}þ—!åÍoÑÃù!åÍrÑ*CžåÍuÑ"CžÍx|µÂ»!åÍoÑÃù!åÍ{Ñ|µÊÎþÃù!åÍ{Ñ|µÊáÃÑÃùÍ~!h™åÍ�Ñ|µÂ(!h™åÍ„Ñ|µÂ*Až+|µÂ! å!h™åÍlÑÑÃÃ%! åÍoÑÃ3!åÍoÑÃùÍx|µÊ>Ãù͇,ÍåÊU!åÍoÑÃùÃäÃùÍ~!h™åÍ�Ñ|µÂ{!å!h™åÍlÑÑÆ!åÍoÑÃùÍx|µÊ‘Ãù͇,Íåʨ!åÍoÑÃùÃ[Ãù!"cžÍ~!åÍrÑë! sÍuë! s#rÍ�}2u›Í�Íå}2v›Íx|µÂö!åÍoÑ!h™åÍ„Ñë`is#r`i^#Vr+sëÍkT##åÍ�ëás#rÍ�ÍkTå! nëásÍ�ÍkT#å*ü‡ëásÃù*Až+|µÂ`ÃùÍx|µÊnÍŠÃ�!åÍrÑÍx|µÊ‡Íu"IžÃ�!åÍoÑÃùÍ~!›Ã� å!u™åÍ�ÑÑ*ažå!uœÑå!u™åÍ�ÑÑ!u™åÍ“ÑJÍùÒà!ÑÃÓ å!u™åÍ�ÑÑú!æÃìPage å!u™åÍ�ÑÑÃùë!9ùëÁÉÃÃÌEÅ!þÿ9ùDM`i¯w#wÍ�å*QžÑÍúÒ[Í�Ík$yåÍ�åÍÑÑ|µÂOÍ�#Ãa`i^#Vr+sÃ!Ãaë!9ùëÁÉÂù=à =Ãã=Ã"Ã>ÃÌ2Ã&=Å!þÿ9ùDMÍmÍp'ÍåÂñ*až##uœn}þ'ÊñÍsÍp'ÍåÊëÍp|µÊë*Už#"Už+u›å*až#"až+uœn&|¢g}£oëásìÍsÃà! n}þÊþÊoÃà*Až++|µÂK!åÍvÑÍyë`is#rÍ�ÿÍÒ4!åÍ|Ñ*Už#"Už+u›åÍ�ëásÃl*Už#"UžÍp|µÊlÍp,ÍåÊlÍsÃRÃà*Až++|µÂ»!åÍvÑÍyë`is#r*Už#"Už+u›åÍ�ëás*Už#"Už+u›åÍ�ÍåëásÃÝ*Už##"UžÍp|µÊÝÍp,ÍåÊÝÍsÃÃÃàÍp,ÍåÊÍ|µÂ!åÍ|ÑÍp|µÊÍp,ÍåÊÍsÃüÍsÍ|µÍ�Ã$ë!9ùëÁÉÃ?ÃDNÃ[Fà =Ã!Ãã=Å!þÿ9ùDM!å! åÍ�åÍ0ÑÑÑÍ6åÍ3Ñ|µÊm!ÃÙ`i¯w#wÍ6åÍ9Ñ|µÊ¬Í� ÍùÒ ! ^#Vr+sÕÍ6ëás`i^#Vr+sÃÓÍ�|µÊÍÍ6:ÍåÂÄÍ<!ÃÙÃÓ!ÃÙÍ<Ãsë!9ùëÁÉÃëÛ ÃaNÅ!9ùDMÍ�åÍ�åÍåÑÑ|µÊ !ÁÉ! å*OžÍkTåÍ�åÍèÑÑÑ*OžÍkTå*Sžëás#r*OžÍkT#åÍ�ëás*OžÍkT##åÍ�ëás#r*OžÍkTå! nëás*Ož#"Ož!ÁÉÁÉïÃ{!ÊFÃö@Ã¥5ÃÍ5ÄBÅ!üÿ9ùDM*žå!åÍ� åÍ�åÍ ÑÑÑÑ`i¯w#wÍ�åÍ� ÑÍìÒ’ Í�ëÍ)|µÂ !üÃþ åÍ£Ñ! ~#fo##~#foåͦÑ! à åÍ©Ñ! ~#foåÍ©Ñ! ~#foåͬÑë! s#rÍ�ÍëÒu !` Ãb åÍ©Ñ! ^#Vr+sÃM ! ^#Vå!ëár+s`i^#Vr+sÃÖë!9ùëÁÉá ÃÌEÅ!þÿ9ùDM*Ož+ë`is#rÍ�ÿÿÍÒö Í�ÍkTåÍ�åÍž ÑÑ|µÂê Í�#Ãü `i^#Vr+só !Ãü ë!9ùëÁÉÃ!Ã[FÃ’EÅ!9ùDM! n&åÍ!Ñ|µÂo!! n&åÍ !Ñ|µÂo!! n}þ@Êo!! n}þ$Êo!! n}þ_Êo!! n}þ.Êo!! n}þ?Ât!!ÁÉ!ÁÉÁÉÃ�!ÃÌEÅ!9ùDM! ~#foå! ~#foåÍ~!ÑÑÁÉÁÉû!Ã"Ã&=ÃÌ2Ã>Å!þÿ9ùDM! n}·ÊÓ!!ÃÖ!!åͯ!ÑͲ!|µÂë!!å͵!Ñ͸!ë`is#r!ÿÍÒ"! n}·Ê"!å͵!ÑÍ�Ã"ë!9ùëÁÉÃ+"ö"ÃÌ2ÃN6Å!ÿÿ9ùDM!"=žÍ""ë`is! n}þÊX"þÊk"þÊ’"Ã¥"`in}·Êh"! åÍ%"ÑÃ¥"`in}þÂ"!åÍ%"ÑÃ�"`in}·Ê�"!åÍ("ÑÃ¥"`in}·Ê¢"!åÍ("ÑÃ¥"`in&í"ë!9ùëÁÉÃÈ"Ã?#Ã:=ÃÌ2Ã\>Ã>Å!ÿÿ9ùDM͹"ë`is!Ý"Ãß"&åͼ"Ñ|µÂ#!ï"Ãó"ANDåͼ"Ñ|µÂ#`in&Ã6#͹"|µÂ#`in}·Ê#! åÍ¿"ÑÍÅ"åÍÅ"Ñ|¢g}£oåÍÂ"Ñ!Ã6#ë!9ùëÁÉÃQ#ÃÇ#Ã:=ÃÌ2Ã\>Ã>Å!ÿÿ9ùDMÍB#ë`is!f#Ãh#|åÍE#Ñ|µÂ�#!x#Ã{#ORåÍE#Ñ|µÂ�#`in&þ#ÍB#|µÂ�#`in}·Ê¥#! åÍH#ÑÍN#åÍN#Ñ|²g}³oåÍK#Ñ!þ#ë!9ùëÁÉÃÙ#ÃJ$Ã:=ÃÌ2Ã\>Ã>Å!ÿÿ9ùDMÍÊ#ë`is!î#Ãð#^åÍÍ#Ñ|µÂ$!$Ã$XORåÍÍ#Ñ|µÂ$`in&ÃA$ÍÊ#|µÂ&$`in}·Ê.$! åÍÐ#ÑÍÖ#åÍÖ#Ñ|ªg}«oåÍÓ#Ñë!9ùëÁÉÃ\$ÃB%Ã:=ÃÌ2Ã>Ã\>Å!ýÿ9ùDMÍM$ë! s!s$Ãv$>>åÍP$Ñ|µÂ”$!†$Ê$SHLåÍP$Ñ|µÊÎ$ÍM$|µÂ¦$! n}·Ê®$! åÍS$ÑÍV$ë`is#rÍV$åÍ�ÑÍäåÍY$Ñ!Ã9%!Ô$Ã×$<<åÍP$Ñ|µÂõ$!ç$Ãë$SHRåÍP$Ñ|µÊ/%ÍM$|µÂ%! n}·Ê%! åÍS$ÑÍV$ë`is#rÍV$åÍ�ÑÍòåÍY$Ñ!Ã9%! n&Ã9%ë!9ùëÁÉÃT%ÃV&Ã:=ÃÌ2Ã\>Ã>Å!þÿ9ùDMÍE%ë`is!i%Ãk%+åÍH%Ñ|µÊÓ%ÍE%ë! s{·Ê‰%!ÃŒ%!å`in}·Ê›%!Þ%!Ñ++|µÂ¯%! åÍK%ÑÍQ%åÍQ%ÑåÍN%Ñ`inå! nѯgW|²g}³oÃM&!Ù%ÃÛ%-åÍH%Ñ|µÊE&ÍE%ë! sÍQ%ÍúåÍQ%ÑåÍN%Ñ`in}·Ê &!Ã&!å! n}·Ê!&!Ã$&!Ñ+|µÂE&`inå! nѯgW|²g}³oÃM&ÃE&`in&ÃM&ë!9ùëÁÉÃh&Ãz'Ã:=ÃÌ2Ã\>Ã>Å!ýÿ9ùDMÍY&ë! s!&Ã�&*åÍ\&Ñ|µÊ»&ÍY&|µÂ�&! n}·Ê¥&! åÍ_&ÑÍe&åÍe&ÑÍ?åÍb&Ñ!Ãq'!Á&ÃÃ&/åÍ\&Ñ|µÊ'ÍY&|µÂß&! n}·Êç&! åÍ_&ÑÍe&ë`is#rÍe&åÍ�Ñ͉åÍb&Ñ!Ãq'! 'Ã'%åÍ\&Ñ|µÂ-'!'Ã#'MODåÍ\&Ñ|µÊg'ÍY&|µÂ?'! n}·ÊG'! åÍ_&ÑÍe&ë`is#rÍe&åÍ�ÑÍ)åÍb&Ñ!Ãq'! n&Ãq'ë!9ùëÁÉÃ�'ë(Ã:=à =ÃÌ2Ã\>Ã>Å!ÿÿ9ùDMÍ}'ë`is!¤'æ'<åÍ€'Ñ|µÂÅ'!¶'û'HIGHåÍ€'Ñ|µÊ(̓'<ÍåÂï'*až+uœn}þ<Âï'*až+"až`in&â(Í}'|µÂÿ'`in}·Ê(! å͆'ÑÍŒ'Íåå͉'Ñ!â(!!(Ã#(>åÍ€'Ñ|µÂA(!3(Ã7(LOWåÍ€'Ñ|µÊš(̓'>ÍåÂk(*až+uœn}þ>Âk(*až+"až`in&â(Í}'|µÂ{(`in}·Êƒ(! å͆'ÑÍŒ'ÿ|¢g}£oå͉'Ñ!â(`in&â(ë!9ùëÁÉú(Ã:=ö"ÃÌ2à )Å!ÿÿ9ùDM!È(ÃÊ((åÍ®(Ñ|µÊý(ͱ(ë`is!á(Ãã()åÍ®(Ñ|µÂõ(! åÍ´(Ñ`in&Ã)Í·( Ã)ë!9ùëÁÉÃ$)ù=Ã-Û Ã\>ÃÃÌ2õ*Å!ñÿ9ùDMÍ)*ažë! s#r`iåÍ)Ñ|µÂœ*`iåÍ)Ñë! s#rz³Ê*! ^#Vr+sëÍkT##~#foåÍ)ÑÍ� ÍkTn&|¢g}£o|µÊè)Í� ÍkT#n&"ü‡*Cžå*KžÍk$y##~#foÑÍúå*UžÑ"þ‡Í� ÍkTn&"ˆÍ� ÍkTn&|¢g}£oì*Ü*`iåÍ)Ñë! s#rz³Ê†*! ^#Vr+sëÍk$y##~#foåÍ)ÑÍ� Ík$y#n&"ü‡*Cžå*KžÍk$y##~#foÑÍúå*UžÑ"þ‡!"ˆ!ì*Ü*!åÍ)Ñ!åÍ)Ñ!ì*Í� "ažÍ!)!ì*ë!9ùëÁÉÃÓ*ù=Ã’Eà =ÃñGÃã=ÃÌ2Ã\>Ã[Fþ-Å!öÿ9ùDM͸*! 6#6*až#uœn}þ'ˆ+;*åÍ»*Ñ|µÊˆ+! 6ÿ#6ÿÍÄ*åÍÁ*Ñ>B½Â +>¼ÊG+>O½Â,+>¼ÊQ+>X½Â8+>¼Ê[+>C½ÂD+>¼Êe+Ã…+`i6#6Ã…+`i6#6Ã…+`i6#6Ã…+`i6ÿ#6ÿÃ…+!åÍÇ*Ñ!åÍÊ*Ñ!õ-ÍÄ*;*>%½Â—+>¼Ê¾+>@½Â£+>¼ÊÐ+>$½Â¯+>¼Êâ+>'½Â»+>¼Êô+Ã,`i6#6! ¯w#wÃ-`i6#6! ¯w#wÃ-`i6#6! ¯w#wÃ-`i6ÿ#6ÿ! 6ÿ#6ÿÃ-*ažë! s#r;*-ÍåÂ!,ÍÄ*;*åÍÍ*Ñ|µÂr,;*åÍÁ*ÑAÍùÚP,;*åÍÁ*ÑFÍÒr,;*åÍÁ*ÑOÍåÊr,;*åÍÁ*ÑHÍåÂ~,ÍÄ*ë`is#rÃ!,Í�"ažÍ�åÍÁ*Ñ>H½Âš,>¼Êµ,>O½Â¦,>¼ÊÈ,>B½Â²,>¼ÊÛ,Ãî,`i6#6! 6#6Ã-`i6#6! 6#6Ã-`i6#6! 6#6Ã-`i6 #6;*-Íå -! 6ÿ#6ÿÍÄ*! ¯w#w! s#r! s#rÍ�|·òJ-;*'ÍåÂJ-ÍÄ*Í�|µÊJ-Ã�-! åÍ�å;*åÍÐ*ÑÑÑ|µÊŒ-Í�|µÂ|-!åÍÇ*Ñ! ¯w#wÍ�+|µÂ‰-ÍÄ*Ã�-! ^#Vr+sÍÄ*Ã&-Í�åÍ�ÑÍkåÍÊ*Ñ!õ-ë! 9ùëÁÉÃÇ-à =ÃñGÅ!9ùDMÍ�>ÿ½Âß->ÿ¼Ê.>½Âë->¼Ê3.>½Â÷->¼Êp.> ½Â.>¼Ê¯.>½Â.>¼Êñ.Ã{/Í�åÍ�~#foÍkåÍÁ-Ñëás#rÃ{/ÍÁ-0ÍåÊP.ÍÁ-1ÍåÊP.!ÁÉÍ�åÍ�~#fo)åÍÁ-ÑÐÿëás#rÃ{/ÍÁ-0ÍùÚˆ.ÍÁ-7ÍÒ�.!ÁÉÍ�åÍ�~#fo)))åÍÁ-ÑÐÿëás#rÃ{/ÍÁ-0ÍùÚÇ.ÍÁ-9ÍÒÌ.!ÁÉÍ�åÍ�~#fo ÍkåÍÁ-ÑÐÿëás#rÃ{/ÍÁ-0ÍùÚ+/ÍÁ-9ÍÒ/ÍÁ-åÍÄ-ÑAÍùÚ+/ÍÁ-åÍÄ-ÑFÍÒ0/!ÁÉÍ�åÍ�~#fo))))åÍÁ-åÍÄ-ÑÑÐÿëás#rÍÁ-åÍÄ-Ñ9ÍÒx/Í�å~#foùÿëás#rÃ{/!ÁÉÁÉÃŽ/Ãü6ÃDNÃ(AÅ!úÿ9ùDM!"[ž! ¯w#wÍ�å*QžÑÍúÒF1*[žæÍÒÇ/*[žåÍ…/Ñ*[ž|µÂú/!å!å!ušå͈/ÑÑÑ!ç/Ãê/$Eå!ušåÍ‹/ÑÑ!"[žÍ�Ík$yë`is#r! ¯w#wÍ� ÍùÒ�0`i~#foåÍ�Ñn}·ÊR0`i~#foåÍ�Ñn}þ Âm0*[ž+ušån&€|²g}³oëásÃ�0*[ž#"[ž+ušå`i~#foåÍ�Ñnëás! ^#Vr+sÃ0*[ž#"[ž+ušå`i~#fonëás*[ž#"[ž+ušå`i~#fo##~#foëás*[ž#"[ž+ušå`i~#fo##~#foÍåëás*[ž#"[ž+ušå`i~#fo~#foëás*[ž#"[ž+ušå`i~#fo~#foÍåëás!wš4! ^#Vr+sä/*[žåÍ…/Ñë!9ùëÁÉÃ`1Ãö@Ã2NÅ!9ùDMÍ�åÍZ1ÑÍ]1ÁÉÃ|1Ãü6Å!þÿ9ùDM*[žåÍy1Ñ`i6#6Í�å*WžÑÍÚµ2*[žðÍÒ¶1*[žåÍy1Ñ*[ž|µÂç1>$2uš>R2vš*Kž}2wš*KžÍå}2xš>2yš!"[ž!yš4*[ž#"[ž+ušåÍ�Íkü‡~#foëás*[ž#"[ž+ušåÍ�Íkü‡##~#foëás*[ž#"[ž+ušåÍ�Íkü‡##~#foÍåëás*[ž#"[ž+ušåÍ�Íkü‡~#foëás*[ž#"[ž+ušåÍ�Íkü‡~#foÍåëás`i^#Vr+sÓ1*[žåÍy1Ñ!"Wžë!9ùëÁÉÃÒ2ÃW1Å!9ùDM*Až+|µÂå2ÁÉ*?ž0ÍÒ3!÷2à 3 Error stack is full.åÍÏ2Ñ*?ž#"?ž+)Ù�åÍ�ëás#r*?ž#"?ž+)Ù�å*ažëás#r*]ž#"]ž*_ž#"_žÁÉÃg3Ã`5òNÃ¥5ÃÍ5Ç7ï7ÃP8Å!þþ9ùDM*Gž#"Gž+å*IžÑÍúÚ…3ÍR3! åÍU3Ñ*Už|µÊH4*CžåÍX3Ñ!£3æ3 åÍ[3Ñ! ¯w#w̓å*UžÑÍúÒð3̓ÍùÒð3̓u›n&åÍ^3Ñ! ^#Vr+só3*UžÍùÍ©Ò4*UžÍ?ÍúëÍËÃ4!ë! s#r! ^#Vr+sz³ÊE4!;4Ã=4 åÍ[3ÑÃ$4È4*cž|µÊy4*v›&åÍ^3Ñ*u›&åÍ^3Ñ!j4Ãq4 = åÍ[3ÑÈ4!4Ã4 åÍ[3Ñ*SžåÍa3Ñ!–4Ù4: åÍ[3Ñ!uœåÍ[3ÑÍd3ë!9ùëÁÉø4Ãü6Å!þÿ9ùDM`i¯w#wÍ�å*UžÑÍúÒW5*[ž@ÍåÂé4*[žå͵4Ñ*[ž|µÂ.5>$2uš>T2vš*Kž}2wš*KžÍå}2xš>2yš*Cž}2zš*CžÍå}2{š!"[ž!yš4*[ž#"[ž+ušåÍ�u›nëás`i^#Vr+sÃÆ4ë!9ùëÁÉÃl5ÃÍ5ï7Ãö@Å!ÿ9ùDM!u™åÍc5Ñ*Ež#"EžåÍf5Ñ!Ž5Ñ5 åÍi5Ñ!"Gžë!9ùëÁÉë5Ç7Å!9ùDMÍ�Íååͨ5ÑÍ�åͨ5ÑÁÉÃÓ5òNÅ!þÿ9ùDM`i¯w#w! ~#foåÍ�Ñn}·ÊE6! ~#foåÍ�Ñn}þ Ê96! ~#foåÍ�Ñn}þ Ê96! ~#foåÍ�Ñn&åÍÐ5Ñ`i^#Vr+sÃá5ë!9ùëÁÉÃW6ÃW1ÃaNÅ!9ùDM*Wž�ÍùÚœ6!q6×6 Relocation count for 1 csect to highåÍQ6Ñ*cž|µÊ¦6ÁÉ*Až++|µÂú6!å*Wž#"WžÍkü‡å!ü‡åÍT6ÑÑÑ*WžÍkü‡å~#foå! nѯg|²g}³oëás#rÁÉÃ7ÖBÃW1Å!þÿ9ùDM`i¯w#wÍ�åÍ�ÑÍúÒx7!b•åÍ�ušn&åÍÿ6ÑÑ#|µÂl7!D7Ãg7 Disk full on writting object fileåÍ7Ñ`i^#Vr+sÃ7!"[žë!9ùëÁÉÃ�7Ãç;Å!9ùDMÍ�ÍååÍŠ7ÑÍ�åÍŠ7ÑÁÉø7ÃDNÃÍ5Å!òÿ9ùDM! ¯w#w!å! å`iåͲ7ÑÑÑ! 6è#6Í� ÍÒ@8! ^#Vr+sëë`iåÍ�åÍ� Ñ͉0ëásÍ�åÍ� ÑÍ)ë! s#rÍ�  ëÍËë! s#rÃâ7`iå͵7Ñë!9ùëÁÉÃY8Ã`5ÃÞAÅ!˜ÿ9ùDM`i¯w#wÍ�å*?žÑÍúÒÞ;*Gž#"Gž+å*IžÑÍúÚŒ8ÍS8Í�)Ù�~#fo>½Â¥8>¼ÊP9>½Â±8>¼Êt9>½Â½8>¼Ê—9>½ÂÉ8>¼ÊÂ9>½ÂÕ8>¼Êï9>½Âá8>¼Ê:>½Âí8>¼Ê3:>½Âù8>¼ÊU:> ½Â9>¼Êr:> ½Â9>¼Ê–:> ½Â9>¼Ê½:> ½Â)9>¼Êä:>½Â59>¼Ê ;> ½ÂA9>¼Ê*;>½ÂM9>¼ÊL;ÃŽ;!V9Ãi9invalid expressionë! s#rÃŽ;!z9ÃŒ9symbol not defineë! s#rÃŽ;!�9÷9invalid base for constantë! s#rÃŽ;!È9Ãä9invalid constant expressionë! s#rÃŽ;!õ9à :number out of rangeë! s#rÃŽ;!:Ã(:missing commaë! s#rÃŽ;!9:ÃJ:invalid reg pairë! s#rÃŽ;![:Ãg:invalid regë! s#rÃŽ;!x:Ë:missing right parnë! s#rÃŽ;!œ:ò:symbol has two valuesë! s#rÃŽ;!Ã:ÃÙ:symbol already defineë! s#rÃŽ;!ê:Ãÿ:op not found on cardë! s#rÃŽ;!;Ã;invalid symbolë! s#rÃŽ;!0;ÃA;relocation errorë! s#rÃŽ;!R;Ãd;ds found in csectë! s#rÃŽ;!u;Ã;unknown errorë! s#rÃŽ;Í�#)Ù�~#foåÍ�å!¨;ÃÆ; ** Error %s at colum %d **åÍV8ÑÑÑ`iå~#fo##ëás#rÃg8ë!h9ùëÁÉÃí;òNÅ!9ùDMÍ�|¢g}£o0ë! s#rÍ�9ÍòÒ-<Ã)HÅ!þÿ9ùDM!"až!\‘åÍ;<Ñë`is#rz³Âf*až#"až+uœn&åÍé=ÑÁÉ!ÁÉÁÉÃ>ÃÌ2Å*=žÍÒ7>*=ž+"=ž)u�~#foÁÉ!=>ÃP>invalid expressionåÍ>Ñ!ÁÉÁÉÅ!9ùDM*=ž#"=ž+)u�åÍ�ëás#rÁÉACI ÎADC ˆADD €ADI ÆANA  ANI æCALLÍCC ÜCM üCMA /CMC ?CMP ¸CNC ÔCNZ ÄCP ôCPE ìCPI þCPO äCZ ÌDAA 'DAD DCR DCX DI óEI ûHLT vIN ÛINR INX JC ÚJM úJMP ÃJNC ÒJNZ ÂJP òJPE êJPO âJZ ÊLDA :LDAX LHLD* LXI  MOV @ MVI NOP ORA °ORI öOUT ÓPCHLéPOP ÁPUSHÅRAL RAR RC ØRET ÉRLC RM øRNC ÐRNZ ÀRP ðRPE èRPO àRRC RST ÇRZ ÈSBB ˜SBI ÞSHLD"SPHLùSTA 2STAXSTC 7SUB �SUI ÖXCHGëXRA ¨XRI îXTHLãÃü@ÃÌNÅ!9ùDMÍ�n}·Ê&A! ^#Vr+sën&åÍù@ÑÃAÁÉÍ7*Ÿë*¡~·È#Ã2AÍ7Å*Ÿë*¡·ÊfA¾ÂIAÕ#~·ÊkA¾ÊVAÑÃFAÁ!É`iÑÁÉÍ7*Ÿë*¡·ÊƒAÃzA~·È#ÃAÃ’AÃOÅ!9ùDM! ~#foå!åÍ�åÍ�AÑÑëás#rz·òÀA!ÿÿÁÉ! ~#fo##¯w#w! ~#fo~#foÁÉÁÉÃçAÃ+IÃö@Å!yÿ9ùDM!‹ å`iåÍáAÑÑ`iåÍäAÑë!‡9ùëÁÉÃBÃFOÃ[OÅ!9ùDMÍ�åÍBÑ! ~#foåÍ�åÍBÑëás#rz·òGB!ÿÿÁÉ! ~#foå! ~#foëás#r! ~#fo##6#6! ~#fo~#foÁÉÁÉÍ7*Ÿë!·È#ÃŽBâBÃÌNÃŒOßOÅ!9ùDMÍ�+|µÂÂB! n&åÍ™BÑÁÉÍ�++|µÂàB! n&å!åÍœBÑÑÁÉÍ�+++|µÂÿB! n&å!åÍœBÑÑÁÉ! ~#fo##^#Vr+sz³Ê8C! ~#fo^#Vr+sÕ! nëásë&ÁÉ!å! ~#foå! ~#fo~#foåÍŸBÑÑÑÍåÊjC!ÿÿÁÉ! ~#fo##6ÿ#6! ~#foå! ~#foëás#r! ~#fo^#Vr+sÕ! nëásë&ÁÉÁÉÃÇCßOÃaNÃPÅ!þÿ9ùDMÍ�ÍëÒâC!Ã3E! ~#fo##~#foÍåÂÿC!Ã3E! ~#fo##~#fo€ëÍËÍúë`is#rÍ�å! ~#foå! ~#fo~#foå;CÑÑÑåÍ�ÑÍåÊXD!ÿÿÃ3EÍ�+€Í?ë`is#r! ~#fo##~#fo|µÊE!€å! ~#foå! ~#foåÍ�ÑåÍÁCÑÑÑ! ~#fo##å~#foåÍ�Ñëás#r! ~#foå~#foåÍ�ÑÍúëás#r!å!ÿÿå! ~#fo~#foåÍÄCÑÑÑÃ3E! ~#fo##6#6! ~#foå! ~#foëás#r!Ã3Eë!9ùëÁÉÃBEÃrPÅ!9ùDM! ~#fo~#foåÍ?EÑÁÉÁÉÅ!9ùDM! n}þ Í�ÊŽE! n}þ Í�ÊŽE! n}þ Í�ÁÉÁÉÛEÃqLàLÅ!9ùDM! n&åÍ•EÑ|µÍ£ÂÈE! n&å͘EÑ|µÍ£ÁÉÁÉÅ!þÿ9ùDM`i¯w#w! ~#foåÍ�Ñnå! ~#foåÍ�ÑnÑ}»Â&F! ~#foå`i^#Vr+sëÑn}·Â#F!ÃRFÃÚE! ~#foåÍ�Ñnå! ~#foåÍ�ÑnѯgWÍúÃRFë!9ùëÁÉÅ!9ùDM! n&0ÍùͯÚ†F! n&9ÍͯÁÉÁÉÃ�FÃÏLÅ!òÿ9ùDMÍ�åÍ�ÑÍ?ë! s#rÍ�ëÍËë! s#rÍ�ÍÒèGÍ�åÍ�ÑÍ?ë`is#rÍ�åÍ�Ñë! s#rÍ�åÍ�Ñë! s#rÍ� ë! s#rÍ�åÍ� ÑÍÚÐGÍ�åÍ� ÑÍúë! s#rÍ�|·ú¸GÍ�åÍ�åÍ�ÑåÍ�åÍ�Ñå!kGå!9~#foéÑÑÑÍÚzGøGÍ�åÍ�ÑåÍ�åÍ�ÑåÍ�åÍ�FÑÑÑ! å~#foåÍ�ÑÍúëás#rÃ8G! å~#foåÍ�Ñëás#rÃG! å~#foëÍËëás#rÃÀFë!9ùëÁÉÃ÷GàLÅ!9ùDM! n&åÍôGÑ|µÊH! n&àÿÃ#H! n&ÁÉÁÉÃ5HÃuPÃŒOêPÅ!þÿ9ùDMÍ�|µÂLHÍ,HÃ"IÍ�+++|µÂcH!åÍ/HÑÃ"I! ~#fo##^#Vr+sz³Ê•H! ~#fo^#Vr+sën&Ã"I!å! ~#foå! ~#fo~#foåÍ2HÑÑÑë`is#r!ÍÚÎH!ÿÿÃ"I! ~#fo##åÍ�€Í?+ëás#r! ~#foå! ~#foëás#r! ~#fo^#Vr+sën&Ã"Ië!9ùëÁÉÃ:IÃ%MÃ[FÃÏMÃñGÅ!iÿ9ùDM!� ^#Vr+së~#foë! s#rÍ��ë!• s#r! ^#Vr+sënë`is{·ÊbL`in}þ%ÂLL! ë!� s#r!“ 6#6!� s!� sÍ�n}þ-ÂÅI! ^#Vr+s!� 4Í�n&åÍ1IÑ}·ÊâI! åÍ4IÑÃåI!ë!‘ s#r! ^#Vr+sënë`is{þ.Â-J! åÍ4IÑë!“ s#r!� 4! ^#Vr+sënë`is`in&åÍ7IÑ}þDÊYJþUÊ•JþXÊžJþOʧJþCÊíJþSÊKÃ6LÍ�•~#fo|·ò•J!� ^#Vr+së6-Í�•åÍ�•~#foÍúëás#r!‘ ^#Vr+s! 6 íJ! 6íJ! 6!‘ å~#foå! n&å!• ^#Vr+së~#foå!� åÍ.IÑÑÑѯgÍúëás#rÖK!� ^#Vr+sÕ!• ^#Vr+së~#foëás!‘ ^#Vr+sÖK!� n}·Â1K!“ 6È#6!• ^#Vr+së~#foë! s#rÍ�n}·Ê–KÍ�“|µÊ–K!� ^#Vr+sÕ! ^#Vr+sënëás!“ ^#Vr+s!‘ ^#Vr+sÃLKÍ��6! ë!� s#r!� n}·ÂÙK!‘ ^#Vr+s!ÍÒÙK!› ^#Vr+së6 òKÍ�›å!� ^#Vr+sënëás{·ÊL!› ^#Vr+sÃÙK!� n}·Ê3L!‘ ^#Vr+s!ÍÒ3L!› ^#Vr+së6 à LÃIL!› ^#Vr+sÕ`inëásÃ_L!› ^#Vr+sÕ`inëásÃiIÍ�›6ë!—9ùëÁÉÅ!9ùDM! n&AÍùͯÚœL! n&ZÍͯÁÉÁÉÅ!9ùDM! n&aÍùͯÚËL! n&zÍͯÁÉÁÉÅ!ÿÿ9ùDM! ^#Vr+sz³ÊMÍ�në`is! ^#Vr+sÕÍ� nëás! ^#Vr+sÕ`inëásÃ×Lë!9ùëÁÉÃ+MÃ%MÅ!ÿÿ9ùDMÍ�åÍ� ÑÍìÒ{MÍ�^#Vr+sÕÍ� ÍëÒhMÍ�0ÃpMÍ�7ëás!&ÃÆMÍ� åÍ�åÍ� Ñ͉åÍ�åÍ(MÑÑÑë`isÍ� åÍ�åÍ� ÑÍ)åÍ�åÍ(MÑÑÑ`in&#&ÃÆMë!9ùëÁÉÃÕMÃ[FÅ!þÿ9ùDM`i¯w#wÍ�~#fon&åÍÒMÑ}·Ê"NÍ� Í?åÍ�^#Vr+sënѯgÐÿë`is#rÃãMÍ�Ã)Në!9ùëÁÉà Í Í)Ú6!ÉÍ7Å*¡ë*Ÿ:£Oz³Â\NÁÉq#ÃTNÍ7*£|µÈÅDM*¡ë*ŸͬNÚ�N><ê„Ní°ÁÉ~# x±Â„NÁÉ ë ë><ê Ní¸ÁÉ~+ x±Â NÁÉ|ºÀ}»ÉÍ Å_þ ÂÇN Í ÍÁÉÍ Åþ ÂæN Í ÍÃêN_Í ÍæÂöNÁÉÍþÊÁÉÍ7¯Í,Ú2që*ŸëÅÍ&ÍþÿÁÊ:qÍ):¡·Ê>O=Ê>O=Âr:qo&ÉÍ Åë!\Í&Í!ÁÉÃdOÃFOÃOÍ7*ŸÅåÍ^OÑ\ÍþÿÁÊ!å*ŸåÍaOÑÑÉÍ7Å:ŸO*¡ëÍo`ÁÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u€Í*£|µ*uÊP*¡€€~#ÂÜO"¡*sëÍ·*uÂP#"u*£+"£ÃÉOÁÉà Pà QÍ7:ŸÍ,ÚÅå*ŸåÍ PÑë:£*¡·Ê/P}|æ2qã å¾Ê`PãëÕÍÑáþÿÂVPÑÁÃ:qwÕÍÑþÿÊQP! Ñ{æwëÁÉÃ#:w·oÊ„P¯2w&ÉÅÍÁþÊþ!ÿÿÈoþ §PÅ ÍÁ. &ÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u*£|µÊQ*¡ëÍ*sëÕÍÑþÁÊÅþÂQ! ~þ€ÂQ6*uÁÉ*£+"£*¡€"¡*u#"uÃÌPÍ Í,ÚÅ FN¯xg>G�oy òDQ$ÁÉÍ�åÍ� Ñ͉åÍ�åÍ(MÑÑÑë`isÍ� åÍ�åÍ� ÑÍ)åÍ�åÍ(MÑÑÑ`in&#&ÃÆMë!9ùëÁÉÃÕMÃ[FÅ!þÿ9ùDM`i¯w#wÍ�~#fon&åÍÒMÑ}·Ê"NÍ� Í?åÍ�^#Vr+sënѯgÐÿë`is#rÃãMÍ�Ã)Në!9ùëÁÉà Í Í)Ú6!ÉÍ7Å*¡ë*Ÿ:£Oz³Â\NÁÉq#ÃTNÍ7*£|µÈÅDM*¡ë*ŸͬNÚ�N><ê„Ní°ÁÉ~# x±Â„NÁÉ ë ë><ê Ní¸ÁÉ~+ x±Â NÁÉ|ºÀ}»ÉÍ Å_þ ÂÇN Í ÍÁÉÍ Åþ ÂæN Í ÍÃêN_Í ÍæÂöNÁÉÍþÊÁÉÍ7¯Í,Ú2që*ŸëÅÍ&ÍþÿÁÊ:qÍ):¡·Ê>O=Ê>O=Âr:qo&ÉÍ Åë!\Í&Í!ÁÉÃdOÃFOÃOÍ7*ŸÅåÍ^OÑ\ÍþÿÁÊ!å*ŸåÍaOÑÑÉÍ7Å:ŸO*¡ëÍo`ÁÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u€Í*£|µ*uÊP*¡€€~#ÂÜO"¡*sëÍ·*uÂP#"u*£+"£ÃÉOÁÉà Pà QÍ7:ŸÍ,ÚÅå*ŸåÍ PÑë:£*¡·Ê/P}|æ2qã å¾Ê`PãëÕÍÑáþÿÂVPÑÁÃ:qwÕÍÑþÿÊQP! Ñ{æwëÁÉÃ#:w·oÊ„P¯2w&ÉÅÍÁþÊþ!ÿÿÈoþ §PÅ ÍÁ. &ÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u*£|µÊQ*¡ëÍ*sëÕÍÑþÁÊÅþÂQ! ~þ€ÂQ6*ùÍKÍžÃ+è1žè1œÃ'Ã+ÃFÃŽÃrÃ7 :²2É!³q:³þ ÊŠ *³MÍ8 ÃÖá^#V#å*~#foÉá^#å*~#foÉá^#V#å*nÉá^#å*nÉá^#V#åë ~#foÉá^#åë& ~#foÉ!È+É!È#É!Ø+É!Ø#É!ð+É!ø+ÉÈÉÈÉØÉØÉðÉøÉ}»À|ºÉëz¼À{½Éë|ºÀ}»Éë|ªòìz·ð7Éë|ªòó|·ð7ÉzõÍZëÍZëÍ)ñ·ð|/g}/o#É|µÈÕå͉ÑÍk|/g}/o#Ñɯ2qÍZëÍZÍk:qÐ|/g}/o#É|·ð/g}/o#:q<2qÉÅÍqÁÉDM!x±ÈxGyOÒƒë)ëÃv|µÈÅÍ”`iÁÉ|·ú )ÖëxõÍÝÚ·Õz/W{/_ѯzW{_ñ=ÈõyOxGæ¯2qÍZëÍZë͉ÃM|ºØÀ}»Éëȯ|g}oÃæëÈ)Ãô|/g}/o#Éz/W{/_É!9~#foÉ!à !à ! à ! à !à !à Ÿ!9Å~#ÂAÁÉá"s!`å*"³!è"µ!ÜY"—>Û2­>Ó2°>É2¯2²!Ì"�!"“!@"‘!"• ÍæÊžÍ!€ßF#x·Â±Ã~#±¯!ßb¯2r~#þ ÊÈ·Êþ"ÂÞ2rÃß+}|~#·ÊÅG:r·xÁÊþ"Âæ¯2r+w#þ Âæ+6#ÃÈÕ!×6#¯2w2x*sé!ÿÿÉ>õÍrÚ<o&åÍFáñ=þÂ-ÃÍ`Í ÍrÚ'~æÊhåÍÅÍëÍÁá6þÿ!À+ÉÍ`WÖØþ?ØÕ_!×~æ7ÑzÈ?ÉÍ`ÅÍ åþ:>ªÍÖ@w#ÍÆþ.¶ÍÆ66ÑÁÉÅþ*>?ÊéÍñÚçw#ÂÏÁÍñØÃÞ> w#ÂçÁÉÍþ.7Èþ:7Èþ7Èþ!ÉþaØþ{ÐÖ Éþ Ê þ Ê ÉÅÍ`·OÂE×!·æyÂ6ÁÉÕ$Ñ Â-7ÁÉÍrÚBÖo&))T])))ë!·yÁÉÕÅõå€ÍáñÁÑÉÕÍø3͵(>ÑÍø3>@26;Ãq å*-;";áÂ.Í,4:+;æþö2+;É";|·Â²!}·Â£!9/Í,4Éõñõ·Ê¹!¦!ñ90Í,4Éñ>�GÈ>)Íø3þ!#ÍÝ'̓&ñõÍÎ)ÍÞÍ*͵(Í1þÊÊð!ÍÂ&,Í2ÑÉ#ÍÎ%Âý!`/Í,4ñÍ^(õͤ&ÍÂ&ÍÎ)ñÍÞÍ*͵(Íy(É~þùÄÃ7#^#V#Í+"Í1ÉÅåë))){S~õæþÀ+Ì2ñæ‡G~õæ`°20;ñæ25;#~æ2/;~æ?>Êk"=2);#^#V#Õ^#V#ë"1;ë^#Vë"3;Ñ:5;·Ê•"*;ë!:0;æ@ʦ""3;áÁÉå*G;#w"G;áÉå*G;~þÿÊÂ"·ÂÍ"++Í2Í1:áÉ+"G;áÉå*G;+"G;áÉå! >"G;6ÿ!+>"I;áÉå*G;~·áÈþÿÉåõ*/;ë*I;s#r#ë*1;ës#r#ë*3;ës#r#ë*+;ës#r#ë*-;ës#r#:5;w#"I;Íw#ñáÉåõ*:;ë*I;s#r#ë*<;ës#r#ë*>;ës#r#ë*6;ës#r#ë*8;ës#r#:@;w#"I;Íw#ñáÉ|þ?ØÂ‚#}þÃ×Ã'Ãí Ã8'ÃJ'Ã'Ã’'î'ÃÇ.ÃÊ.Ã/à Ã+/Ã(Ã:/ÃâÃÃx(à Å!Ãû9ùDM*2js#rÕ*0jÑs#rÕ*.jÑs#rÕ*,jÑs#rÕ**jÑs#rÕ*(jÑs#rÕ*&jÑs#rÕ*$jÑs#rÕ*"jÑs#rÕ* jÑs#rÕ*jÑs#rÕ*jÑs#r*es#rÕ*eÑs#rÕ*eÑs#r!›ÃÓPanacea linker version 1.0 copyright (c) March 30, 1981åÍ¡Ñ!ÞÃï By Mike BernsonåÍ¡Ñ̓A+|µÂ$ ! à Missing file name to linkåͤÑ!9 6#6̓9å̓AÑÍúÒõ !C ~#foå̓9)Ñ~#foåͧÑ(ÍÒ¡ !h à File name to long at åÍ¡Ñ!C ~#foå̓9)Ñ~#foåÍ¡ÑÃç !§ é .å!C ~#foå̓9)Ñ~#foåͪÑÑ|µÊ !C ~#foå̓9)Ñ~#foå!æ Ãè .å!C ~#foå̓9)Ñ~#foåͪÑÑ+Ñ6!C ~#foå̓9)Ñ~#foå! åÍ­ÑÑ!/ Ã4 .TXTå! åͰÑÑ`iå! åͳÑÑ#|µÂŠ !X Ãg Can not open åÍ¡Ñ! åÍ¡Ñ!9 s#rz³Ê‡ ͶÃç !$åÍM j$Íkå**^ÑåÍ�åͼÑå͹ÑÑÑ`iåÍ¿Ñ̓9+|µÂÐ Í�ë!8 s̓9ÍÒç Í�åÍÂÑ!9 ^#Vr+sÃ- !C ~#fo##~#foå! åÍ­ÑÑ! à .COMå! åͰÑÑ*ú`å! åÍÅÑÑ#|µÂd !B ÃS Can not create åÍ¡Ñ! åÍ¡ÑͶ!8 në`is#6!å!!åÍ�åͼÑåÍÈÑÑÑÍM j)å*¸iÑåÍMjëás#r!© ú Pass 1 startingåÍ¡Ñ*j^#Vr+s`iåÍËÑÍMeå*eÑs#r!9 ¯w#w̓9åÍM.jÑÍúÒm ̓9)å*ðhÑ~#foåÍMeëás#r̓9)å*ðhÑ~#fo ~#foë!; s#r*eå~#foå̓;Ñëás#r!9 ^#Vr+sÃí *$j¯w#wÍM&j#å*"jÑs#r*j^#Vr+s!ž ï Pass 2 startingåÍ¡Ñ*"j^#Vr+sz³ÊÒ `iåÍÎÑô *ú`åÍÑÑÍÔͶë!=9ùëÁÉÃö Ã'ÃÇ.Å!9ùDM! à åÍð ÑÍ�åÍð ÑÍó ÁÉÃ. ë#Ãí Ãù)ÃSÃ%Ãû*Å!úÿ9ùDM!åÍ� åÍ ÑÑ|µÊl !O Ãg Not able to rewind fileåÍ Ñ* j^#Vr+së)å*¸iÑåÍMjëás#rÍ� åÍ" Ñ$ÍåÊÎ !ª ÃÉ Not a valid formated text fileåÍ ÑÍ� åÍ" ÑEÍåÊã Ã9Í� åÍ" Ñë! sÃ!û ÃNot a valid formated esd cardåÍ Ñ! ~5o}·Ê6Í� åÍ% ÑÃÃ’ Í� åÍ( Ñ++åÍ� åÍ ÑÑÍ� åÍ" Ñë`isÃ{!eÃvMissing end cardåÍ Ñ`in}þ$Ê»!ŠöNot a valid formated text file. Missing '$'åÍ ÑÍ� åÍ" Ñë`isÃ!ÑÃþEnd of card found when looking for card typeåÍ Ñ`in}þQÂÃÙ`in}þRÊB`in}þTÊB!'Ã=Not a valid type cardåÍ ÑÍ� åÍ+ Ñë! s#rÍ� åÍ" Ñë! sÃ�!kÊEnd of file in TXT or RLD cardåÍ Ñ! å~#foåÍM j+)å*¸iÑ~#foÑëás#r`in}þTÂÍ�Íkå*Ñ##~#fo|µÂÍ�Íkå*Ñ##åÍ� åÍ( Ñûÿëás#r`in}þRÂ[Í�Íkå*Ñ~#fo|µÂ[Í�Íkå*ÑåÍ� åÍ( Ñûÿëás#r`in}þRÂz! n&Í?ë! sÇ! ån&##ëásÍ� åÍ( Ñå! nѯgåÍ� åÍ ÑÑ|µÊÖ!°ÃÑEnd of file seeking to next cardåÍ ÑÃOë!9ùëÁÉÃëÃ+ÃÅ!þÿ9ùDM`i¯w#wÍ�åÍMºiÑÍúÒIÍ�Íkå*Ñn}·Â=Í�Íkå*ÑåÍåÑ`i^#Vr+sÃù*"j^#Vr+s*"j^#Vr+sz³ÊvÍ�åÍèÑÃWë!9ùëÁÉàÃí Ãr%Ãù)Ãû*Ãäë#Ã%ôÃ'ñÅ!õÿ9ùDMÍM"j|µÂµÃJÍM$j)å*eÑ~#foë! s#r! ~#fo~#foåÍMeÑÍåÊ"ÍMj++|µÂ"!ÃLoad address error for csectåÍ‚Ñ! ~#fo~#fo|µÊP! ~#fo~#foå! ~#fo#n&$Íkå**^ÑåÍ�åÍ…ÑÑÑ! 6! n}·ÊPÍ�å͈Ñ$Íå¤Í�å͈ÑRÍåÊÉ!ªÃÄError seeking to RLD cardåÍ‚ÑÍ�åÍ‹ÑÍ�å͈Ñë`is#r`i^#Vr+sz³Ê ! ~#fo#n&åÍ�åÍŽÑÑÃáÍ�å͈Ñ$ÍåÂ.Í�å͈ÑRÍåÊ7! 6ÃPÍ�åÍ”Ñ++åÍ�åÍ‘ÑÑÃvÍMjÍùÒ‰*,js#rÕ**jÑs#rÕ*(jÑs#rÍ—ÃJ! ~#fo##~#foå! ~#fo#n&$Íkå**^ÑåÍ�åÍ…ÑÑÑ! ¯w#w! ~#fo##~#fo|µÂ-!áÃé Csect åÍšÑ! ~#foåÍšÑ!Ã% does not have any text recordsåÍšÑÃÍ�åÍ”Ñ##åÍ�åÍ‘ÑÑÍ�åÍ‹Ñë! s#rÍ�åÍ”Ñ++++åÍ�åÍ‘ÑÑÍ�å͈Ñ$ÍåÂ�Í�å͈ÑTÍåʶ!–ñError seeeking to TXT cardåÍ‚ÑÍ�åÍ‹ÑåÍ�ÑÍåÊÎÃ! åÍ�åÍ�ÑÑÍ�å͈Ñ$ÍåÂÍ�å͈ÑTÍåÊÃÍ�åÍ”Ñ++åÍ�åÍ‘ÑÑÃlÍM(j|µÊG!-ÃBRLD que is not emptyåÍ‚ÑÍ—ë! 9ùëÁÉÃ_Ã:/Ãù)Ãû*Å!üÿ9ùDM*j^#Vr+sëÍkå*Ñë`is#r!å! å`i~#foåÍVÑÑÑ! ¯w#wÍ� ÍùÒ`i~#foåÍ�ÑåÍ�åÍYÑëás!€|¢g}£o|µÊ `i~#foåÍ�Ñån&|¢g}£oëásÃ! ^#Vr+sî`i~#foåÍ�åÍYÑëás`i~#fo åÍ�åÍ\Ñëás#r`i~#fo åÍ�åÍ\Ñëás#r`i~#fo#åÍM j+ëás`i~#fo##å`i~#foå`i~#fos#rás#rás#rÍ�èë!9ùëÁÉÃÃÃù)Ãû*Ãí ÃV+ÃtÅ!ýÿ9ùDMÍ�åÍ´Ñë`is#rÍ�åÍ·Ñ`i^#Vr+sz³ÊkÍ�åÍ´Ñë! sÃ2! Ã-End of file while reading TXT cardåͺÑ*ú`åÍ� ^#Vr+sÕ! n&åÍÀÑÑåͽÑÑ*e^#Vr+sÃãë!9ùëÁÉÅ!øÿ9ùDMÍM(j|µÂ�! n&Ã"ÍM*jÍkå*fTÑë! s#r! ~#fo#~#foÍkå*Ñë! s#r! ~#fon}þÊ! ~#fo~#foå! ~#fo ~#foÑÍúë`is#rÃ! ~#fo ~#foë! s#rÍ�Íkå*Ñ~#foåÍ�Íkå*Ñ ~#foÑÍúå! ~#fo ~#foÑë`is#r! ~#fon&|¢g}£o>½ÂŸ>¼Êº>½Â«>¼Ê>½Â·>¼ÊaÃ! ~#fo###~#foåÍ�ÑÍå ! ånåÍ�ÿ|¢g}£oÑëás**j^#Vr+s*(j^#Vr+sÃ! ~#fo###~#foåÍ�ÑÍåÂ^! ånåÍ�ÍåÑëás**j^#Vr+s*(j^#Vr+sÃ! ~#fo###~#foåÍ�ÑÍå©! nå*4jÑs#6! ånåÍ�ÿ|¢g}£oÑëás! ~#fo###~#fo#åÍ�ÑÍåÂ! n&Í?åÍM4jÑë! s#rÍ�åÍ�ÑÍåë! s**j^#Vr+s*(j^#Vr+sÃ! n&Ã"ë!9ùëÁÉÃ1Ãí Å!þÿ9ùDM*"j^#Vr+s!òÍúÚn!VÃiLink que over flowåÍ.ÑÍM&j)å*eÑåÍ�ëás#r! ~#foåÍMeëás#r! ~#fo ~#foë`is#r*eå~#foåÍ�Ñëás#r*&j^#Vr+së!9ùëÁÉÃùÃí Ãù)Ãû*ÃåÃ+øÅ!üÿ9ùDM*(j^#Vr+s!òÍúÚ6!Ã1RLD stack overflowåÍçÑÍM,jÍkå*fTÑë`is#r`i~#foåÍ�åÍêÑëás`i~#fo###åÍ�åÍíÑëás#r`i~#fo#åÍ�åÍíÑåÍ� )å*¸iÑ~#foÑëás#r! s#r`i~#fo#~#foÍkå*Ñn}þÂþ`i~#fo#å`i~#fo#~#foÍkå*ÑåÍðÑëás#r`i~#fo#~#foÍkå*Ñn}þÂ…`i~#fo#~#foÍkå*Ñ ~#foë! s#rÍ�Íkå*Ñ~#fo|µÂ…Í�Íkå*ÑåÍóÑ`i~#fo#~#foÍkå*Ñn}·Âî`i~#fo#~#foÍkå*Ñ~#fo|µÂî`i~#fo#~#foÍkå*ÑåÍóÑÍ�Íkå*Ñn}þÂ[Í�Íkå*Ñå`i~#fo#~#foÍkå*Ñ~#foëás#r`i~#fo#åÍ�ëás#r`i~#fo#~#foÍkå*Ñn}þÂ�`i~#fo#~#foÍkå*ÑåÍöÑ*,j^#Vr+së!9ùëÁÉÅ*$j^#Vr+s!ôÍúÚÒ!Ã×ÍM$jå*$jÑs#rÁÉÃôÃ{,Ã'Ã’'Ãí Å!šÿ9ùDM`i¯w#wÍ�åÍMjÑÍÚq!j ~#foåÍ�Íkå*ÑåÍèÑÑ|µÂeÍ�Íkå*Ñn}þÊeÍ�ï`i^#Vr+sÃ!j ~#foå! åÍëÑÑ!ŽÛ not define.å! åÍîÑÑ! åÍñÑë!f9ùëÁÉÃÁÃ{,Ãí Å!þÿ9ùDM! ~#fo~#fo|µÊáà `i¯w#wÍ�åÍM.jÑÍúÒ}! ~#foåÍ�)å*ðhÑ~#foåÍ»ÑÑ|µÂqÍMj+|µÂ5à ÍMj++|µÂq! ~#foåÍ�)å*ðhÑ~#fo~#foëás#rà `i^#Vr+sÃçÍMj++|µÂ®!�éDsect not found in pass 1å;ÑÍM.jdÍùÚÞ!ÂÃÙToo many dsect to linkå;Ñ*2j^#Vr+së)å*ðhÑåÍ�ëás#r*.j^#Vr+së!9ùëÁÉÃ& Ã'ÃÈ!ÃÙ"Å!þÿ9ùDM!4 ÃP Control section(s) loadedåÍ ÑÍM&jå*eåÍ ÑÑ!n  Data section usedåÍ ÑÍM2jå*ðhåÍ ÑÑ!  ý Starting address of code åÍ ÑÍMeåÍ# Ñ!Ò Ãã ending address åÍ ÑÍMe+åÍ# Ñ!ù Ã! Data section starts at åÍ ÑÍMeåÍ# Ñ!'!Ã8! ending address åÍ ÑÍMe+åÍ# Ñ!N!Ã_! Code lenght is åÍ ÑÍMeåÍMeÑÍúåÍ# Ñ!!Ø! Data section lenght is åÍ ÑÍMeåÍMeÑÍúåÍ# Ñ!¸!ú! åÍ Ñë!9ùëÁÉÃÝ!Ã#à -Ã'ÃÙ"Ã8'ÃW/Å!üÿ9ùDM*Ì!å!åÍ� åÍ�åÍÎ!ÑÑÑÑ`i¯w#wÍ�åÍ� ÑÍìÒÐ"Í�ëÍ)|µÂ1"!*"Ã," åÍÑ!Ñ! ~#foåÍ�)Ñ~#fo~#foåÍÔ!Ñ!X"ÃZ" åÍÑ!Ñ! ~#foåÍ�)Ñ~#foåÍÑ!Ñ! ~#foåÍ�)Ñ~#foåÍ×!Ñë! s#rÍ�ÍëÒÄ"! åÍÚ!Ñ! ^#Vr+sá"`i^#Vr+sÃ"ë!9ùëÁÉÃß"Ã2#Å!9ùDMÍ�ÍååÍÜ"ÑÍ�åÍÜ"ÑÁÉÃ#Ã{,Å!9ùDMÍ�~#foåÍ�~#foåÍ#ÑÑÁÉÁÉÃ8#ÃZ#Å!9ùDMÍ�ÍååÍ5#ÑÍ�åÍ5#ÑÁÉÃ`#Ã�/Å!9ùDMÍ�|¢g}£o0ë! s#rÍ�9ÍòÒ #! å~#foëás#rÍ�åÍ]#ÑÁÉô#Ã%Ã)&Å!üÿ9ùDMÍ�åÍ®#Ñë`is#rÍ�åÍ� ÑÍåÂá#!Ã%Í�åÍ� ÑÍìÒt$Í� åÍ�ÑÍúë! s#rÍ�å! ~#fo##~#foÑÍóÚ_$! ~#fo##å~#foåÍ�ÑÍúëás#r! ~#foå~#foåÍ�Ñëás#rÃq$Í� åÍ�åͱ#ÑÑÃ%Ã%Í�åÍ� ÑÍúë! s#rÍ�å! ~#fo~#foå! ~#foÑÍúÑÍóÚö$! ~#fo##å~#foåÍ�Ñëás#r! ~#foå~#foåÍ�ÑÍúëás#rÃ%Í� åÍ�åͱ#ÑÑÃ%!Ã%ë!9ùëÁÉÃ%ç/Å!þÿ9ùDM! ~#fo~#foåÍ%Ñ€Í?ë`is#r`iå~#foå! ~#fo##~#foÑÍúëás#rÍ�Ãi%ë!9ùëÁÉÃ�%Ã/ÃÊ.Ã)&ë#Å!üÿ9ùDM! ~#fo~#foåÍu%Ñë`is#r! ¯w#wÍ� ÍùÒ&`i~#foåÍ�Ñnå! ~#foåÍ�ÑnÑ}»Ê&!$åÍ�åÍ� åÍx%ÑÑÑÍ� åÍ�åÍ{%ÑÑà &! ^#Vr+sè%Í� åÍ�åÍ~%ÑÑà &ë!9ùëÁÉÃ2&ÃÍ/Ã80Å!þÿ9ùDM!åÍ�€ë͉å! ~#fo~#foåÍ,&ÑÑÑ#|µÂi&!Ãý&! ~#fo##å!å! ~#foå! ~#fo~#foåÍ/&ÑÑÑ€Í?ëás#rÍ�€ëÍ)ë`is#r! ~#foå! ~#foåÍ�Ñëás#r! ~#fo##å~#foåÍ�ÑÍúëás#r!Ãý&ë!9ùëÁÉà 'ÃW/Å!9ùDMÍ�n}·Ê6'! ^#Vr+sën&åÍ 'ÑÃ'ÁÉÍ7*Ÿë!·È#ÃB'Í7Å*Ÿë*¡·Êu'¾ÂX'Õ#~·Êz'¾Êe'ÑÃU'Á!É`iÑÁÉÍ7*Ÿë*¡~·È#É'Í7*Ÿë*¡·Ê¥'Ü'~·È#Ã¥'ô'î0Å!9ùDM! ~#foå!åÍ�åͱ'ÑÑëás#rz·òâ'!ÿÿÁÉ! ~#fo##¯w#w! ~#fo~#foÁÉÁÉà (Ãò0Ã1Å!9ùDMÍ�åÍ(Ñ! ~#foåÍ�åÍ(Ñëás#rz·ò;(!ÿÿÁÉ! ~#foå! ~#foëás#r! ~#fo##6#6! ~#fo~#foÁÉÁÉÄ(Ã81ÃÊ.ÃÍ/Å!þÿ9ùDMÍ�ÍëÒŸ(!Ãð)! ~#fo##~#foÍå¼(!Ãð)! ~#fo##~#fo€ëÍËÍúë`is#rÍ�å! ~#foå! ~#fo~#foåÍ{(ÑÑÑåÍ�ÑÍåÊ)!ÿÿÃð)Í�+€Í?ë`is#r! ~#fo##~#fo|µÊ½)!€å! ~#foå! ~#foåÍ�ÑåÍ~(ÑÑÑ! ~#fo##å~#foåÍ�Ñëás#r! ~#foå~#foåÍ�ÑÍúëás#r!å!ÿÿå! ~#fo~#foåÍ�(ÑÑÑÃð)! ~#fo##6#6! ~#foå! ~#foëás#r!Ãð)ë!9ùëÁÉÃ*à1ÃÕ1Ã80Å!þÿ9ùDMÍ�|µÂ*Íü)Ãò*Í�+++|µÂ3*!åÍÿ)ÑÃò*! ~#fo##^#Vr+sz³Êe*! ~#fo^#Vr+sën&Ãò*!å! ~#foå! ~#fo~#foåÍ*ÑÑÑë`is#r!ÍÚž*!ÿÿÃò*! ~#fo##åÍ�€Í?+ëás#r! ~#foå! ~#foëás#r! ~#fo^#Vr+sën&Ãò*ë!9ùëÁÉÃ+Ãù)Å!üÿ9ùDMÍ�åÍþ*Ñë`is#rz·úG+Í�åÍþ*Ñë! s#rz·úG+Í�Í?åÍ�ÑÃM+!ÿÿÃM+ë!9ùëÁÉÃb+ÃW/ÃÕ1Ã81Å!9ùDMÍ�+|µÂ‚+! n&åÍY+ÑÁÉÍ�++|µÂ +! n&å!åÍ\+ÑÑÁÉÍ�+++|µÂ¿+! n&å!åÍ\+ÑÑÁÉ! ~#fo##^#Vr+sz³Êø+! ~#fo^#Vr+sÕ! nëásë&ÁÉ!å! ~#foå! ~#fo~#foåÍ_+ÑÑÑÍåÊ*,!ÿÿÁÉ! ~#fo##6ÿ#6! ~#foå! ~#foëás#r! ~#fo^#Vr+sÕ! nëásë&ÁÉÁÉÅ!þÿ9ùDM`i¯w#w! ~#foåÍ�Ñnå! ~#foåÍ�ÑnÑ}»ÂÕ,! ~#foå`i^#Vr+sëÑn}·ÂÒ,!Ã-É,! ~#foåÍ�Ñnå! ~#foåÍ�ÑnѯgWÍúÃ-ë!9ùëÁÉÃ-Ãq.Å!òÿ9ùDMÍ�åÍ�ÑÍ?ë! s#rÍ�ëÍËë! s#rÍ�ÍÒh.Í�åÍ�ÑÍ?ë`is#rÍ�åÍ�Ñë! s#rÍ�åÍ�Ñë! s#rÍ� ë! s#rÍ�åÍ� ÑÍÚP.Í�åÍ� ÑÍúë! s#rÍ�|·ú8.Í�åÍ�åÍ�ÑåÍ�åÍ�Ñå!ë-å!9~#foéÑÑÑÍÚú-Ã8.Í�åÍ�ÑåÍ�åÍ�ÑåÍ�åÍ -ÑÑÑ! å~#foåÍ�ÑÍúëás#rø-! å~#foåÍ�Ñëás#rÃ’-! å~#foëÍËëás#rÃ@-ë!9ùëÁÉÅ!ÿÿ9ùDM! ^#Vr+sz³Ê¾.Í�në`is! ^#Vr+sÕÍ� nëás! ^#Vr+sÕ`inëásÃy.ë!9ùëÁÉà Í7*£|µÈÅDM*¡ë*ŸÍ/Úù.><êí.í°ÁÉ~# x±Âí.ÁÉ ë ë><ê /í¸ÁÉ~+ x±Â /ÁÉ|ºÀ}»ÉÍ Í)ÚÍ Í,ÉÍ Í)Ú6!ÉÍ7Å*¡ë*Ÿ:£Oz³ÂR/ÁÉq#ÃJ/Í Åþ Âq/ Í ÍÃu/_Í ÍæÂ�/ÁÉÍþÊÁÉÍ Å_þ ¢/ Í ÍÁÉÍ Í,ÚÅ FN¯xg>G�oy òË/$ÁÉÃÓ/ç/Í7:ŸÍ,ÚÅå*ŸåÍÐ/Ñë:£*¡·Êõ/}|æ2qã å¾Ê&0ãëÕÍÑáþÿÂ0ÑÁÃ:qwÕÍÑþÿÊ0! Ñ{æwëÁÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u*£|µÊŽ0*¡ëÍ*sëÕÍÑþÁÊÅþ“0! ~þ€ÂŽ06*uÁÉ*£+"£*¡€"¡*u#"uÃZ0Í7¯Í,Ú2që*ŸëÅÍ&ÍþÿÁÊ:qÍ):¡·Êê0=Êê0=Âr:qo&ÉÍ Åë!\Í&Í!ÁÉÃ1Ãò0î0Í7*ŸÅåÍ 1Ñ\ÍþÿÁÊ!å*ŸåÍ 1ÑÑÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u€Í*£|µ*uÊž1*¡€€~#Âu1"¡*sëÍ·*už1#"u*£+"£Ãb1ÁÉ:w·oʯ1¯2w&ÉÅÍÁþÊþ!ÿÿÈoþ ÂÒ1Å ÍÁ. &ÉÍ7Å:ŸO*¡ëÍo`ÁÉ�ÑåÍ�åÍ�ÑåÍ�åÍ -ÑÑÑ! å~#foåÍ�ÑÍúëás#rø-! å~#foåÍ�Ñëás#rÃ’-! å~#foëÍËëás#rÃ@-ë!9ùëÁÉÅ!ÿÿ9ùDM! ^#Vr+sz³Ê¾.Í�në`is! ^#Vr+sÕÍ� nëás! ^#Vr+sÕ`inëásÃy.ë!9ùëÁÉà Í7*£|µÈÅDM*¡ë*ŸÍ/Úù.><êí.í°ÁÉ~# x±Âí.ÁÉ ë ë><ê /í¸ÁÉ~+ x±Â /ÁÉ|ºÀ}»ÉÍ Í)ÚÍ Í,ÉÍ Í)Ú6!ÉÍ7Å*¡ë*Ÿ:£Oz³ÂR/ÁÉq#ÃJ/Í Åþ Âq/ Í ÍÃu/_Í ÍæÂ�/ÁÉÍþÊÁÉÍ Å_þ ¢/ Í ÍÁÉÍ Í,ÚÅ FN¯xg>G�oy òË/$ÁÉÃÓ/ç/Í7:ŸÍ,ÚÅå*ŸåÍÐ/Ñë:£*¡·Êõ/}|æ2qã å¾Ê&0ãëÕÍÑáþÿÂ0ÑÁÃ:qwÕÍÑþÿÊ0! Ñ{æwëÁÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u*£|µÊŽ0*¡ëÍ*sëÕÍÑþÁÊÅþ“0! ~þ€ÂŽ06*uÁÉ*£+"£*¡€"¡*u#"uÃZ0Í7¯Í,Ú2që*ŸëÅÍ&ÍþÿÁÊ:qÍ):¡·Êê0=Êê0=Âr:qo&ÉÍ Åë!\Í&Í/*********************************************************************/ /* */ /* This C compiler is copied from Dr. Dobb's Journal of Computer */ /* Calisthenics & Orthodontia (issue number 45) */ /* -- Distribution and use is unrestricted for non-commercial use. */ /* */ /* RAF 8-8-80 */ /* */ /*********************************************************************/ /************************************************/ /* */ /* small-c compiler */ /* rev. 1.1 */ /* by Ron Cain */ /* */ /************************************************/  /* Define system dependent parameters */ /* Stand-alone definitions */ #define BUFSIZ 1030 #define ERROR -1 #define FALSE 0 #define TRUE 1 #define eol 13 #define CR 13 #define LF 10 #define BS 8 #define TB 9 #define FF 12 /* Define symbol table parameters */ #define lvalsize 3 #define SWITCH_MAX 254 #define symsiz 15 #define symtbsz 6000 #define numglbs 300 #define startglb symtab #define endglb startglb+numglbs*symsiz #define startloc endglb+symsiz #define endloc symtab+symtbsz-symsiz /* Define symbol table entry format */ #define name 0 #define ident 9 #define type 10 #define indcnt 11 #define storage 12 #define offset 13 #define offset1 14 /* System wide name size (for symbols) */ #define namesize 9 #define namemax 8 /* Define possible entries for "ident" */ #define variable 1 /* a normal varble */ #define array 2 /* array of varbles */ #define pointer 3 /* pointer to a varble */ #define function 4 /* entry is a function */ /* Define possible entries for "type" */ #define cchar 1 #define cint 2 /* Lenght of possible entries for "type" */ #define lchar 1 #define lint 2 #define lpoint 2 /* Define possible entries for "storage" */ #define statik 1 #define stkloc 2 #define stkarg 3 /* values returned by heirxx */ #define LOADED 0 /* value on top of stack */ #define ADDRESS 1 /* address of lvalue on stack */ #define NOTLOADED 2 /* address in lvalue in array not loaded */ #define CONSTANT 3 /* constant in lval */ /* Define the "while" statement queue */ #define wqtabsz 100 #define wqsiz 6 #define wqmax wq+wqtabsz-wqsiz /* Define entry offsets in while queue */ #define wqsym 0 #define wqsp 1 #define wqloop 2 #define wqlab 3 #define wqend 4 #define wqbody 5 /* Define the literal pool */ #define litabsz 2000 #define litmax litabsz-1 /*  Define the input line */ #define linesize 80 #define linemax linesize-1 #define mpmax linemax /* Define the macro (define) pool */ #define macqsize 1000 #define macmax macqsize-1 /* Define statement types (tokens) */ #define stif 1 #define stwhile 2 #define stfor 3 #define stswitch 4 #define streturn 5 #define stbreak 6 #define stcont 7 #define stasm 8 #define stexp 9 /* name of some function called by code gen step */ #define EQ "@comp" #define GE "@comp+25h" #define GT "@comp+12h" #define LE "@comp+2fh" #define LT "@comp+1ch" #define NE "@comp+19h" #define UGE "@ucomp+13h" #define UGT "@ucomp" #define ULE "@ucomp+1ch" #define ULT "@ucomp+0ah" #define PREINC "@incdec" #define PREDEC "@incdec+08h" #define POSTINC "@incdec+10h" #define POSTDEC "@indec+1ah" /* Now reserve some storage words */ char symtab[symtbsz]; /* symbol table */ char *glbptr,*locptr;  /* ptrs to next entries */ int wq[wqtabsz]; /* while queue */ int *wqptr; /* ptr to next entry */ char litq[litabsz]; /* literal pool */ int litptr; /* ptr to next entry */ char macq[macqsize]; /* macro string buffer */ int macptr; /* and its index */ char line[linesize]; /* parsing buffer */ char mline[linesize]; /* temp macro buffer */ int lptr,mptr; /* ptrs into each */ /* Misc storage */ int nxtlab, /* next avail label # */ litlab, /* label # assigned to literal pool */ sp, /* compiler relative stk ptr */ argstk, /* function arg sp */ ncmp, /* # open compound statements */ errcnt, /* # errors in compilation */ eof, /* set non-zero on final input eof */ input, /* iob # for input file */ output, /* iob # for output file (if any) */ input2, /* iob # for "include" title */ line1, /* current line number in main file */ line2, /* current line in include file */ ctext, /* non-zero to intermix c-source */ cmode, /* non-zero while parsing c-code */ /* zero when passing assembly code */ cif, /* state of preprocess if statement */ lastst; /* last executed statment type */ char *cptr; /* work ptr to any char buffer */ int *iptr; /* work ptr to any int buffer */ /* file io buffers */ char finp[BUFSIZ]; /* input file buffer */ char finp2[BUFSIZ]; /* input 2 file buffer */ char fout[BUFSIZ]; /* ouput file buffer */ n&åÍ 3Ñ! ^#Vr+sÃ^3*žÍùÍ©ÒÄ3*žÍ?ÍúëÍËÃÇ3!ë! s#r! ^#Vr+sz³Êð3!æ3Ãè3 åÍ3ÑÃÏ3Ã4!ù3Ãý3 åÍ eof, /* set non-zero on final input eof */ input, /* iob # for input file */ outpucc1 c1.c -e 8000 cc1 c2.c -e 8000 cc1 c3.c -e 8000 cc1 c4.c -e 8000 cc1 c5.c -e 8000 cc1 c6.c -e 8000 cc1 c7.c -e 8000 cc1 c8.c -e 8000 cc1 c9.c -e 8000 clink c1 c2 c3 c4 c5 c6 c7 c8 c9 c1 c2 c3 c4 c5 c6 c7 c8 c9 -r e00 -s  *0005*cc1 c6.c ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååxsub c1 y $1.asm $1.c assemble $1 link $1 stdlib runtime )ˆm�» –ASSEMBLECOM!34567LINK COMb89:;<=>?@ABCDC DEF/EFGHIJC SUBKCC $$$ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååclink c1 c2 c3 c4 c5 c6 c7 c8 c9.c c1 c2 c3 c4 c8 c9.c -s -r e00 )ˆm�» –ASSEMBLECOM!34567LINK COMb89:;<=>?@ABCDC DEF/EFGHIJC SUBKCC SUBLCL $$$ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååSTRLEÎSTRCPÙSTRCAÔ8STRPOÓ_€£Í» ͵ Ãû Í  Ãû Í– þ8Ê{ æÄ‚yæ0°Ãø Í2͵ Ãû Í– °GÍ» Í‹ °Ãø Í– °Í1Í» ͯ Ãû Í2ͯ Ãû Í– æ(Ä‚yæ°Ãø Í2͵ Ãû Í‹ °Ãø Í– °Ãø Í– æÄ‚yæ0°Ãø Í– °Ãø Í2ͯ Ãû Í1ÍôÍãÃÕ 'èd ! ^#V#å*Ü0}“o|šgÚ* à "Ü:Û·ÊD x=ÊD yþSTRLEÎSTRCPÙSTRCAÔ8STRPOÓ_€£Í» ͵ Ãû Í  Ãû Í– þ8Ê{ æÄ‚yæ0°Ãø Í2͵ Ãû Í– °GÍ» Í‹ °Ãø Í– °Í1Í» ͯ Ãû Í2ͯ Ãû Í– æ(Ä‚yæ°Ãø Í2͵ Ãû Í‹ °Ãø Í– °Ãø Í– æÄ‚yæ0°Ãø Í– °Ãø Í2ͯ Ãû Í1ÍôÍãÃÕ 'èd ! ^#V#å*Ü0}“o|šgÚ* à "Ü:Û·ÊD x=ÊD yþSTRLEÍ7*Ÿë!·È#à Í7*Ÿë*¡~·È#à Í7*Ÿë*¡·Êà ~·È#à 5Í7Å*Ÿë*¡·Ê+¾ÂÕ#~·Ê0¾ÊÑà Á!É`iÑÁÉ %)åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå$EBIOÓTOUPPEÒ TOLOWWEÒ ISALPHÁ ISUPPEÒ!ISLOWWEÒ4ISDIGIÔGISSPACÅZSTRLEÎh STRCPÙtSTRCAÔˆSTRPOÓ¥5SETMEÍÚMOVMEÍïEOUTÐ4INÐB PUTÓLPUTCÈ^GETCÈt!GETÓ•#KBSTAÔ¸OPEÎË"$E CREATÅí)CLOSÅUNLINË+1REAÄ\OWRITÅ«OSETFCÂú¿RSVST˹STORINIÔ½@FREE_LISÔÓARGLOAÄÛ$T }þaØþ{Ðæ_oÉ$T }þAØþ[Ðæ¿oÉ$T åÍ!ëáÍ4É$R$T!}þAÚ0þ[Ò0!É!É$R $T4}þAÚCþ[ÒC!É!É$R $TG}þ0ÚVþ:ÒV!É!É$R $TZ}!þ Èþ È!É$T hë!·È#Ãl$R $T tÁÑáåÕÅåw·Ê†#Ã{áÉ$R   $T ˆÁÑáåÕÅå~·Ê˜#Ã�w·Ê£#ØáÉ$R     $T 5¥ÍÛÅáë·Ê־ʼîåÕ#~·ÊѾʾÑáîi`ÁÁÉ!É$R     # * $T ÚÁá}ÁÑ!9ùox±È} Ãå$R  $T 9ïÍÛÅÕåÁáÑx±ÈÍ.Ú><ê í°É~# x±Â É ë ë><ê#í¸É~+ $T (x±Â#É|ºÀ}»É$R    # / < $T4ÁáÑÕåÅ{2@}ÓÉ$R$T B}2GÛ&oÉ$R$TLå~·Ê\åoÍ^á#ÃMáÉ$R $T^}þ Âm Í. ]ÍÉ$R$T!tÍþ ˆ ÅÍ^! Éþ‘!ÿÿÉo&É$R$T#•åå6ú ëÍÑbkFw#Â¥6 ÍáÉ$R$T¸ÅÅÍÁÁ}·!È!É$R$T"ËÁáÑÕåÅÕåÍúÑÑ,ÊéÍ<Êé!É!ÿÿÉ$R $T)íÁáÑÕåÅÕåÍúÑÑ,ÊÕÍÑÍ<Ê!É!ÿÿÉ$R $TÁÑÕÅÍ<Ê'!É!ÿÿÉ$R $T1+ÁÑÕÅ!Üÿ9ù$ åÕÍúÑÑ,ÊRÍ<ÊRÃUÿÿ!$9ùëÉ$R%$T9\!9~^#¶VÊ—r+s##^#åVÍá#å^#VÍá·Â�+V+^ë€ ës#rÃ$T”\!à!ÿÿå€ÍáÉ$R )9?$T9«!9~^#¶VÊær+s##^#åVÍá#å^#VÍá·Âì+V+^ë€ ës#rÃ$Tã«!Ãï!ÿÿå€ÍáÉ$R )9?$T9úÁáÑÕåÅ+#~·Ê[þ Êå~·Ê#à +~þ Ê#6á#~+þ:Â4~Í_Ö@##Ã5$T91¯ÍhÂ[þ.ÂE#ÍhÂ[>ÂQ!É!ÿÿÉþaØþzÐæ_É~þ*>$T9k?ÊŠ~ÍšÚ�#ÂhÃ�·Êˆþ.À> Š~·Èþ.È#Ã�Í_þ?ʶþ$Ê$T¤¶þ0Øþ:Ú¶þAØþ[?É7?É$R !-18@CHNQ[tx{‚…‰”ž¡¦«³$T¹"ÙÉ$R$T½!Ó"Ó"×!2Õ!¸ "ÙÉ$R $TÛ!9N#F#^#V#~#foÉ$Qå6ú ëÍÑbkFw#Â¥6 ÍáÉ$R$T¸ÅÅÍÁÁ}·!È!É$R$T"ËÁáÑÕåÅÕåÍúÑÑ,ÊéÍ<Êé!É!ÿÿÉ$R $T)íÁáÑÕåÅÕåÍúÑÑ,ÊÕÍÑÍ<Ê!É!ÿÿÉ$R $TÁÑÕÅÍ<Ê'!É!ÿÿÉ$R $T1+ÁÑÕÅ!Üÿ9ù$ åÕÍúÑÑ,ÊRÍ<ÊRÃUÿÿ!$9ùëÉ$R%$T9\!9~^#¶VÊ—r+s##^#åVÍá#å^#VÍá·Â�+V+^ë€ ës#rÃ$T”\!à!ÿÿå€ÍáÉ$R )9?$T9«!9~^#¶VÊær+s##^#åVÍá#å^#VÍá·Âì+V+^ë€ ës#rÃ$Tã«!Ãï!ÿÿå€ÍáÉ$R )9?$T9úÁáÑÕåÅ+#~·Ê[þ Êå~·Ê#à +~þ Ê#6á#~+þ:Â4~Í_Ö@##Ã5$T91¯ÍhÂ[þ.ÂE#ÍhÂ[>ÂQ!É!ÿÿÉþaØþzÐæ_É~þ*>$T9k?ÊŠ~ÍšÚ�#ÂhÃ�·Êˆþ.À> Š~·Èþ.È#Ã�Í_þ?ʶþ$Ê$T¤¶þ0Øþ:Ú¶þAØþ[?É7?É$R !-18@CHNQ[tx{‚/* >>>>> start ccl <<<<<< */ /* */ /* Compiler begins execution here */ /* */ #ifndef TRUE /*see if need to use include file */ #include #endif main() { glbptr=startglb; /* clear global symbols */ locptr=startloc; /* clear local symbols */ wqptr=wq; /* clear while queue */ macptr= /* clear the macro pool */ litptr= /* clear literal pool */ nxtlab= /* next label to assign */ sp = /* stackptr (relative) */ errcnt= /* no errors */ eof= /* not eof yet */ input= /* no input file */ input2= /* or include file */ output= /* no open units */ ncmp= /* no open compound states */ ctext= /* do not print text */ lastst=0; /* no last statement yet */ cif= /* state of #ifxxxx */ cmode=1; /* enable preprocessing */ litlab=getlabel(); /* label number for literal poll */ /* */ /* compiler body */ /* */ ask(); /* get user options */ openout(); /* get an output file */ openin(); /* and initial input file */ header(); /* intro code */ parse(); /* process ALL input */ dumplits(); /* then dump literal pool */ dumpglbs(); /* and all static memory */ dumpextrn(); /* make all function defined extrn */ errorsummary(); /* summarize errors */ trailer(); /* follow-up code */ closeout(); /* close the output */ if (errcnt) unlink("a:$$$.sub"); /* if errors erase submit file */ return; /* then exit to system */ } /* */ /* Process all input text */ /* */ /* At this level, only static declarations, */ /* defines, includes, and function */ /* definitions are legal... */ parse() { while (!eof) { /* do until no more input */ if(amatch("char",4)) { declglb(cchar); ns(); } else if(amatch("int",3)) { declglb(cint); ns(); } else if(match("#asm")) doasm(); else if(match("#include")) doinclude(); else if(match("#define")) addmac(); else if(match("#ifndef")) doifndef(); else if(match("#ifdef")) doifdef(); else newfunc(); blanks(); /* force eof if pending */ } } /* */ /* Dump the literal pool */ /* */ dumplits() { int j,k; if (litptr==0) return; /* if nothing there, exit...*/ printlabel(litlab); col(); /* print literal label */ k=0; /* init an index... */ while (k=litptr) { nl(); /* need */ break; } outbyte(','); /* separate bytes */ } } litptr=0; } /* */ /* Dump all static variables */ /* */ dumpglbs() { int j; dsect("@globals"); cptr=startglb; while(cptr=endglb) { error("global symnol table overflow"); return 0; } ptr=glbptr; glbptr+=symsiz; value=size; break; /* stack local varble */ case stkloc : sp=modstk(sp-size); value=sp; if (locptr>=endloc) { error("local symbol table overflow"); return 0; } ptr=locptr; locptr+=symsiz; break; /* arg stack */ case stkarg : value=argstk; argstk-=2; if (locptr>=endloc) { error("local symbol table overflow"); return 0; } ptr=locptr; locptr+=symsiz; break; } /* file in symbol table entry */ strcpy(ptr+name,sname); ptr[ident]=ident_typ; ptr[type]=typ; ptr[storage]=class_id; ptr[offset]=value; ptr[offset+1]=value>>8; ptr[indcnt]=count; return TRUE; }  /* a/* no subscript */ if (ident_typ==pointer) size=2; else if (typ == cint) size=2; else size=1; } /* add data element to symbol table */ switch(class_id) { /* global symbol */ case statik : if (glbptr>=endglb) { error("global symnol table overflow"); return 0; } ptr=glbptr; glbptr+=symsiz; value=size; break; /* stack local varble */ case stkloc : sp=modstk(sp-size); value=sp; if (locptr>=endloc) { error("local symbol table overflow"); return 0; } ptr=locptr; locptr+=symsiz; break; /* arg stack */ case stkarg : value=argstk; argstk-=2; if (locptr>=endloc) { error("local symbol table overflow"); return 0; } ptr=locptr; locptr+=symsiz; break; } /* file in symbol table entry */ strcpy(ptr+name,sname); ptr[ident]=ident_typ; ptr[ty #ifndef TRUE /* see if need include file */ #include #endif /* */ /* Get required array size */ /* */ /* invoked when declared variable is follwed by "[" */ /* this routine makes subscript the absolute */ /* size of the array. */ needsub() { int num[1]; if (match("]")) return 0; /* null size */ if (number(num)==0) { /* go after a number */ error("must be constant"); /* it isn't */ while(ch() != ',' && ch() != ';' && ch()) gch(); return 1; } if (num[0]<0) { error("negative size illegal"); num[0]=(-num[0]); } needbrack("]"); /* force single dimension */ return num[0]; /* and return size */ } /* */ /* Begin a function */ /* */ /* Called from "parse" this routine tries to make a function */ /* out of what follows. */ newfunc() { char n[namesize],*ptr; if (symname(n) == 0) { error("illegal function or declaration"); kill(); return; } if (!match("(")) { error("illegal function or declaration"); kill(); return; } if(ptr=findglb(n)) { /* already in symbol table ? */ if (ptr[ident] != function) multidef(n); /* already variable by that name */ else if(ptr[offset] == function) multidef(n); /* already function by that name */ else { ptr[offset]=function; csect(n); } /* otherwise we have what was earlier*/ /* assumed to be a function */ } /* if not in table, define as a function now */ else { /* fill in gobal symbol table */ if (glbptr>=endglb) error("gobal symbol table overflow"); else { ptr=glbptr; glbptr+=symsiz; strcpy(ptr+name,n); ptr[ident]=function; ptr[type]=int; ptr[offset]=function; ptr[offset1]= ptr[indcnt]= ptr[storage]=0; } csect(n); } argstk=0; /* init arg count */ while(match(")") == 0) { /* then count args */ /* any legal name bumps arg count */ if (symname(n)) argstk=argstk+2; else{ error("illegal argument name"); junk(); } blanks(); /* if not closing paren, should be a comma */ if( streq(line+lptr,")") == 0) { if(match(",")==0) error("expected comma"); } if(endst())break; } locptr=startloc; /* "clear" local symbol table*/ sp=0; /* preset stack ptr */ while(argstk) { /* now let user declare what types of things */ /* those arguments were */ if (amatch("char",4)) { getarg(cchar); ns(); } else if (amatch("int",3)) { getarg(cint); ns(); } else { error("wrong number args"); break; } } if(statement()!=streturn) { /* do a statement, but if */ /* it's a return, skip */ /* cleaning up the stack */ modstk(0); ret(); } sp=0; locptr=startloc; dumplits(); litlab=getlabel(); } /* */ /* Declare argument types */ /* */ /* called from "newfunc" this routine adds a entry in the */ /* local symbol table for each named argument */ getarg(t) /* t = cchar or cint */ int t; {  char n[namesize],c;int j,count; while(1) { count=0; if (argstk == 0) return; /* no more args */ if (match("*")) { j=pointer; ++count; while(ch()=='*') { ++count; gch(); } } else j=variable; if (symname(n) == 0) illname(); if (findloc(n)) multidef(n); data_parse(n,t,stkarg,j,count); if(endst())return; if(match(",")==0)error("expected comma"); } } /* */ /* Statement parser */ /* */ /* called whenever syntax requires */ /* a statement. */ /* this routine performs that statement */ /* and returns a number telling which one */ statement() { if (!ch() && eof) return; else if(amatch("char",4)) { declloc(cchar); ns(); } else if(amatch("int",3)) { declloc(cint); ns(); } else if(match("{")) compound(); else if(amatch("if",2)) { doif(); lastst=stif; } else if(amatch("while",5)) { dowhile(); lastst=stwhile; } else if (amatch("for",3)) { dofor();  lastst=stfor; } else if (amatch("switch",6)) { doswitch(); lastst=stswitch; } else if(amatch("return",6)) { doreturn(); ns(); lastst=streturn; } else if(amatch("break",5)) { dobreak(); ns(); lastst=stbreak; } else if(amatch("continue",8)) { docont(); ns(); lastst=stcont; } else if(match(";")); else if(match("#asm")) { doasm(); ns(); lastst=stasm; } /* if nothing else, assume it's an expression */ else { expression(); ns(); lastst=stexp; } return lastst; } /* */ /* Semicolon enforcer */ /* */ /* called whenever syntax requires a semicolon */ ns() {if(match(";")==0)error("missing semicolon");} /* */ /* need semicolon */ /* written by Mike Bernson 1/81 */ /* */ needsem() { if (match(";")) return FALSE; error("Missing semicolon"); junk(); return TRUE; } /* */ /* need opening parn */ /* written by Mike Bernson 1/81 */ needoparn() { if (match("(")) return FALSE; error("Missing left parnthis"); junk(); return TRUE; } /* */ /* need closing parn */ /* written by Mike Bernson 1/81 */ needcparn() { if (match(")")) return FALSE; error("Missing right parnthis"); junk(); return TRUE; } /* */ /* need opening brace */ /* written by Mike Bernson 1/81 */ needobrace() { if (match("{")) return FALSE; error("Missing left brace"); junk(); return TRUE; } /* */ /* need closing brace */ /* written by Mike Bernson 1/81 */ needcbrace() { if (match("}")) return FALSE; error("Missing right brace"); junk(); return TRUE; } /* */ /* Compound statement */ /* */ /* allow any number of statements to fall between "{}" */ compound() { ++ncmp; /* new level open */ while(match("}")==0) if(eof) return; else statement(); --ncmp; /* close current level */ } /* */ /* "if" statement */ /* */ doif() { int flev,fsp,flab1,flab2; flev=locptr; /* record current local level */ fsp=sp; /* record current stk ptr */ flab1= getlabel(); /* get label for false branch */ test(flab1); /*get expression, and branch false */ statement(); /* if true, do a statement */ sp=modstk(fsp); /* then clean up the stack */ locptr=flev; /* and deallocate any locals */ if (amatch("else",4)==0) /* if...else ? */ /* simple "if"...print false label */ {sprintlabel(flab1); return; /* and exit */ } /* an "if...else" statement. */ jump(flab2=getlabel()); /* jump around the false code */ sprintlabel(flab1); /* print true label */ statement(); /* and do else clause */ sp=modstk(fsp); /* then clean up stack ptr */ locptr=flev; /* dellocate locals */ sprintlabel(flab2); /* print true label */ } /* */ /* "while" statement */ /* */ dowhile() { int que[wqsiz]; /* allocate local queue */ que[wqsym]=locptr; /* record local level */ que[wqsp]=sp; /* and stk ptr */ que[wqloop]= /* and looping label */ que[wqend]=getlabel(); /* continue label */ que[wqlab]=getlabel(); /* and exit label */ addwhile(que); /* add to looping stack */ sprintlabel(que[wqloop]); /* loop label */ test(que[wqlab]); /* see if true */ statement(); /* if so, do a statement */ jump(que[wqloop]); /* loop to label */ sprintlabel(que[wqlab]); /* exit label */ locptr=que[wqsym]; /* deallocate locals */ sp=modstk(que[wqsp]); /* clean up stk ptr */ delwhile(); /* delete queue entry */ } /* */ /* "Switch" statement */ /* */ /* written by Mike Bernson 1/81 */ /* */ doswitch() { int value[SWITCH_MAX]; /* value for case statemant */ int label[SWITCH_MAX]; /* value for each label */ int count,tenp; /* number of switches */ int end_label; /* label for default */ int label_switch; /* used for switch label */ int temp,val[2]; int que[wqsiz]; /* local que area */ count=0; /* number of case statements */ que[wqsym]=locptr; /* local vable pointer */ que[wqsp]=sp; /* save current stack pointer */ end_label= /* default exit label */ que[wqloop]= /* looping label */ que[wqlab]= /* loop exit varble */ que[wqend]=getlabel(); /* continue label */ addwhile(que); /* add to while stack */ if (needoparn()) { /* check to see if"(" exits */ delwhile(); /* no delete switch entry and */ return; /* return out of switch */ } expression(); /* expression for switch */ push(); if (needcparn()) { /* check for ")" */ delwhile(); /* not fould detele que entry */ return; /* and exit switch statemant */ } if (needobrace()) { delwhile(); return; } jump(label_switch=getlabel()); sp=sp+2; while(1) { if (amatch("case",4)) { if (const_exp(val) == 0 ) { error("Bad constant"); continue; } if (count>>> start of cc3 <<<<<<<<< */ /* */ #ifndef TRUE /* see if need include file */ #include #endif /* Perform a function call */ /* */ /* called from heir11, this routine will either call */ /* the named function, or if the supplied ptr is */ /* zero, will call the contents of HL */ callfunction(ptr) char *ptr; /* symbol table entry (or 0) */ { int nargs; nargs=0; blanks(); /* already saw open paren */ if (ptr==0) push(); /* calling HL */ while (streq(line+lptr,")") == 0) { if (endst()) break; expression(); /* get an argument */ if (ptr == 0) swapstk(); /* don't push addr */ push(); /* push argument */ nargs=nargs+2; /* count args*2 */ if (match(",") == 0) break; } needbrack(")"); if (ptr) call(ptr); else callstk(); sp=modstk(sp+nargs); /* clean up arguments */ } junk() { if(an(inbyte())) while(an(ch())) gch(); else while(an(ch()) == 0) { if(ch() == 0) break; gch(); } blanks(); } endst() { blanks(); return ((streq(line+lptr,";") ||(ch() == 0))); } suberror(sname) char *sname; { char msg[80]; strcpy(msg,"identifier \""); strcat(msg,sname); strcat(msg,"\" is not a vaild array base"); error_prt(msg); while(1) { if (endst()) return; if (ch()==']') { gch(); return; } gch(); } } illname() { error("illegal symbol name"); junk(); } undefine(sname) char *sname; { char msg[80]; strcpy(msg,"undefine identifier \""); strcat(msg,sname); strcat(msg,"\""); error_print(msg); } /* */ /* written By Mike Bernson 4/81 */ /* */ multidef(sname) char *sname; { char msg[80]; strcpy(msg,"already defined symbol or function \""); strcat(msg,sname); strcat(msg,"\""); error_print(msg); } needbrack(str) char *str; { if (!match(str)) error("missing braket"); } needlval() { error("must be lvalue"); } findglb(sname) char *sname; { char *ptr; ptr=startglb; while(ptr!=glbptr) { if (astreq(sname,ptr,namemax)) return ptr; ptr=ptr+symsiz; } return 0; } findloc(sname) char *sname; { char *ptr; ptr=startloc; while(ptr!=locptr) { if(astreq(sname,ptr,namemax))return ptr; ptr=ptr+symsiz; } return 0; } /* Test if next input string is legal symbol name */ symname(sname) char *sname; { int k;char c; blanks(); if (!alpha(ch())) return 0; k=0; while(an(ch())) sname[k++]=gch(); sname[k]=0; return 1; } /* Return next avail internal label number */ getlabel() { return (++nxtlab); } /* Print label at start of line */ sprintlabel(label) int label; { printlabel(label); col(); nl(); } /* Print specified number as label */ printlabel(label) int label; { outstr("@"); outdec(label); } /* Test if given character is alpha */ alpha(c) char c; { return((c>='a' && c<='z') || (c>='A' && c<='Z') || c=='_'); } /* Test if given character is numeric */ numeric(c) char c; { return(c>='0' && c<='9'); } /* Test if given character is alphanumeric */ an(c) char c; { return(alpha(c) || numeric(c)); } /* Print a carriage return and a string only to console */ pl(str) char *str; { putch('\r'); while (*str) putch(*str++); } addwhile(ptr) int ptr[]; { int k; if (wqptr==wqmax) { error("too many active whiles"); return; } k=0; while (k=linemax) || (k==26)) break; if (k != '\r') line[lptr++]=k; } line[lptr]=0; /* append null */ if(k<=0 || k==26) { if (input2) { close(input2); input2=0; } else { close(input); input=0; } } if(lptr) { if(ctext && cmode) { comment(); tab(); outstr(line); nl(); } lptr=0; return; } } } zs,j; char c; j=zs=0; k=10000; if (number<0) { num if(ch() == 0) return 0; else return line[lptr++]; } kill() { lptr=0; line[0]=0; } inbyte() { while (!line[lptr]) { if (eof) return 0; inline(); preprocess(); } return gch(); } inchar() { if (!line[lptr]) inline(); if (eof) return 0; return (gch()); } inline() { int k; char *unit; while(1) { kill(); if (input==0)openin/* >>>>>> start of cc4 <<<<<<< */ #ifndef TRUE /* check to see if need include file */ #include #endif keepch(c) char c; { mline[mptr]=c; if (mptr=mpmax) error("line too long"); lptr=mptr=0; while(line[lptr++]=mline[mptr++]); lptr=0; } addmac() { char sname[namesize]; int k; if (symname(sname) == 0) { illname(); kill(); return; } k=0; while(putmac(sname[k++])); while(isspace(ch())) gch(); while(putmac(gch())); if (macptr >= macmax) error("marco table full"); } putmac(c) char c; { macq[macptr]=c; if(macptr < macmax) macptr++; return c; } findmac(sname) char *sname; { int k; k=0; while(k=1) { c=number/k + '0'; if (c != '0' || k == 1 || zs) { zs=1; string[j++]=c; } number=number%k; k=k/10; } string[j]=0; return string; } /* */ /* to output number as a hex value */ /* */ /* written june 28, 1981 by Mike Bernson */ /* */ outhex(value) int value; { int postion; char *hex; hex="0123456789abcdef"; for(postion=16; postion >= 0; postion -=4) outbyte(hex[(value>>postion) & 0x0f]); outbyte('h'); } 0x0f]); outbyte('h'); }/* number of case statement in switch */ int label; /* label for switch t; } return 0; } blanks() { while(1) { while(ch()==0) { inline(); preprocess(); if (eof) break; } if(isspace(ch())) gch(); else return; } } outdec(number) int number; { char buff[10]; outstr(sdec(buff,number)); } sdec(string,number) char string[]; int number; { int k,zs,j; char c; j=zs=0; k=10000; if (number<0) { number=(-number); string[j++]='-'; } while (k>=1) { c=number/k + '0'; if (c != '0' || k == 1 || zs) { zs=1; string[j++]=c; } number=number%k; k=k/10; } string[j]=0; return string; } /* */ /* to output number as a hex value */ /* */ /* written june 28, 1981 by Mike Bernson */ /* */ outhex(value) int value; { int posti /********************************************************/ /* */ /* expression handler */ /* */ /* table below show precedence of operator */ /* */ /********************************************************/ /* operator * routine * associativity */ /********************************************************/ /* | ++ -- - * & * heir10 * left to right */ /********************************************************/ /* * / % * heir9 * rigth to left */ /********************************************************/ /* + - * heir8 * left to right */ /********************************************************/ /* << >> * heir7 * left to right */ /********************************************************/ /* < <= > >= * heir6 * left to right */ /********************************************************/ /* == != * heir5 * left to rigth */ /********************************************************/ /* & * heir4 * left to rigth */ /********************************************************/ /* ^ * heir3 * left to right */ /********************************************************/ /* | * heir2 * left to right */ /********************************************************/ /* && * heir1e * left to right */ /********************************************************/ /* || * heir1d * left to right */ /********************************************************/ /* = -= += *= %= * heir1 * left to right */ /* /= &= ^= |= * * */ /********************************************************/ #ifndef TRUE /* check to see if need include file */ #include #endif expression() { int lval[lvalsize],status; status=FALSE; rvalue(lval,heir1(lval,&status)); return status; } heir1(lval,status) int lval[]; int *status; { int k; char *ptr; k=heir1d(lval,status); if (ch() != '=' && nch() != '=') return k; *status=FALSE; switch(ch()) { /* just an equal */ case '=' : gch(); equal(lval,k); break; /* add value then store */ case '+' : case '-' : gch();gch(); equal_exp(lval,k); size_adjust(lval); if (ch() == '-') sub(); else add(); k=1; break; case '*' : gch();gch(); equal_exp(lval,k); mult(); k=1; break; case '/' : gch();gch(); equal_exp(lval,k); div(); k=1; break; case '%' : gch();gch(); equal_exp(lval,k); mod(); k=1; break; case '&' : gch();gch(); equal_exp(lval,k); and(); k=1; break; case '^' : gch();gch(); equal_exp(lval,k); xor(); k=1; break; case '|' : gch();gch(); equal_exp(lval,k); or(); k=1; break; default: return k; } store(lval,k); return 0; } /* */ /* written by Mike Bernson 1/81 */ /* */ heir1d(lval,status) int lval[]; int *status; { int k,lval2[lvalsize]; int label; k=heir1e(lval,status); blanks(); if (ch() != '|' || nch() != '|') return k; rvalue(lval,k); label=getlabel(); while(1) { if (match("||")) { truejump(label,*status); *status=TRUE; rvalue(lval2,heir1e(lval2,status)); } else { sprintlabel(label); return 0; } } } /* */ /* written by Mike Bernson 1/81 */ /* */ heir1e(lval,status) int lval[]; int *status; { int label; int k,lval2[lvalsize]; k=heir2(lval,status); blanks(); if (ch() != '&' || nch() != '&') return k; rvalue(lval,k); label=getlabel(); while(1) { if (match("&&")) { testjump(label,*status); *status=TRUE; rvalue(lval2,heir2(lval2,status)); } else { sprintlabel(label); return 0; } } } heir2(lval,status) int lval[]; int *status; { int k,lval2[lvalsize]; k=heir3(lval,status); blanks(); if (ch() != '|' || nch() =='|' || nch()== '=') return k; rvalue(lval,k); while(1) { if (match("|")) { push(); rvalue(lval2,heir3(lval2,status)); or(); *status=TRUE; } else return 0; } } heir3(lval,status) int lval[]; int *status; { int k,lval2[lvalsize]; k=heir4(lval,status); blanks(); if (ch() != '^' || nch() == '=') return k; rvalue(lval,k); while(1) { if (match("^")) { push(); rvalue(lval2,heir4(lval2,status)); xor(); *status=TRUE; } else return 0; } } heir4(lval,status) int lval[]; int *status; { int k,lval2[lvalsize]; k=heir5(lval,status); blanks(); if (ch() != '&' || nch()=='&' || nch() == '=') return k; rvalue(lval,k); while(1) { if (match("&")) { push(); rvalue(lval2,heir5(lval2,status)); and(); *status=TRUE; } else return 0; } } heir5(lval,status) int lval[]; int *status; { int k,lval2[lvalsize]; k=heir6(lval,status); blanks(); if ((streq(line+lptr,"==") ==0) && (streq(line+lptr,"!=") == 0)) return k; rvalue(lval,k); while(1) { if (match("==")) { push(); rvalue(lval2,heir6(lval2,status)); eq(); *status=TRUE; } else if (match("!=")) { push(); rvalue(lval2,heir6(lval2,status)); ne(); *status=TRUE; } else return 0; } } heir6(lval,status) int lval[]; int *status; { int k,lval2[lvalsize]; k=heir7(lval,status); blanks(); if ((streq(line+lptr,"<") == 0) && (streq(line+lptr,">") == 0) && (streq(line+lptr,"<=") == 0) && (streq(line+lptr,">=") == 0)) return k; if (streq(line+lptr,">>")) return k; if (streq(line+lptr,"<<")) return k; rvalue(lval,k); while(1) { if (match("<=")) { push(); rvalue(lval2,heir7(lval2,status)); *status=TRUE; if (cptr=lval[0]) if(cptr[ident]==pointer) { ule(); continue; } if (cptr=lval2[0]) if(cptr[ident]==pointer) { le(); continue; } le(); } else if (match(">=")) { push(); rvalue(lval2,heir7(lval2,status)); *status=TRUE; if (cptr=lval[0]) if (cptr[ident]==pointer) { uge(); continue; } if (cptr=lval2[0]) if (cptr[ident]==pointer) { uge();  continue; } ge(); } else if ((streq(line+lptr,"<")) && (streq(line+lptr,"<<")==0)) { inbyte(); push(); rvalue(lval2,heir7(lval2,status)); *status=TRUE; if (cptr=lval[0]) if (cptr[ident]==pointer) { ult(); continue; } if(cptr=lval2[0]) if (cptr[ident]==pointer) { ult(); continue; } lt(); } else if ((streq(line+lptr,">")) && (streq(line+lptr,">>") == 0)) { inbyte(); push(); rvalue(lval2,heir7(lval2,status)); *status=TRUE; if (cptr=lval[0]) if (cptr[ident]==pointer) { ugt(); continue; } if (cptr=lval2[0]) if (cptr[ident]==pointer) { ugt(); continue; } gt(); } else return 0; } }  if (isbyte(k)) call("@stacks"); else call("@stackl"); defvalue(k); return newsp; } /* Do[ident]==pointer) { uge(); continue; } if (cptr=lval2[0]) if (cptr[ident]==pointer) { uge(); /* >>>>>> start of cc6 <<<<<< */ #ifndef TRUE /* see if need include file */ #include #endif heir7(lval,status) int lval[]; int *status; { int k,lval2[lvalsize]; k=heir8(lval,status); blanks(); if (!streq(line+lptr,">>") && !streq(line+lptr,"<<")) return k; rvalue(lval,k); while(1) { if (match(">>")) { push(); k=heir8(lval2); rvalue(lval2,k); asr(); *status=FALSE; } else if (match("<<")) { push(); k=heir8(lval2); rvalue(lval2,k); asl(); *status=FALSE; } else return 0; } } heir8(lval,status) int lval[]; int *status; { int k,lval2[lvalsize]; k=heir9(lval,status); blanks(); if ((ch() != '+' && ch() != '-') || nch() == '=') return k; rvalue(lval,k); while(1) { switch(ch()) { /* add last item to next item */ case '+' : push(); gch(); k=heir9(lval2,status); rvalue(lval2,k); size_adjust(lval); add(); *status=FALSE; break; /* subtract next item from current item */ case '-' : push(); gch(); k=heir9(lval2,status); rvalue(lval2,k); size_adjust(lval); sub(); *status=FALSE; break; /* operator not "+" or "-" */ default : return 0; } } } heir9(lval,status) int lval[]; int *status; { int k,lval2[lvalsize],temp; temp=0; k=heir10(lval,&temp,status); blanks(); if ((ch() != '*' && ch()!='/' && ch() != '%') || nch() == '=') return k; rvalue(lval,k); while(1) { if (match("*")) { push(); k=heir10(lval2,&temp,status); rvalue(lval2,k); mult(); *status=FALSE; } else if (match("/")) { push(); k=heir10(lval2,&temp,status); rvalue(lval2,k); div(); *status=FALSE; } else if (match("%")) { push(); k=heir10(lval2,&temp,status); rvalue(lval2,k); mod(); *status=FALSE; } else return 0; } } heir10(lval,count,status) int lval[]; int *count; int *status; { int k,lval2[lvalsize]; char *ptr,flag; if(match("++")) { if (!(k=heir10(lval,count,status))) { needlval(); return LOADED; } lval[1] += *count; address(lval,k); pre_inc(lval); return LOADED; } else if (match("--")) { if (!(k=heir10(lval,count,status))) { needlval(); return LOADED; } lval[1] += *count; address(lval,k); pre_dec(lval); *status=TRUE; return LOADED; } else if (match("-")) { if (isdigit(nch())) constant(); else { k=heir10(lval,count,status); rvalue(lval,k); neg(); *status=TRUE; } return LOADED; } else if (match("*")) { ++*count; k=heir10(lval,count,status); rvalue(lval,k); lval[1] += *count; *count=0; *status=FALSE; return ADDRESS; } else if (match("&")) { k=heir10(lval,count,status); *status=FALSE; if (k == 0 || lval[0]) { error("illegal address"); return LOADED; } else if (lval[1]) return LOADED; else { immed(); outstr(ptr=lval[0]); nl(); return LOADED; } } else if (match("!")) { rvalue(lval,heir10(lval,count,status)); nlogical(); *status=TRUE; return LOADED; } else { k=heir11(lval,status); movmem(lval,lval2,lvalsize*2); lval2[1] += *count; if (match("++")) { if(k == LOADED) { needlval(); return LOADED; } address(lval,k); post_inc(lval); *status=TRUE; return LOADED; } else if (match("--")) { if (k == LOADED) { needlval(); return LOADED; } address(lval,k); post_dec(lval); *status=TRUE; return LOADED; } else return k; } } k; } }  else return k;count,status); rvalue(lval,k); lval[1] += *count; *count=0; *status=FALSE; return ADDRESS; } else if (match("&")) { k=heir10(lval,count,status); *status=FALSE; if (k == 0 || lval[0]) { error("illegal address"); return LOADED; } else if (lval[1]) return LOADED; else { immed(); outstr(ptr=lval[0]); nl(); return LOADE #ifndef TRUE /* see if include needed */ #include #endif heir11(lval,status) int *lval; int *status; { int k; char *ptr; int lval2[lvalsize]; k=primary(lval,status); ptr=lval[0]; blanks(); switch(ch()) { /* subscript varble */ case '[' : gch(); /* eat '[' */ switch(ptr[ident]) { /* array of elements */ case array : *status=FALSE; ++lval[1]; if (const_exp(lval2) && ch()==']') { lval[2]=data_size(lval)* lval2[0]; needbrack("]"); return NOTLOADED; } else { expression(); size_adjust(lval); swap(); address(lval,NOTLOADED); add_address(); needbrack("]"); return ADDRESS; } /* pointer to elements */ case pointer: *status=FALSE; if (const_exp(lval2) && ch()==']') { immed(); outdec(data_size(lval)* lval2[0]); nl(); swap(); rvalue(lval,2); add_address(); } else { expression(); size_adjust(lval); swap(); rvalue(lval,2); add_address(); } needbrack("]"); lval[1] += 1; return ADDRESS; /* not a vaild ident for subscript */ default : suberror(ptr); return LOADED; } /* a function call */ case '(' : *status=FALSE; gch(); /* eat '(' */ callfunction(lval[0]); return LOADED; /* not a subscripted or function call (not for this level */ default: return k; } } primary(lval,status) int *lval; int *status; { char *ptr; char sname[namesize];  int num[1]; int k; /* clear lval array for use */ lval[0]= lval[1]= lval[2]=0; if(match("(")) { k=heir1(lval,status); needbrack(")"); return k; } *status=FALSE; if (symname(sname)) { if ((lval[0]=findloc(sname))) return 2; if ((lval[0]=ptr=findglb(sname))) if (ptr[ident] != function) return 2; if (ch() =='(') { if (!(ptr=findglb(sname))) if (glbptr>=endglb) { error("global symbol table ofverflow"); } else { ptr=glbptr; glbptr+=symsiz; strcpy(ptr+name,sname); ptr[ident]=function; ptr[type]=cint; ptr[offset]= ptr[offset1]= ptr[storage]= ptr[indcnt]=0; } lval[0]=ptr; return 2; } else { undefine(sname); return 0;  } } if (constant(num)) { return 0; } else { error("invalid expression"); junk(); return 0; } } /* */ /* written 4/23/81 by Mike Bernson */ /* */ size_adjust(lval) int *lval; { int size; size=data_size(lval); if (size == 1) return; if (size == 2) { doublereg(); } } /* */ /* written 4/23/81 By Mike Bernson */ /* */ data_size(lval) int *lval; { char *ptr; if (!(ptr=lval[0])) return 0; switch(ptr[ident]) { /* array of elements */ case array : switch(ptr[type]) { /* char type */ case cchar: return lchar; /* int type */ case cint : return lint; } /* pointer to elements */ case pointer :  if (lval[1] < ptr[indcnt] && ptr[indcnt] > 1) return lpoint; else switch(ptr[type]) { /* type char */ case cchar : return lchar; /* type int */ case cint: return lint; } /* just a plain variable */ case variable : return 1; } } /* */ /* written 4/23/81 By Mike Bernson */ /* */ address(lval,k) int *lval; { char *ptr; if (!(ptr=lval[0]) || k != NOTLOADED) return; switch(ptr[storage]) { /* global symbol */ case statik : immed(); outstr(ptr+name); if (lval[2]) { outstr("+"); outdec(lval[2]); } nl(); break; /* local symbol */ case stkloc : case stkarg : immed(); outdec((ptr[offset]+ptr[offset1]*256+lval[2])-sp); nl();  ot("dad\tsp"); nl(); break; } } /* */ /* date written 6/6/81 by Mike Bernson */ /* */ /* check to see if static load or store */ /* */ loadstatic(lval,k) int *lval; int k; { char *ptr; ptr=lval[0]; if (ptr[storage] == statik && k == NOTLOADED) return TRUE; else return FALSE; } /* */ /* date written 4/30/81 By Mike Bernson */ /* */ store(lval,k) int *lval; int k; { char *ptr; ptr=lval[0]; if (k==0) return; switch(ptr[storage]) { /* local or arg type */ case stkloc : case stkarg : switch(ptr[ident]) { /* ident =array */ case array: if (lval[1] == ptr[indcnt]) if (k==ADDRESS) putstk(ptr[type]); else putmem_stack(lval,ptr[type]); break; /* ident is an pointer */ case pointer: if (lval[1] == ptr[indcnt]) if (k==ADDRESS) putstk(ptr[type]); else putmem_stack(lval,ptr[type]); else if (k==ADDRESS) putstk(cint); else putmem_stack(lval,cint); break; /* ident is a variable */ case variable : if (k==ADDRESS) putstk(ptr[type]); else putmem_stack(lval,ptr[type]); break; } break; /* static varbles */ case statik : switch(ptr[ident]) { /* array */ case array : if (lval[1] == ptr[indcnt]) if (k==1) putstk(ptr[type]); else putmem(ptr+name,ptr[type], lval[2]); break; /* pointer */ case pointer: if (lval[1] == ptr[indcnt]) if (k==1) putstk(ptr[type]); else putmem(ptr+name,ptr[type],lval[1]); else if (k==1) putstk(cint); else putmem(ptr+name,cint,0); break; /* variable */ case variable : if (k==1) putstk(ptr[type]); else putmem(ptr+name,ptr[type],0); break; } } } /* */ /* written 4/24/81 By Mike Bernson */ /* */ rvalue(lval,k) int *lval; int k; { char *ptr; ptr=lval[0]; if (k==0) return; switch(ptr[storage]) { /* local or arg type */ case stkloc : case stkarg : switch(ptr[ident]) { /* ident =array */ case array: if (lval[1] == ptr[indcnt]) if (k==ADDRESS) indirect(ptr[type]); else getmem_stack(lval,ptr[type]); else address(lval,k); break; /* ident is an pointer */ case pointer: if (lval[1] == ptr[indcnt]) if (k==ADDRESS) indirect(ptr[type]); else getmem_stack(lval,ptr[type]); else if (k==ADDRESS) indirect(cint); else getmem_stack(lval,cint); break;  /* ident is a variable */ case variable : if (k==ADDRESS) indirect(ptr[type]); else getmem_stack(lval,ptr[type]); break; } break; /* static varbles */ case statik : switch(ptr[ident]) { /* array */ case array : if (lval[1] == ptr[indcnt]) if (k==1) indirect(ptr[type]); else getmem(ptr+name,ptr[type], lval[2]); else if (k==1) indirect(ptr[type]); else address(lval,k); break; /* pointer */ case pointer: if (lval[1] == ptr[indcnt]) if (k==1) indirect(ptr[type]); else getmem(ptr+name,ptr[type],lval[2]); else if (k==1) indirect(cint); else getmem(ptr+name,cint,0); break; /* variable */ case variable : if (k==1) indirect(ptr[type]); else getmem(ptr+name,ptr[type],0); break; } } } equal_exp(lval,k) int *lval; int k; { char *ptr; int lval2[lvalsize]; int status; ptr=lval[0]; /* check to see if vaild lval */ if ((ptr[ident]==array && ptr[indcnt] != lval[1]) || k==0 || lval[0] == 0) { needlval(); return; } address(lval,k); push(); rvalue(lval,1); push(); rvalue(lval2,heir1(lval2,&status)); } /* */ /* written 4/9/81 By Mike Bernson */ /* */ equal(lval,k) int lval[]; int k; { char *ptr; int lval2[lvalsize]; int status; ptr=lval[0]; /* check to see that is expresstion is array must be element */ if (ptr[ident] == array && ptr[indcnt] != lval[1]) { needlval(); return; } switch(k) { /* data is a constant or value */  case 0 : needlval(); break; /* address of variable is on stack */ case 1 : push(); break; /* nothing of variable is on stack */ case 2 : break; } rvalue(lval2,heir1(lval2,&status)); } test(label) int label; { int status; needbrack("("); status=expression(); needbrack(")"); testjump(label,status); } /* */ /* written by Mike Bernson 3/80 */ /* */ const_exp(val) int val[]; { blanks(); if (hex(val)) return 1; if (number(val)) return 1; if (pstr(val)) return 1; return 0; } constant(val) int val[]; { if (hex(val)) immed(); else if (number(val)) immed(); else if (pstr(val)) immed(); else if (qstr(val)) { immed(); printlabel(litlab); outbyte('+'); } else return 0; outdec(val[0]); nl(); return 1; } hex(val) int val[]; { int check; char look[2]; if (ch() != '0' || (nch() != 'X' && nch() != 'x')) return 0; gch(); gch(); look[1]=0; look[0]=toupper(gch()); if (!(check=strpos("0123456789ABCDEF",look))) { error("invaild hex constant"); junk(); val[0]=0; return 1; } val[0]=check-1; while(1) { look[0]=toupper(ch()); if (!(check=strpos("0123456789ABCDEF",look))) return 1; val[0]=val[0]*16+check-1; gch(); } } number(val) int val[]; { int k,minus;char c; k=minus=1; while(k) { k=0; if (match("+")) k=1; if (match("-")) { minus=-minus; k=1; } } if (!numeric(ch())) return 0; while(numeric(ch())) {  c=inbyte(); k=k*10+(c-'0'); } if (minus<0) k=-k; val[0]=k; return 1; } pstr(val) int val[]; { int k; k=0; if (!match("\'")) return 0; while(ch() != '\'' && ch()) k=(k&255)*256 + estr(); gch(); val[0]=k; return 1; } qstr(val) int val[]; { char c; if (!match("\"")) return 0; val[0]=litptr; while (ch() != '\"') { if(!ch()) break; if(litptr>=litmax) { error("string space exhausted"); while(ch() !='\"' && ch()) estr(); return 1; } litq[litptr++]=estr(); } gch(); litq[litptr++]=0; return 1; } estr() { char check; if (ch() != '\\') return gch(); gch(); switch(toupper(check=gch())) { case 'R' : return CR; case 'N' : return LF; case 'B' : return BS; case 'T': return TB; case 'F' : return FF; } if (!isdigit(check)) return check; check=check-'0'; while(isdigit(ch())) check=check*8+gch()-'0'; return check; }  } 2,105,116 db 32,97,110,121,()) k=(k&255)*256 + estr(); gch(); val[0]=k; return 1; } qstr(val) int val[]; { char c; if (!match("\"")) return 0; val[0]=litptr; while (ch() != '\"') { if(!ch()) break; if(litptr>=litmax) { error("string space exhausted"); while(ch() !='\"' && ch()) estr(); return 1; } litq[litptr++]=estr(); } gch(); litq[litptr++]=0; return 1; } estr() { char check; if (ch() != '\\') return gch(); gch(); switch(toupper(check=gch())) { case 'R' : return CR; case 'N' : return LF; case 'B' : return BS; case #ifndef TRUE /* check to see if include file is needed */ #include #endif /* Begin a comment line for the assembler */ comment() { outbyte(';'); } /* Print all assembler info before any code is generated */ header() { outstr("@start:\tcsect");nl(); ol("jmp\t@init"); ol("extrn\t@and,@asl,@asr,@comp,@com,@div"); ol("extrn\t@gchar,@gint,@incdec"); ol("extrn\t@mult,@neg,@nlog,@or,@pint,@sub"); ol("extrn\t@sxt,@ucomp,@xor,@init,@switch"); ol("extrn\t@gintss,@gintsl,@gcharss,@gcharsl"); ol("extrn\t@pintss,@pintsl,@pcharss,@pcharsl"); outstr("@eq\tequ\t@comp");nl(); outstr("@ge\tequ\t@comp+35h");nl(); outstr("@gt\tequ\t@comp+1ah");nl(); outstr("@le\tequ\t@comp+43h");nl(); outstr("@lt\tequ\t@comp+28h");nl(); outstr("@ne\tequ\t@comp+0dh");nl(); outstr("@uge\tequ\t@ucomp+6ch");nl(); outstr("@ugt\tequ\t@ucomp+51h");nl(); outstr("@ule\tequ\t@ucomp+79h");nl(); outstr("@ult\tequ\t@ucomp+5fh");nl(); outstr("@preinc\tequ\t@incdec");nl(); outstr("@postinc\tequ\t@incdec+10h");nl(); outstr("@predec\tequ\t@incdec+08h");nl(); outstr("@postdec\tequ\t@incdec+1ah");nl(); } /* Print any assembler stuff needed after all code */ trailer() { ol("end"); } /* */ /* rewritten 4/30/81 by Mike Bernson */ /* */ /* Fetch a static memory cell into the primary register */ getmem(sname,typ,off) char *sname; int typ; int off; { if(typ==cchar) { ot("lda\t"); outstr(sname); if (off) { outstr("+"); outdec(off); } nl(); call("@sxt"); } else { ot("lhld\t"); outstr(sname); if (off) { outstr("+"); outdec(off); } nl(); } } /* */ /* written by Mike Bernson 6/8/81 */ /* */ /* load a byte offset from current stack */ /* */ getmem_stack(lval,typ) int *lval; char *typ; { char *ptr; int off; ptr=lval[0]; off=ptr[offset]+ptr[offset+1]*256+lval[2]-sp; if (typ == cint) if (isbyte(off)) call("@gintss"); else call("@gintsl"); else if (isbyte(off)) call("@gcharss"); else call("@gcharsl"); defvalue(off); } /* */ /* rewritten 4/30/81 By Mike Bernson */ /* */ /* Store the primary register into the specified */ /* static memory */ putmem(sname,typ,off) char *sname; int typ; int off; { if (typ==cchar) { ol("mov\ta,l"); ot("sta\t"); } else ot("shld\t"); outstr(sname); if (off) { outstr("+"); outdec(off); } nl(); } /* Store the specified object type in the primary register */ /* at the address on the top of the stack */ putstk(typeobj) char typeobj; { pop(); putsec(typeobj); } /* store the specified object type in the primary register */ /* at the address in the secondary register */ putsec(typeobj) char typeobj; { if (typeobj == cchar) { ol("mov\ta,l"); ol("stax\td"); } else call("@pint"); } /* */ /* written by Mike Bernson 6/9/81 */ /* */ /* store hl value after call plus */ /* current stack */ /* */ putmem_stack(lval,typ) int *lval; char  typ; { int off; char *ptr; ptr=lval[0]; off=ptr[offset]+ptr[offset+1]*256+lval[2]-sp; if (typ == cint) if (isbyte(off)) call("@pintss"); else call("@pintsl"); else if (isbyte(off)) call("@pcharss"); else call("@pcharsl"); defvalue(off); } /* Fetch the specified object type indirect through the */ /* primary register into the primary register */ indirect(typeobj) char typeobj; { if (typeobj == cchar) call("@gchar"); else call("@gint"); } /* add primary and secondary registers */ add_address() { ol("dad\td"); } /* Swap the primary and secondary registers */ swap() { ol("xchg"); } /* Print partial instruction to get an immediate value */ /* into the primary register */ immed() { ot("lxi\th,"); } /* Push the primary register onto the stack */ push() { ol("push\th"); sp=sp-2; } /* push the secondary register on stack */ pushs() { ol("push\td"); sp=sp-2; } /* Pop the top of the stack into the secondary register */ pop() { ol("pop\td"); sp=sp+2; } /* Swap the primary register and the top of the stack */ swapstk() { ol("xthl"); } /* call routine and subtract 2 from stack pointer */ ccall(sname) char *sname; { sp=sp+2; call(sname); } /* Call the specified subroutine name */ call(sname) char *sname; { ot("call\t"); outstr(sname); nl(); } /* Return from subroutine */ ret() { ol("ret"); } /* Perform subroutine call to calue on top of stack */ callstk() { immed(); outstr("S+5"); nl(); swapstk(); ol("pchl"); sp=sp+2; } /* Jump to specified internal label number */ jump(label) int label; { ot("jmp\t"); printlabel(label); nl(); } /* test the primary register and jump if treu to label */ truejump(label,status) int label; int status; { if (!status) { ol("mov\ta,h"); ol("ora\tl"); } ot("jnz\t"); printlabel(label); nl(); } /* Test the primary register and jump if false to label */ testjump(label,status) int label; int status; { if (!status) { ol("mov\ta,h"); ol("ora\tl"); } ot("jz\t"); printlabel(label); nl(); } /* routine to search switch table */ exec_switch(count,label,end_label) int count; /* number of case statement in switch */ int label; /* label for switch table */ int end_label; /* label to execute when table search ends and not found */ { ot("lxi\td,"); printlabel(label); nl(); ot("lxi\th,"); printlabel(end_label); nl(); ot("mvi\tb,"); outdec(count); nl(); ot("jmp\t@switch"); nl(); } /* output extrn and symbol name */ extrn(n) char *n; { outstr("\textrn\t"); outstr(n);nl(); } /* output control section name and key word */ csect(n) char *n; { outstr(n); col(); ol("CSECT"); } /* output data section name and key word */ dsect(n) char *n; { outstr(n); col(); ol("dsect"); } /* define value using min amount of stroage space */ defvalue(num) int num; { if (isbyte(num)) defbyte(); else defword(); outdec(num); nl(); } /* check to see if number is a byte */ isbyte(num) int num; { return (num >= 0 && num <=255); } /* Print pseudo-op to define a byte */ defbyte() { ot("db\t"); } /* Print pseudo-op to define storage */ defstorage() { ot("ds\t"); } /* Print pseudo-op to define a word */ defword() { ot("dw\t"); } /* Modify the stack pointer to the new value indicated */ modstk(newsp) int newsp; { int k; k=newsp-sp; if (!k) return newsp; if ( k >= 0) { if(k<7) { if (k&1) { ol("inx\tsp"); k--; } while(k) { ol("pop\tb"); k=k-2; } return newsp; } } if (k<0) { if (k>-7) { if (k&1) { ol("dcx\tsp"); k++; } while(k) { ol("push\tb"); k=k+2; } return newsp; } } swap(); immed(); outdec(k); nl(); ol("dad\tsp"); ol("sphl"); swap(); return newsp; } /* Double the primary register */ doublereg() { ol("dad\th"); } dad\th"); }  } CHOw#wt!GETCH‹µ/* >>>>> start of c9 <<<<<< */ #ifndef TRUE /* check to see if include file is needed */ #include #endif /* Add the primary and secondary registers */ /* (results in primary) */ add() { pop(); ol("dad\td"); } /* Subtract the primary register from secondary */ /* (results in primary) */ sub() { ccall("@sub"); } /* Multiply the primary and secondary registers */ /* (results in primary) */ mult() { ccall("@mult"); } /* Divide the secondary register by the primary */ /* (quotient in primary, remainder in seconday) */ div() { ccall("@div"); } /* Compute remainder (mod) of seconday by primary */ /* (remainder in primary, quotient ient in secondary) */ mod() { div(); swap(); } /* Inclusive 'or' the primary and the secondary registers */ /* (results in primary) */ or() { ccall("@or"); } /* Exxclusive 'or' then primary and the secondary registers */ /* (results in primary) */ xor() { ccall("@xor"); } /* 'and' the primary and secondary registers! */ /* (results in primary) */ and() { ccall("@and"); } /* Arithmetic shift right the secondary register number of */ /* times in primary (results in primary ) */ asr() { ccall("@asr"); } /* arithmetic left shift the secondary register number of */ /* times in primary (results in primary) */ asl() { ccall("@asl"); } /* From two's complement of primary register */ neg() { call("@neg"); } /* form one's complement of primary register */ com() { call("@com"); } pre_inc(lval) int *lval; { call("@preinc"); inc_def(lval); } post_inc(lval) int *lval; { call("@postinc"); inc_def(lval); } pre_dec(lval) int *lval; { call("@predec"); inc_def(lval); } post_dec(lval) int *lval; { call("@postdec"); inc_def(lval); } inc_def(lval) int *lval; { char *ptr;; int value; ptr=lval[0]; if (ptr[ident] == pointer && ptr[indcnt] != lval[1]) value=0x80; else value=0; value=value | data_size(lval); if (ptr[type] == cint && ptr[ident] != pointer) value=value | 0x80; defbyte(); outhex(value); nl(); } /* following are the conditional operators */ /* they compare the seconday register against the primary */ /* and put a leteral 1 in the primary if the condition is */ /* true otherwise the clear the primary register */ /* change to not condition */ nlogical() { call("@nlog"); } /* test for logical and */ land() { ccall("@land"); } /* test for logical or */ lor() { ccall("@lor"); } /* test for equal */ eq() { ccall("@eq"); } /* test for not equal */ ne() { ccall("@ne"); } /* test for less than (signed) */ lt() { ccall("@lt"); } /* tet for less than or equal to (signed) */ le() { ccall("@le"); } /* test for greater than (signed) */ gt() { ccall("@gt"); } /* test for greater than or or equal (signed) */ ge() { ccall("@ge"); } /* test for less than (unsigned) */ ult() { ccall("@ult"); } /* Test for lees than or equal to (unsigned) */ ule() { ccall("@ule"); } /* test for greater than (unsigned) */ ugt() { ccall("@ugt"); } /* test for greater than or equal to (unsigned) */ uge() { ccall("@uge"); } call("@uge"); }  { ccall("@uge"); } ) { ccall("@uge"); }  { strcpy(buff,"Err the clear the primary register */ /* change to not condition */ nlogical() { call("@nlog"); } /* test for logical and */ land() { ccall("@land"); } /* test for logical or */ lor() { ccall("@lor"); } /* test for equal */ eq() { ccall("@eq"); } /* test for not equal */ ne() { ccall("@ne"); } /* test for less than (signed) */ lt() { ccall("@lt"); } /* tet for less than or equal to (signed) */ le() { ccall("@le"); } /* test for greater than (signed) */ gt() { ccall("@gt"); } /* test for greater than or or equal (signed) */ ge() { ccall("@ge"); } /* test for less than (unsigned) */ ult() { ccall("@ult"); } /* Test for lees than or equal to (unsigned) */ ule() { ccall("@ule"); } /* test/********************************************************/ /* */ /* copyright(c) 1981 By Mike Bernson */ /* */ /* submit command for cpm 2.x */ /* read input file and convert to $$$.sub with */ /* $1-$9 to pram from comand line and convert */ /* ^a to control character */ /* */ /********************************************************/ #define ERROR -1 /* error return value */ #define LF 0x0a /* value used for line feed */ #define CR 0x0d /* value used for return */ #define ENDFILE 0x1a /* value used for end of file */ char infcb[36]; /* pointer to input fcb */ char outfcb[36]; /* output fcb */ char *prt; /* just a spare pointer */ int inpoff; /* input buffer offset */ int outoff; /* output buffer offset */ int line; /* current line number */ char inbuff[128]; /* input buffer */ char outbuff[17000]; /* output buffer */ /********************************************************/ /* */ /* main */ /* */ /* function: open input and output data file */ /* also process data and output */ /* data to $$$.sub and set loc 8 ff*/ /* */ /* Date written: Jan 28, 1981 by Mike Bernson */ /* */ /********************************************************/ main(argc,argv) int argc; /* number of arg on command line +1 */ int argv[]; /* pointer to each arg on command line */ { char filename[132]; /* hold input file name */ strcpy(filename,argv[1]); strcat(filename,".sub"); if (open(infcb,filename) == ERROR) { infcb[0]=1; /* try drive a */ if (bdos(15,infcb) == 0xff) { puts("Input file not found"); exit(); } } for(line=argc; line<12; argv[line++]=""); inpoff=128; line=1; /* process input file and write output */ while(1) { doinput(argv+1); dooutput(); } } /********************************************************/ /* */ /* doinput */ /* */ /* function: to proccess input buffer and */ /* change $1-$9 to text needed and */ /* "convert '^'a to control char */ /* */ /* date written Jan 28, 1981 By Mike Bernson */ /* */ /********************************************************/ doinput(parm) int parm[]; { int current; /* current character working on */ outoff=1; /* set output offset to zero */ /* pick up 1 line of input */ while(outoff<120) { /* get charcter and see what need to be done */ switch(current=getbuff()) { /* end of file */ case ENDFILE : done(); /* '$' can be $1-$9 or $$ */ case '$' : if ((current=getbuff())=='$') { putbuff('$'); break; } if (current>='0' && current<='9') { prt=parm[current-'0']; while(*prt) putbuff(*prt++); break; } error("Invalid parmeter"); break; /* check for control chraracter */ case '^' : current=getbuff(); if (current>='A' && current<='Z') putbuff(current-'@'); else error("Invalid control character "); break; /* check for end of line */ case CR :  return; /* line feed ingore */ case LF : break; /* must be a viald cjaracter put in output buffer */ default: putbuff(current); }} } /********************************************************/ /* */ /* dooutput */ /* */ /* function: to write output record to disk */ /* put character count at offset 0 */ /* */ /* date written: dec 16, 1980 By Mike Bernson */ /* */ /********************************************************/ dooutput() { outbuff[(line-1)*128]=outoff-1; /* character count */ /* zero buffer till end */ while(outoff<128) putbuff(0); if (++line>148) error("Too many lines"); } /********************************************************/ /* */ /* done */ /* */ /* function: to write output buffer out */ /* in backward record format */ /* */ /* Date written: Dec 16, 1980 By Mike Bernson */ /* */ /********************************************************/ done() { char temp; /* create output file on disk a */ if (open(outfcb,"A:$$$.SUB") != ERROR) outfcb[32]=outfcb[15]; else if (create(outfcb,"A:$$$.SUB") == ERROR) { puts("Output File not created"); exit(); } while(--line) { if (write(outfcb,outbuff+128*(line-1),1) == ERROR) { error("Disk is Full"); exit(); } } close(outfcb); prt=8; *prt=255; exit(); } /********************************************************/ /* */ /* getbuff */ /* */ /* function: to getn next character from */ /* from input buffer and convert */ /* to upper case */ /* */ /* date written: Dec 16, 1980 by Mike Bernson */ /* */ /********************************************************/ getbuff() { if (inpoff == 128) { if (read(infcb,inbuff,1) == ERROR) return ENDFILE; inpoff=0; } return toupper(inbuff[inpoff++]); } /********************************************************/ /* */ /* putbuff */ /* */ /* function: to write chracter to output */ /* buff and inc offset */ /* */ /* input: character to write */ /* */ /* date written: Dec 16, 1980 By Mike Bernson */ /* */ /********************************************************/ putbuff(data) char data; { outbuff[(line-1)*128+outoff++]=data; } /********************************************************/ /* */ /* error */ /* */ /* function: to print error message follow */ /* by at line (line number) */ /* */ /* date written: dec 16, 1980 By Mike Bernson */ /* */ /********************************************************/ error(msg) char *msg; { puts(msg); /* print error message */ puts(" at line "); /* print "at line" */ outdec(line); /* print line number */ exit() ; /* end back to cpm */ } /********************************************************/ /* */ /* outdec */ /* */ /* function: to output number in dec from */ /* to console */ /* */ /* date written: Dec 16, 1980 By Mike Bernson */ /* */ /********************************************************/ outdec(number) int number; { char zero,num; int place; place=10000; zero=0; while(place>0) { num=number/place+'0'; /* get current digit */ if (num != '0' || place ==1 || zero) { zero=1; /* set zero suppress */ putch(num); /* print character */ } number=number % place; place=place/10; } } place=place/10; } } 10; } } ; place=place/10; /* date written: dec 16, 1980 By Mike Bernson */ /* */ /********************************************************/ error(msg) char *msg; { puts(msg); /* print error message */ puts(" at line "); /* print "at line" */ outdec(line); /* print line number */ exit() ; /* end back to cpm */ } /********************************************************/ /* */ /* outdec */ /* */ /* function: to output number in dec from */ /* to console */ /* */ /* date wri#/********************************************************/ /* */ /* copyright March ,1981 By Mike Bernson */ /* */ /* program used to set and display time on QT */ /* s-100 clock calendar board */ /* */ /* command format: */ /* time [hh:mm:ss] [am,pm] [mm/dd/yy] [day] */ /* */ /********************************************************/ #define CONTROL 129 /* address of control port */ #define ADDRESS 129 /* address port on clock board */ #define DATA 130 /* data port for clock board */ #define HOLD 0x10 /* bit for hold line on clock */ #define READ 0x20 /* bit for read line on clock */ #define WRITE 0x10 /* bit for write line on clock */ #define TRUE 1 #define FALSE 0 main(argc,argv) int argc; char *argv[]; { char string[80],*check; int am; /* if no arg on command line display time */ if (argc==1) { puts("Current time is "); puts(time_display(string)); exit(); } am=-1; check=argv[2]; if (argc==3) { if (isalpha(check[0])) { if (check[0]=='A') am=0; if (check[0]=='P') am=1; if (am != -1 && (check[1] !='M' || check[2] != 0)) { puts("Bad command line must be "); puts(" (HH:MM [AM || PM]) [MM/DD/YY]"); exit(); } } } /* set time value from input */ if (time_set(argv[1],am)) exit(); puts("\nTime set to ");puts(time_display(string)); exit(); } /********************************************************/ /* */ /* time_display */ /* */ /* function: to build a string for current */ /* time in format hh:mm:ss [am,pm] */ /* */ /* */ /* input: string to put current time in */ /* */ /* return: pointer to input string */ /* */ /* date written: March 8, 1981 By Mike Bernson */ /* */ /********************************************************/ time_display(string) char *string; { char clock[6],*temp1; int temp,am; /* set hold on clock and read clock time */ outp(CONTROL,HOLD); temp=-1; while(++temp<6) { outp(DATA,temp | READ); clock[temp]=inp(DATA); } outp(CONTROL,0); am=-1; if ((clock[5] & 8) == 0) am=(clock[5] & 4)/4; clock[5] &= 3; /* convert time to printable string */ temp1=string; temp=6; while(--temp >= 0 ) { if (temp==1 || temp==3) *temp1++=':'; *temp1++=clock[temp]+'0'; } /* add am or pm if needed */ switch(am) { case -1 : strcpy(temp1," "); break; case 0 : strcpy(temp1," AM "); break; case 1 : strcpy(temp1," PM "); break; } return string; } /********************************************************/ /* */ /* time_set */ /* */ /* function: to set the time from input */ /* */ /* input: string that has time to set */ /* am/pm/24 switch */ /* */ /* date_written: Mrach 8, 1981 By Mike Bernson */ /* */ /********************************************************/ time_set(string,am) char *string; int am; { char clock[13]; int temp; /* build array to send to clock for time */ for(temp=5; temp>=2; temp--) { if (temp==5 && string[1] == ':') { clock[5]=0; continue; } if (temp==3) if (*string++ != ':') { puts("Bad time format missing \":\""); puts("(HH:MM [AM || PM])"); return TRUE; } if (!isdigit(*string)) { puts("Bad digit in time format"); return TRUE; } clock[temp]=(*string++) & 0x0f; } clock[1]=clock[0]=0; if (*string !=0) { puts("Bad time format too many digits (HH:MM [AM || PM])"); return TRUE; } /* check to see that ten second and tens of hours less then 7 */ if (clock[3]>5) { puts("Bad tens of minutes digit"); return TRUE; } /* check hours dights */ temp=clock[5]*10+clock[4]; if ((temp<1 || temp>24) && am<0) { puts("Bad hours range is 1-24 only"); return TRUE; } if ((temp<1 || temp>12) && am>=0) { puts("Bad hours range is 1-12 only"); return TRUE; } /* set 24 hour mode and am/pm bits */ if (am<0) clock[5] |= 8; else clock[5] |= am * 4; /* wait for user to hit return before setting time */ puts("Hit any key to set clock ");bios(3,0); /* send data to clock */ for(temp=5; temp>=0; --temp) { outp(DATA,temp); outp(ADDRESS,clock[temp] | HOLD); outp(DATA,temp | WRITE); outp(DATA,temp); } outp(CONTROL,0); return FALSE; }  }  LSE; }  8ë)8ë))8ë))temp]=(*string++) & 0x0f; } clock[1]=clock[0]=0; if (*string !=0) { puts("Bad time format too many digits (HH:MM [AM || PM])"); return TRUE; } /* check to see that ten second and tens of hours less then 7 */ if (clock[3]>5) { puts("Bad tens of minutes digit"); return TRUE; } /* check hours dights */ temp=clock[5]*10+clock[4]; if ((temp<1 || temp>24) && am<0) { puts("Bad hours range is 1-24 only"); return TRUE; } if ((temp<1 || temp>12) && am>=0) { puts("Bad hours range is 1-12 only"); return TRUE; } /* set 24 hour mode and am/pm bits */ if (am<0) clock[5] |= 8; else$/*-!---!---!---!---!---!---!---!---!---!-----------------------------*/ /* WordStar ruler line; use ^OV,^OF,^OT */ #define TRUE 1 #define FALSE 0 #define END "$" #define CLS 26 int right, close, wrong; char *skip; main() /* word puzzle game */ /* by Jim Woolley, FOG Disk Librarian, 12/82 */ /* an exercise in small-c */ { int puzzle[12], answer[50]; right=close=wrong=0; skip="\n\n\n\n\n\n"; inpuzzle(puzzle); inanswer(answer); game(puzzle,answer); result(); } inpuzzle(p) /* define word puzzles */ int p[]; /* char pointer array did not work */ { p[0]=" c c\n garage\n r r\n"; p[1]=" c\n o\n m\n i\n c\n"; p[2]=" 1234567\n Dracula\n"; p[3]=" drinks\n house\n"; p[4]=" oo y\n g db e\n"; p[5]=" ieieceiie\n"; p[6]=" CLAMS\n SHe\n"; p[7]=" t rn\n"; p[8]=" HAir____\n"; p[9]=" mirror\n mirror\n mirror\n mirror\n"; p[10]=" grnese\n grenes\n grseen\n grness\n"; p[11]=END; } inanswer(a) /* define answers */ int a[]; /* char pointer array did not work */ { a[0]="TWO";a[1]="CAR";a[2]="GARAGE";a[3]=END; a[4]="STAND";a[5]="UP";a[6]="COMIC";a[7]=END; a[8]="COUNT";a[9]="DRACULA";a[10]=END; a[11]="DRINKS";a[12]="ON";a[13]="THE";a[14]="HOUSE";a[15]=END; a[16]="WAVING";a[17]="GOODBYE";a[18]=END; a[19]="I";a[20]="BEFORE";a[21]="E";a[22]="EXCEPT";a[23]="AFTER";a[24]="C"; a[25]=END; a[26]="CLAMS";a[27]="ON";a[28]="THE";a[29]="HALF";a[30]="SHELL";a[31]=END; a[32]="NO";a[33]="U";a[34]="TURN";a[35]=END; a[36]="RECEDING";a[37]="HAIRLINE";a[38]=END; a[39]="FULL";a[40]="LENGTH";a[41]="MIRROR";a[42]=END; a[43]="MIXED";a[44]="GREENS";a[45]=END; } game(puzzle,answer) /* play the game */ int puzzle[], answer[]; { int i, ans, correct, cnt, j; char guess[128]; putch(CLS); puts(skip); puts("\nWord Puzzle, by Jim Woolley, 12/82\n\n"); puts("\nI will display word puzzles.\n"); puts("You guess what they are."); ans=0; for (i=0; test(puzzle[i]); i++) { header(); puts(puzzle[i]); puts("\n\nWhat do you think this is?\n"); gets(guess); convert(guess); cnt=0; correct=0; while (test(answer[ans])) { if (strpos(guess,answer[ans])) correct++; ans++; cnt++; } if (correct==cnt) { puts("\nVery good!"); right++; } else if (correct>0) { puts("\nGood try."); close++; } else { puts("\nWrong."); wrong++; } puts(" The answer is"); for (j=(ans-cnt); j0) { num=number/place+'0'; /* get current digit */ if (num != '0' || place ==1 || zero) { zero=1; /* set zero suppress */ putch(num); /* print character */ } number=number % place; place=place/10; } } =1; /* set zero suppress */ putch(num); /* print character */ } number=number % par *sp; { while (*sp != '\0') { *sp=toupper(*sp); sp++; } } result() { header(); puts("You had "); outdec(right); puts(" correct, "); outdec(close); puts(" close, and "); outdec(wrong); puts(" wrong. Thank you."); puts(skip); } /********************************************************/ /* */ /* outdec */ /* */ /* function: to output number in dec from */ /* to console */ /* */ /* date written: Dec 16, 1980 By Mike Bernson */ /* */ /********************************************************/ outdec(number) int number; { char zero,num; int place; place=10000; zero=0; while(place>0) { num=number/place+'0'; /* get current digit */ if (num != '0' || place ==1 || zero) { zero=1; /* set zero suppress */ putch(num); /* print character */ } number=number % p%WORDPUZL.C is the source file for a word puzzle game found in the FOG games library. It was written primarily as an exercise in small-c, the C language compiler found in the FOG language library. CC SUBLCL SUBMFUNCTIONCRLNSTDLIB TXTOPQC1 C QRSTUVWXYZ[\C2 C b]^_`abcdefghiC3 C %jklmnC4 C *opqrstC5 C 7uvwxyz{C6 C |}~C7 C j€�‚ƒ„…†‡ˆ‰Š‹Œ�C8 C 8Ž��‘’“”C9 C •–—˜SUBMIT C 4™š›œ�žŸTIME C # ¡¢£¤WORDPUZLC !¥¦§¨©WORDPUZL$$$åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå This is the release date of the disk. C3 C €j€C4 C €oC5 C €u€C6 C €|€C7 C €€5C8 C €ŽC9 C €• SUBMIT C €™TIME C € €WORDPUZLC €¥€WORDPUZLDOC €ªååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååC1 .C EC A6 10368 81 C2 .C 1C 9B 12544 98 C3 .C 68 86 4736 37 C4 .C 9C D6 5376 42 C5 .C 9A 47 7040 55 C6 .C DE 36 3712 29 C7 .C 25 2E 13568 106 C8 .C C4 91 7168 56 C9 .C 48 55 3328 26 SUBMIT .C F2 B5 6656 52 TIME .C 05 7D 4480 35 WORDPUZL.C F0 CE 4224 33 WORDPUZL Fog Library Disk FOG-CPM.112 Copyright (1986) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. DISK 1 of 2. Small 'C' compiler. Filename Description -07-00 .86 This is the release date of the disk. -CPM112 .DOC This is the description of the disk contents. C1 .COM 3436 32K [Small 'C' 1 of 32] Mike Bernson version of a Small 'C' compiler. Written in BDS 'C' 1.41. Includes samples. ASSEMBLE.COM C262 21K [Small 'C' 2 of 32] LINK .COM FEE0 13K [Small 'C' 3 of 32] C .DEF AF19 6K [Small 'C' 4 of 32] C .SUB 7EC2 1K [Small 'C' 5 of 32] CC .SUB DED1 1K [Small 'C' 6 of 32] CL .SUB C192 1K [Small 'C' 7 of 32] FUNCTION.CRL A7F7 1K [Small 'C' 8 of 32] STDLIB .TXT 7CA2 3K [Small 'C' 9 of 32] C1 .C ECA6 11K [Small 'C' 10 of 32] C2 .C 1C9B 13K [Small 'C' 11 of 32] C3 .C 6886 5K [Small 'C' 12 of 32] C4 .C 9CD6 6K [Small 'C' 13 of 32] C5 .C 9A47 7K [Small 'C' 14 of 32] C6 .C DE36 4K [Small 'C' 15 of 32] C7 .C 252E 14K [Small 'C' 16 of 32] C8 .C C491 7K [Small 'C' 17 of 32] C9 .C 4855 4K [Small 'C' 18 of 32] SUBMIT .C F2B5 7K [Small 'C' 19 of 32] Sample file that allows nested submits. TIME .C 057D 5K [Small 'C' 20 of 32] Sample file to get and/or set the date. WORDPUZL.C F0CE 5K [Small 'C' 21 of 32] Sample game. WORDPUZL.DOC 54F6 1K [Small 'C' 22 of 32] D. FILE ("&diskf.cheklist.crc") DELE FILE &diskf.cheklist.crc ENDIF SELE B STOR diskf-fn-"."-ft TO malt STOR SUBST(ft,1,2) TO mdate SET ALTE TO &malt SET ALTE ON ? filedesc SET ALTE OFF SET ALTE TO SELE A STOR diskf-"-"-SUBST(dfile,5,3)-"&mdiskno"-".DOC" TO malt SET ALTE TO &malt SET ALTE ON DO WHILE diskno="&mdiskno".AND. .NOT. EOF() IF diskno="000" IF dfile="FOG-DOS" ? " & This is the release date of the disk. CLAS6 FON ð{4ÍF¹LETTERS êu[š*CFONT EXE °™\)$fÛCONVPRF EXE §“ƒ`$f™DELFONTSHP »Pn Ì$DOWNLOADEXE %t^'¦BDSKSPACEEXE æh²�,l%EFONT EXE ƒ\š,¨JFANCFONTPRO to‘u(óFFCONFIGEXE ˜]e@ as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. New file compression/extraction programs. Conservation of disk space is of primary interest to all users, especially when archival copies of files and programs are involved. Crunch and Archive are capable of saving as much as 70% (especially for fixed length data files). Unfortunately, the designers of these programs cannot all agree on the compression technique. The result is some incompatibility between similar but different programs or even different versions of the same program. The major difference between CRunch and ARChive is two-fold. ARChive compresses files and collects them under a single filename (usually using the extension .ARK for CP/M files and .ARC for MS-DOS files) while CRunch only compresses individual files (and replaces the middle character of the extension with a "Z"). ARChive, both because it collects files together and because there are many utilities which ease selective extraction is preferred to CRunch. The problem is that we cannot yet easily (and quickly) create ARChive files on CP/M systems -- it must be done on an MS-DOS computer. PLEASE do not use CRunch on files which you will submit to the FOG disk library or the FOG publications. Only upload CRunched files to a remote system if you have gotten approval from the SysOp -- many do not allow CRunched files on their systems. Filename Description -01-19 .88 This is the release date of the disk. -CPM114 .DOC This is the description of the disk contents. UNARC .COM FF9D 5K ver. 1.6 [UnARChive utility 1 of 6] Restores files compacted with the MS-DOS ARChive utilities. Note that, like crunched files, not all versions use the same compression technique and can therefore be incompatible with each other. This version extracts all ARC and ARK files know at the time of the release of this disk. ASseMbler source (SLR or M80) is included in an ARC file. UNARC .DOC A3CE 31K ver. 1.6 [UnARChive utility 2 of 6] UNARC .MSG 895C 7K ver. 1.6 [UnARChive utility 3 of 6] UNARCA .COM FE6F 6K ver. 1.6 [UnARChive utility 4 of 6] UNARCOVL.ASM 8562 14K ver. 1.6 [UnARChive utility 5 of 6] UNARC16S.ARK AA6E 67K ver. 1.6 [UnARChive utility 6 of 6] READ .ME 2K [UNARC16S.ARK 1 of 2] UNARC .Z80 123K [UNARC16S.ARK 2 of 2] UNCR .COM 5D9D 7K ver. 2.4 [UnCRunch/Crunch 1 of 6] Uncompact files which have been compressed with CRUNCH (also on this disk). Files which have been compressed with this type of program have a "Z" as the middle letter of the file extension and are often confused with source code files which have not be compressed. Note that there are several variations of the crunch algorythm and that they are not always compatible with each other. CRUNCH .COM 9650 6K ver. 2.4 [UnCRunch/Crunch 2 of 6] Creates compressed files with a "Z" as the middle letter of the file extension. Companion to UNCR (also on this d'isk). USAGE24 .DOC 748F 7K ver. 2.4 [UnCRunch/Crunch 3 of 6] NOTES24 .DOC EF7B 9K ver. 2.4 [UnCRunch/Crunch 4 of 6] CRUN-OVL.ASM E363 8K ver. 2.4 [UnCRunch/Crunch 5 of 6] PATCH24 .DOC 869A 8K ver. 2.4 [UnCRunch/Crunch 6 of 6] not always compatible with each other. CRUNCH .COM 9650 6K ver. 2.4 [UnCRunch/Crunch 2 of 6] Creates compressed files with a "Z" as the middle letter of the file extension. Companion to UNCR (also on this dåååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå