CP/M 2.2€ DOUBLE-D�DISKETTE^€CPM FROM€NORTH * €STAR €--------€-SYSTEM-†-TRACKS-†BIOS †USER †CPM CCP †CPM BDOS †--------€DIR.SEC1ƒDIR.SEC2ƒDIR.SEC3ƒDIR.SEC4ƒ--------€CPM DATA‡DATASEC1‡DATASEC2‡DATASEC3‡DATASEC4‡........‡ C1 COM€ �‚C1 COMu��‘’“›œ�žŸ ¡¢£¤CHAIN C DEF/C SUBC2 C b !"#$C3 C %%&'()C4 C **+,-./C5 C 70123456C6 C 789:C7 C j;<=>?@ABCDEFGHC8 C 8IJKLMNOC9 C PQRSCC SUBTCL SUBUASSEMBLECOM€VWXYZ[\]^_`abcdeåååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå*ùÍKÍžÃ+€ža{Ô°Ã'Ã+ÃFÃŽÃrÃÃû Í– þ8Ê{ æÄ‚w#w#wÑÁÉÍÆÃÞá^#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þ!ÉþaØþ{ÐÖ Éþ Ê þ Ê ÉÅÍ`·OÂE×!·æyÂ6ÁÉÕ$Ñ Â-7ÁÉÍrÚBÖo&))T])))ë!·yÁÉÕÅõå€ÍáñÁÑÉ¡å~#fo´Ê�> +͆#~·Âtá##ÃhþaØþ{ÐÖ Éá!€p»!Ö*w#œÁ:þ**ʳ*ù!åÃÖÕÅÍÑÕÍÁÑ·Êø€ÍÃ!€ëÃÙ (5CRou~„•¢®EXECÌFPRINTÆEXIÔKà ÃÃÃÍ7*¡^#V#z³Â+V+^+ÕÂ*ŸåÍ!=å!åÍà Broken pipe &-08;1Í ë*³åÚ&+ë*µ|/g}/o#9Í*Ò&ë#"³áÉáÃz¼ØÀ{½É Í "µÉÍ7Å*Ÿ"�*£"‘ë*¡"“Ík"•ÁÉ*•ë*�6 #ppear? à ÃÄ$ÃÒ$Ã5xà %ÃarÃŒ+ÅÍ !"®¤!j åÍ Ñ!ú£åÍ ÑÍ |µÂA ÁÉ!άå!ú£åÍ ÑÑ"®¤#|µÂe !"®¤!| åÍ ÑÍ ÁÉOutput filename? Open failureÛ ÃÄ$ÃÒ$Ã5xà %ùrÅ!"¬¤*¬¤|µÂ ÍŒ *ª¤|µÊ¸ à ! åÍ� Ñ!ú£åÍ’ ÑÍ• |µÂÙ !"ª¤Ã !"²¤!¤å!ú£å͘ ÑÑ"¬¤#|µÂ !"¬¤! åÍ� Ñâ ÍŒ ÁÉInput filename? Open failureÃM Ãd,ÃÎ ÃZÃÛ,Ã�õÃ0-Ãuà ÃøÃâ-Å*ª¤|µÂþ !å! åÍ, ÑÑ|µÊv !åÍ/ ÑÍ2 Ãø !å! åÍ, ÑÑ|µÊ– !åÍ/ ÑÍ2 Ãø ! åÍ5 Ñ|µÊ© Í8 Ãø ! åÍ5 Ñ|µÊ¼ Í; Ãø ! åÍ5 Ñ|µÊÏ Í> Ãø ! åÍ5 Ñ|µÊâ ÍA Ãø !' åÍ5 Ñ|µÊõ ÍD Ãø ÍG ÍJ ÃN ÁÉASSEMBLECOM!fghijLINK COMbklmnopqrstuvwC1 C Dxyz{|}~€åC CCC �‚SUBMIT C 1ƒ„…†‡ˆ‰FILELINKSUBŠCOMPILE SUB‹STDLIB TXTŒ�ŽåCLINK COM$��‘’“TIME C #”•–—˜RUNTIME TXT™šåC1 COMP›œ�žŸ ¡¢£¤åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå#É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#ÍGþ.¶ÍƯww#Ã?Åþ*>?ÊéÍñÚçw#ÂÇÁÍñØÃÞ> w#ÂéÁÉÍþ.7Èþ:7Èþ7Èz³ÂÉ¥Í7Å:¡O:£GPYÍ|:¥O:§GÍ|`iÍ#ÁÉz”Í þÒ8{•Í þÒ8ÉÍKÍ|ÕPYÍ#ãÍ#ëáÉåÕ|’æÊ^|ºÚ]Ã^%}“æÊo}»ÚnÃo-|‚·G}ƒ·OÑáÉÅå>ÍÛ>YÍÛ> €ÍÛ> ÃÈø$ÃbÃ É ø^Ã) Ã. Ãå ç Ãÿ íaÔ à xÅ€ë"p—!,Í?å!€Ñ"r—t—ë"<˜!"¼¤"¶¤"¦¤"®¤"°¤"¬¤"ª¤"¨¤"¢¤"ž¤" "ø£!"¸¤"º¤Í¡" ¤Í¤ͧͪÍ­ͰͳͶ͹ͼÍ¿ÍÂ*¨¤|µÊT!XåÍÅÑÁÉÁÉa:$$$.subÃtÃÄ$ÃÒ$Ã5xÃ)rà %Å!þÿ9ùDMÍe!·åÍhÑ!æåÍhÑ!ú£åÍkÑÍqåÍnÑYÍå®!"¶¤ë!9ùëÁÉ * * * small-c version 1.1 compiler * * * Do you wish to c-text to acharint#asm#include#define#ifndef#ifdefÃC Ã%Ã+.ÃÂaÃ<.Ãh.Ã�.Å!üÿ9ùDM* |µÂV ÃÜ * ¤åÍ1 ÑÍ4 ! ¯w#wÍ�å* ÑÍúÒÖ Í7 `i6 #6`i^#Vr+sz³ÊÓ ! ^#Vr+së>˜n&åÍ: ÑÍ�|µÊ Í�å* ÑÍúÚÈ Í= ÃÓ !,åÍ@ Ñ Ãi !" ë!9ùëÁÉÃú Ã×aÃý.Ã+.ÃbÃ<.Ãh.Å!þÿ9ùDM!ž åÍè Ñ€ë"¾¤*¾¤å*p—ÑÍìÒ• !¾¤~#fo n}þʈ *¾¤åÍë ÑÍî Íñ !¾¤~#fo n&ÿ|¢g}£oå!¾¤~#fon&ÿ|¢g}£oÍóÑë`is#rÍ�åÍô ÑÍ÷ *¾¤"¾¤Ã ë!9ùëÁÉ@globalsí ÃbÅ!þÿ9ùDM€`is#rÍ�å*p—ÑÍåÊö `i~#fo n}·Âå Í�åͪ ÑÍ�ë`is#rý ë!9ùëÁÉà Ì+Ãh.ÃKbÃ<.Ãý.Å*¦¤|µÊ" !M åÍ Ñ*º¤|µÂ2 !e åÍ ÑÍ Í *¨¤åÍ Ñ!| åÍ ÑÍ ÁÉmissing closing bracketmissing closing #endif errors in compilation.à ÃÿrÃ; identifierÃ$Ãâ-ÈJä%ÃŒ+ÃÄ$Ã''ÃR&Å!óÿ9ùDMÍ! åÍÑ|µÂF!"º¤Ã„`iåÍÑ|µÂ]!�åÍÑÍ`iåÍÑ|µÂu`iåÍ!Ñ|µÊ~!"º¤Ã„!"º¤ë! 9ùëÁÉinvaild identifieròÃÛ,ÛÃŒ+Ã\bÃíuÅ!úÿ9ùDM!åÍ£Ñ|µÊ4! ^#Vr+sͦë`is#rz³Ê$! n}þÂÿÍ�åÍ�Ñë`is#rÃ!! 6! n}þÂ!Í�åÍ�Ñë`is#rÃ1! 6`i6#6Ãe! n}þÂI`i6#6Ãe! n}þÂ^`i6#6Ãe`i6#6! n}þÊ}þÊÉþÊÃd*p—å!,Í?å!€ÑÑÍìÚ¥!åÍ©Ñ!Ãú*p—ë! s#r*p—"p—Í�ë! s#rÃd*¢¤åÍ�ÑÍúåͬÑ"¢¤*¢¤ë! s#r*r—å!a—ÑÍìÚ!"åÍ©Ñ!+ÃÄ$ÃÛ,ÃR&÷&õcÃíuÃð(Ãâ-Ã*/ÃA%Ãd,ÃlÃZÃsÃ\bÃåcÃ. ø$Å!õÿ9ùDM`iåÍûÑ|µÂY!÷åÍþÑÍÃî!åÍÑ|µÂt!åÍþÑÍÃî`iåÍÑë! s#rz³ÊÚ! ~#fo n}þÊ¥`iåÍ ÑÃ×! ~#fo n}þÂÂ`iåÍ ÑÃ×! ~#fo 6`iåÍ ÑÃ�ÍMpå!,Í?å*ÑÑÍìÚ!9åÍþÑÉÍMpë! s#r*på~#foëás#r`iåÍ� åÍÑÑ! ~#fo 6! ~#fo å! ~#fo sás! ~#foå! ~#fo å! ~#fo sásás`iåÍ Ñ*¤$¯w#w!UåÍÑ|µÂ`iåÍûÑ|µÊÊÍM¤$##å*¤$Ñs#rÃÕ!WåÍþÑÍÍ!måÍMš$å*ú#ÑåÍÑÑ|µÂ !oåÍÑ|µªÃß!Ã8Í�|·ò)!TåͤÑÍ�Íúë`is#r!jåÍ­ÑÍ�Ã8ë!9ùëÁÉ]must be constantnegative size illegal]Ã�ÃÛ,à %Ãz%ä%Ã'&Ã''÷&àÃA%ÃŒ+Å!òÿ9ùDM! ¯w#wÍM¤$|µÂªÃW!`åÍoÑ|µÊë! 6#6! ^#Vr+sÍr*ÍåÂè! ^#Vr+sÍuÃËÃô! 6#6`iåÍxÑ|µÂÍ{`iåÍ~Ñ|µÊ`iåÍ�ÑÍ� åÍ� å!åÍ�å`iåÍ„ÑÑÑÑÑ͇|µÊ?ÃW!båÍoÑ|µÂT!dåÍŠÑÕë!9ùëÁÉ*,expected commaãà %Ãd,þmÃZÃÛ,ÜÃèÃÒÉÃÎÃÎ"Ãö"ÃH#Ã�ç7ÅÍv|µÂ»ÍMª$|µÊ»ÁÉÃW!å!`åÍyÑÑ|µÊÛ!åÍ|ÑÍÃW!å!eåÍyÑÑ|µÊû!åÍ|ÑÍÃW!iåÍÅ!øÿ9ùDMÍMrë`is#rÍM¢$ë! s#rÍëë! s#rÍ�åÍîÑÍñÍ�åÍôÑå*¢$Ñs#rÍ�å*rÑs#r!å!ÍåÍ÷ÑÑ|µÂzÍ�åÍúÑÃÄÍëë! s#rÕÍýÑÍ�åÍúÑÍñÍ�åÍôÑå*¢$Ñs#rÍ�å*rÑs#rÍ�åÍúÑë!9ùëÁÉelseÃíø$æ)Ã�)Ã"LÃsÃúcÃ\bÃ.*Å!ôÿ9ùDMÍMrë`is#rÍM¢$ë! s#rÍÕë! s#r! s#rÍÕë! s#r`iåÍØÑÍ�åÍÛÑÍ�åÍÞÑÍáÍ�åÍäÑÍ�åÍÛÑÍ�å*rÑs#rÍ�åÍçÑå*¢$Ñs#rÍêë! 9ùëÁÉðø$æ)Ú#Ã.*ç7Ãã#Ã�)Ã)dÃúcÃ($ÃsÃ\bÅ!òÿ9ùDMÍMrë`is#rÍM¢$ë! s#rÍŒë! s#rÍŒë! s#rÍŒë! s#rÍŒë! s#r`iåÍÍ»"ÍåÂ! 6";! ¯w#wÍ� ÍùÒbÍ»|µÊbÍ»å! nÑ&ÍåÊb! ^#Vr+sëë`iåÍ»ëás;ÃÍ� ë`i6! nåÍ»ÑÍåÊŸ! n}þ ‘Í»|µÊŸ!åÍÁÑÍÄÃøÍ� |µÂ¶!åÍÁÑÍÄÃø!"´¤*°¤|µÊÒ!=åÍÁÑÍÄÃø!Ȩå`iåÍÇÑÑ"°¤#|µÂõ!XåÍÁÑ!"°¤ÍÄë!"9ùëÁÉinvalid file name for includemissing file name for includenested include not allowedOpen failure on include fileÃ�Ãâ-ÈJä%ÃŒ+ÃÄ$Ã''ÃR&Å!óÿ9ùDMÍx! åÍ{Ñ|µÊ¯!"º¤Ãð`iåÍ~Ñ|µÂÉ!ùåÍ�ÑÍ„Ãð`iå͇Ñ|µÂá`iåÍŠÑ|µÊê!"º¤Ãð!"º¤ë! 9ùëÁÉinvalidÃú*r—ë! s#r*r—"r—Ãd*¤¤ë! s#r*¤¤++"¤¤*r—å!a—ÑÍìÚL!>åÍ©Ñ!Ãú*r—ë! s#r*r—"r—ÃdÍ� åÍ�åͯÑÑ! ~#fo å! nëás! ~#fo å! nëás! ~#fo å! nëás! ~#fo åÍ�ëás! ~#foåÍ�Íåëás! ~#fo åÍ�ëás!Ãúë!9ùëÁÉ[global symnol table overflowlocal symbol table overflowlocal symbol table overflowÃcÃÛ,ÃŒ+Å!{åÍ]Ñ|µÂy!}åÍ`ÑÁÉ;missing semicolonáÃ�'ÃÛ,Ãý.Ãh.ÃÄ$Å*¸$¯w#wÍ’!ðåÍ•Ñ|µÊÀÃßÍMª$|µÊÍÃß*ú#å͘ÑÍ›íÍž*¸$6#6ÁÉ#endasmÃ7ä%Ì !qåÍþÑÍ|µÊÃÛ!,Í?å*Ñå*rÑs#r*¢$¯w#wÍM¤$|µÊ›!å!€åÍÑÑ|µÊm!åÍ"ÑÍ%Ø!å!…åÍÑÑ|µÊ�!åÍ"ÑÍ%Ø!‰åÍþÑÛÃCÍ(Íåʲ!åÍ+ÑÍ.*¢$¯w#w!,Í?å*Ñå*rÑs#rÍ1Í4å* $Ñs#rë! 9ùëÁÉillegal function or declaration(illegal function or declarationgobal symbol table overflow)illegal argument name),expected commacharintwrong number argsðÃÛ,Ã.KÃŒ+à %Ãz%ÃI)Å!þÿ9ùDM!AåÍžÑ|µÊË!Ã8`iåÍ¡Ñ|µÂ !CåͤÑͧ,ÍåÊͧ;ÍåÊͧ|µÊÍ‚Ñ|µÊÍ…ÃW!å!kåÍyÑÑ|µÊ2͈*¼$6#6ÃW!å!nåÍyÑÑ|µÊVÍ‹*¼$6#6ÃW!å!tåÍyÑÑ|µÊzÍŽ*¼$6#6ÃW!å!xåÍyÑÑ|µÊžÍ‘*¼$6#6ÃW!å!åÍyÑÑ|µÊÅÍ”Í*¼$6#6ÃW!å!†åÍyÑÑ|µÊìÍ—Í*¼$6#6ÃW!å!ŒåÍyÑÑ|µÊÍšÍ*¼$6#6ÃW!•åÍ‚Ñ|µÊ#ÃW!—åÍ‚Ñ|µÊEÍ�Í*¼$6#6ÃWÍ Í*¼$6 #6ÍM¼$ÁÉÁÉcharint{ifwhileforswitchreturnbreakcontinue;#asmÃ¥ÃÛ,ÃsÅ*¦$^#Vr+s!æåÍŸÑ|µÂÖÍMª$|µÊÐÁÉÃÓÍ¢ô*¦$^#Vr+sÁÉ}Ãø$Ã"LÃsÃ\bÃd,Ã�)Ãúc�ÑÍ’|µÊÍ•ÃÅ͘Í›|µÊ"Í•ÃÅÍ�åÍžÑ͘ë! s#rÍ� åÍ�åÍ¡ÑÑÍ� åͤÑÍ›|µÊ\Í•ÃÅÍ�åÍžÑ͘Í�åͤÑͧ|µÊÍ•ÃÅÍ� åÍžÑͪÍ�åͤÑÍ�åÍžÑÍ�å*rÑs#rÍ�åÍ­Ñå*¢$Ñs#rÍ•ë!9ùëÁÉà ø$æ)Ú#Ã.*ç7Ã�dÃ($Ãr$ÃúcÃd,ÃkLÃŒ+Ã�)ÃÛ,ádÃ"eÃ<.Ãý.Ã%Ãh.Ã\bÃsÅ!îû9ùDM!ø ¯w#wÍMrë! s#rÍM¢$ë! s#rÍÑë! s#r!  s#r!  s#r!ü s#r! åÍÔÑÍ×|µÊt ÍÚÃo"ÍÝÍàÍã|µÊˆ ÍÚÃo"Íæ|µÊ– ÍÚÃo"ÍÑë!þ s#rÕÍéÑÍM¢$##å*¢$Ñs#r!å!x"åÍìÑÑ|µÊL!! åÍïÑ|µÂä !}"åÍòÑù ̓øüÍùÒ,!̓ø)ë`iå̓ëás#r!ø ^#Vr+së)ë!ü åÍÑëás#rÕÍõÑÃ4!!Š"åÍòÑ!¢"åÍøÑ|µÂI!!¤"åÍòÑÃl"!å!²"åÍìÑÑ|µÊ‹!ÍÑë!ü s#r̓üåÍõÑ!º"åÍøÑ|µÂˆ!!¼"åÍòÑÃl"!Ê"åÍøÑ|µÊi"̓ åÍéÑ! ¯w#w̓þåÍõÑ̓üåÍÑë!þ s#rÕ̓øåÍûÑÑÑ̓þåÍõÑ̓å̓øÑÍúÒ/"Íþ̓)ë`i~#foåÍ Ñ!Ì"åÍ Ñ! ^#Vr+së)ë!ü ~#foåÍ ÑÍ ÃÜ!ÍÚ̓ åÍõÑ̓å*rÑs#r̓åÍ Ñå*¢$Ñs#rÃo"Ãl"Í ù ë!9ùëÁÉcaseBad constantToo many case statments:Missing colondefault:Missing colon},ÃÝ"ÃA%ç7Ã\bÃåcÅÍÑ"|µÂé"ÍÔ"!åÍ×"ÑÍÚ"ÁÉÃ#ÃI*Ã\bÃ&åÍÕ$ÑÃè$ÁÉÅ*š¤ú£n&ÁÉÁÉÃ$%Ãý.Ã<.Å!9ùDM!?%åÍ%ÑÍ�åÍ!%ÑÁÉ@ÃM%Ãâ-Ã*/à %ÅÍD%!x%å*š¤å!ú£ÑåÍG%ÑÑ|µÍ£Ât%ÍJ%|µÍ�ÁÉÁÉ;À%à %ÅÍ}%|µÂ‘%!ÁÉâ%*š¤#"š¤+ú£n&ÁÉÁÉö%Ãâ-É*à %Ãì*Ãz%Å!ýÿ9ùDMͧ%Í­%åͪ%Ñ|µÂÔ%!Ã&`i¯w#wÍ­%åͰ%Ñ|µÊ&! ~#foå`i^#Vr+sëÑåͳ%ëásÃÚ%! ~#foåÍ�Ñ6!Ã&ë!9ùëÁÉÃ0&ÃŒ+Ãð(Å!>&åÍ*&ÑÍ-&ÁÉillegal symbol nameÃX&Ö/Å!þÿ9ùDM€`is#rÍ�å*p—ÑÍåʨ&!åÍ�åÍ�åÍU&ÑÑÑ|µÊ—&Í�î&Í�ë`is#rÃh&!î&ë!9ùëÁÉÃÃ&ÃíuÃ5vÃt0Å!°ÿ9ùDM!'å`iåͺ&ÑÑÍ�Tå`iåͽ&ÑÑ!%'å`iåͽ&ÑÑ`iåÍÀ&Ñë!P9ùëÁÉâ-ÅÍö(åÍó(Ñ|µÊ&)Íù(åÍó(Ñ|µÊ#)Íü(Ã)ÃD)Íù(åÍó(Ñ|µÂD)Íù(|µÂ>)ÃD)Íü(Ã&)Íÿ(ÁÉÃR)ÃÛ,ÃŒ+Å!9ùDMÍ�åÍL)Ñ|µÂp)!r)åÍO)ÑÁÉmissing braketÃ�)Ã%Ã+.Ãh.Å!9ùDMÍ�åÍ„)Ñ͇)ÍŠ)ÁÉì)ÃŒ+Å!þÿ9ùDM*<˜å!0˜ÑÍåÂÍ)!*åÍ©)ÑÃ*`i¯w#wÍ�ÍùÒ**<˜##"<˜++å! ~#foå`i^#Vr+së)Ñ~#foëás#rÃÓ)ë!9ùëÁÉtoo many active whilesÃ4*ÃI*ÅÍ1*|µÊG**<˜ôÿ"<˜ÁÉÃO*ÃŒ+Å*<˜å!t—ÑÍåÂn*!y*åÍL*Ñ!ÁÉÃw**<˜ôÿÁÉÁÉno active whileÅ!9ùDM! n&aÍùͯÚ·*! n&zÍͯÒè*! n&AÍùͯÚÝ*! n&ZÍͯÒè*! n}þ_Í�ÁÉÁÉÃõ*É*Ã]+Å!9ùDM!,ÑÑë`is#rz³Ê!-*š¤åÍ�Ñ"š¤!Ã'-!Ã'-ë!9ùëÁÉÃK-ä%Ã'&ÃÄ$Ã�5úuà %Ãz%ÃŒ+Å!õÿ9ùDM`iåÍ3-Ñ|µÂh-Í6-Í9-ÃÈ-! ¯w#w! ^#Vr+sëë`in&åÍ<-Ñ|µÊ‘-Ãp-ÍB-åÍ?-Ñ|µÊ¤-ÍE-Ñ-ÍE-åÍ<-Ñ|µÊ´-ä-*ø£çÍùÚÈ-!Ñ-åÍH-Ñë! 9ùëÁÉmarco table fullÃô-à %Ã�'Ãú1úuÃz%ÅÍå-|µÂ.Íè-Íë-*ª¤|µÊ.Ã.Ãõ-Íå-åÍî-Ñ|µÊ$.Íñ-Ã&.ÁÉÃõ-ÁÉÃ1.Ã�.Å!:åÍ..ÑÁÉÃE.Ãý.ÃÆ5Å!öÿ9ùDMÍ�å`iåÍB.ÑÑåÍ?.Ñë! 9ùëÁÉÃn.Ã�.Å! åÍk.Ñ! åÍk.ÑÁÉÃ�.ÃÿrÔ ÃŒ+ÃbxÅ!9ùDM! n}·Â§.!ÁÉ*®¤|µÊÔ.!άå! n&åÍ„.ÑÑ#|µÂÑ.͇.!ë.åÍŠ.ÑÃà.! n&åÍ�.Ñ! n&ÁÉÁÉOutput file errorÃ/1åÍz0ÑÍ�XåÍz0Ñ!®1åÍz0ÑÍ}0*°¤|µÊG1!·1å`iå͆0ÑÑ*´¤å`iåÍŒ0Ñå`iÑå͉0ÑÑÃi1!Ö1å`iå͆0ÑÑ*²¤å`iåÍŒ0Ñå`iÑå͉0ÑÑ!å1å`iåÍ�0ÑÑÍ�Xå`iåÍ�0ÑÑ!ç1å`iåÍ�0ÑÑ`iåÍ’0Ñ*¨¤#"¨¤ë!T9ùëÁÉ****** ******Error in include file at line Error at line Ãï1Ã�.Å! åÍì1ÑÁÉÃ2ÃÛ,Ã�'à %úuÃÎ6Ãz%ÃŒ+Ã¥nÃËnÃì*Ã7Å!ôÿ9ùDM*¸¤|µÂ12Ã15!"š¤"œ¤*º¤|µÂf2*ª¤|µÂf2!:5åÍý1Ñ|µÊ`2!"º¤Ãc2Í2Ã:2Í2#ÍåÂz2!A5åÍý1ÑÍ2|µÊá4Í2åÍ2Ñ|µÊ­2! åÍ 2ÑÍ2åÍ2Ñ|µÊª2Í 2×2ÃÞ4Í2\ÍåÂå2Í2åÍ 2ÑÍ 2Í2|µÂ×2!H5åÍ2ÑÃá4Í2åÍ 2ÑÍ 2ÃÞ4Í2"ÍåÂH3Í2åÍ 2ÑÍ 2Í2úcÅ!þÿ9ùDMÍù"ë`is#rz³Â#Ã?#`i~#fo##~#foåÍü"Ñ`i~#fo~#foåÍÿ"Ñë!9ùëÁÉÃT#ÃI*Ã\bÃúcÅ!þÿ9ùDMÍK#ë`is#rz³Âm#Ñ#`i~#fo##~#foåÍN#Ñ`i~#fo~#foåÍQ#Ñë!9ùëÁÉæ#ÃÛ,ÃŒ+Ãð(Å!Ë#åÍ�#Ñ|µÊ¹#!ÁÉ!Í#åÍ #ÑÍ£#!ÁÉÁÉ(Missing left parnthisÃï#ÃÛ,ÃŒ+Ãð(Å!$åÍæ#Ñ|µÊ$!ÁÉ!$åÍé#ÑÍì#!ÁÉÁÉ;Missing semicolonÃ4$ÃÛ,ÃŒ+Ãð(Å!Y$åÍ+$Ñ|µÊG$!ÁÉ![$åÍ.$ÑÍ1$!ÁÉÁÉ)Missing right parnthisÃ~$ÃÛ,ÃŒ+Ãð(Å!£$åÍu$Ñ|µÊ‘$!ÁÉ!¥$åÍx$ÑÍ{$!ÁÉÁÉ{Missing left braceÅ*ž¤#"ž¤ÁÉÁÉÅ!"š¤>2ú£ÁÉÃØ$ÃbxÅ!9ùDM! åÍÕ$ÑÍ�n}·Ê %! ^#Vr+sënalready defined symbol or function ""Ã-'Ö/Å!þÿ9ùDM!,Í?å!€Ñë`is#rÍ�å*r—ÑÍåÊŽ'!åÍ�åÍ�åÍ*'ÑÑÑ|µÊ}'Í�Ô'Í�ë`is#rÃN'!Ô'ë!9ùëÁÉø'ÃÄ$É ×vÃ|xÃKbÃé1Ãý.Ãh.Å!üÿ9ùDMÍ '*¬¤|µÂÎ'Í£'*ª¤|µÊÙ'Ãç(*°¤|µÊõ'Ȩ! s#r*´¤#"´¤Ã(¤! s#r*²¤#"²¤Í�åͦ'Ñë`is#rz³Êh(Í� ÍåÊA(*š¤OÍùÒA(Í�ÍåÂD(Ãh(Í� ÍåÊe(*š¤#"š¤+ú£åÍ�ëásÃ(*š¤ú£6Í�ÍÒ‹(Í�Íå²(*°¤|µÊ¤(*°¤åÍ©'Ñ!"°¤Ã²(*¬¤åÍ©'Ñ!"¬¤*š¤|µÊä(*¶¤|µÊÛ(*¸¤|µÊÛ(ͬ'ͯ'!ú£åͲ'Ñ͵'!"š¤Ãç(ÃÀ'ë!9ùëÁÉÃ)Ãì*Ã&+à %Ãz%à n&åÍï*Ñ|µÍ£Â"+! n&åÍò*Ñ|µÍ£ÁÉÁÉÃ2+Ã�'Ãú1Ãz%Å*š¤ú£n}·ÂV+*ª¤|µÊM+!ÁÉÍ)+Í,+Ã3+Í/+ÁÉÁÉÅ!9ùDM! n&0ÍùͯÚˆ+! n&9ÍͯÁÉÁÉÛ+ÃíuÃ5vÃ…wÃt0Å!¬ÿ9ùDMÍ�Xå`iåÍ�+ÑÑ!_,å`iåÍ’+ÑÑ*š¤öÿë!P s#rÍ�P|·òÜ+!P ¯w#w`iåÍ•+Ñë!R s#rÍ�Pñÿå*š¤ÑÍúÒ6,Í�Pú£n}·Ê6,!R ^#Vr+sëë`iå!P ^#Vr+sëú£nëásÃë+Í�Rë`i6!b,å`iåÍ’+ÑÑ`iå͘+ÑÃV,ë!T9ùëÁÉ ""Ãv,Ãâ-Ö/Ãì*à %Ã&+Å!þÿ9ùDMÍg,Í�åÍ�å*š¤å!ú£ÑåÍj,ÑÑÑë`is#rz³ÊÌ,*š¤åÍ�Ñ"š¤Íp,åÍm,Ñ|µÊÆ,Ís,ó,!ÃÒ,!ÃÒ,ë!9ùëÁÉÃä,Ãâ-Ã*/Å!þÿ9ùDMÍÞ,Í�å*š¤å!ú£ÑåÍáÃ�.Å!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ÃKbÃý.Ãh.Ãé1Ã�.ÃíuÃÆ5Ã…wÃ5vÃÒ$Å!¬ÿ9ùDMÍw0!ú£åÍz0ÑÍ}0Íw0!P ¯w#wÍ�På*š¤ÑÍúÒð0Í�Pú£n}þ ÂÚ0Í€0Ãâ0! å̓0Ñ!P ^#Vr+sö0!^å̓0ÑÍ}0Íw0!¥"ÍåÊ:3Í2|µÂ3!a5åÍ2ÑÃ:3Í2\ÍåÂ/3Í 2åÍ 2ÑÍ 2åÍ 2ÑÃü2Í 2!"åÍ 2ÑÃÞ4Í2'Íå«3!'åÍ 2ÑÍ 2Í2'ÍåÊ�3Í2|µÂ~3!o5åÍ2ÑÃ�3Í2\ÍåÂ’3Í 2åÍ 2ÑÍ 2åÍ 2ÑÃ_3Í 2!'åÍ 2ÑÃÞ4Í2/Íå 4Í2*Íå 4Í2Í2Í2*ÍåÂá3Í2/ÍåÊ4Í2|µÂï3Í2Ãò3Í2*ª¤|µÊý3Ã4ÃÉ3Í2Í2ÃÞ4Í2åÍ2Ñ|µÊÖ4`i¯w#wÍ2åÍ2Ñ|µÊT4Í�ÍùÒN4`i^#Vr+sëë! åÍ2ëásÍ 2Ã4Í�ë! 6! åÍ2Ñë`is#rz³Ê¡4`i^#Vr+së në! s{·Êž4! n&åÍ 2ÑÃt4ÃÓ4`i¯w#w`i^#Vr+sëë! në! s{·ÊÓ4! n&åÍ 2Ñç4ÃÞ4Í 2åÍ 2ÑÃz2!åÍ 2Ñ*œ¤OÍùÚý4!‚5åÍ2Ñ!"œ¤"š¤*š¤#"š¤+ú£å*œ¤#"œ¤+J¤nëás{·Ê+5Ã5!"š¤ë! 9ùëÁÉ#endif#endifmissing escape charactermissing quotemissing apostropheline too longÅ!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ÂZ6Í�+|µÊZ6Í�|µÊ„6! 6#6! ~#foå! ^#Vr+sëÑå! nëásÍ� åÍ�ÑÍë! s#rÍ� ëÍËë`is#rÃ6! ~#foåÍ�Ñ6Í� ÃÅ6ë!9ùëÁÉÅ!9ùDM*œ¤J¤å! nëás*œ¤OÍùÒù6*œ¤#"œ¤! n&.PL 51 .FI C1.C .FI C2.C .FI C3.C .FI C4.C .FI C5.C .FI C6.C .FI C7.C .FI C8.C .FI C9.C MAILMRGEOVR<CHAIN BAKCHAIN CHAIN $$$åWSMSGS OVRZ™š›œ�žŸåFRESET TST åQUICK TST åRANDSEEKTST åSEEKTIMETSTåRANDREADTSTåSERVOTSTTSTåIDFIELD TST/*********************************************************************/ /* */ /* 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 */ / /* 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 starinter 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 */ ÁÉÁÉà 7Ö/Å!þÿ9ùDM`i¯w#wÍ�å*ø£ÑÍúÒ˜7!åÍ�å! ÑåÍ�åÍ7ÑÑÑ|µÊe7`i^#Vr+së n}·Ê^7ÃF7Í�Þ7`i^#Vr+së n}·Ê}7Ãe7`i^#Vr+së n}·Ê•7Ã}7Ã7!Þ7ë!9ùëÁÉð7ÃÅLÃæ7Å!øÿ9ùDM! ¯w#w! å`iåÍ­7ÑÑå`iåͪ7ÑÑÍ�ÃÝ7ë!9ùëÁÉÃ8Ã:à %Ã¥nÃz%ÃPÃÅPËQÃMjÃcjÀj×jíjÿjÃÕjÃëjÃÏQÅ!üÿ9ùDMÍ� åÍ�åÍé7ÑÑë`is#rÍì7=ÍåÊU8Íï7=ÍåÊU8Í�à :Í� ¯w#wÍì7>=½Âl8>¼ÊÏ8>+½Âx8>¼Êä8>-½Â„8>¼Êä8>*½Â�8>¼Ê!9>/½Âœ8>¼ÊC9>%½Â¨8>¼Êe9>&½Â´8>¼Ê‡9>^½ÂÀ8>¼Ê©9>|½ÂÌ8>¼ÊË9Ãí9Íò7Í�åÍ�åÍõ7ÑÑÃô9Íò7Íò7Í�åÍ�åÍø7ÑÑÍ�åÍû* */ /*********************************************************************/ /************************************************/ /* */ /* small-c compiler */ /* rev. 1.1 */ /* by Ron Cain */ /* */ /************************************************/ tloc 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 /* po #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 */ /* 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; /t, /* 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; a:cc1 c1.c -e 8000 a:cc1 c2.c -e 8000 a:cc1 c3.c -e 8000 a:cc1 c4.c -e 8000 a:cc1 c5.c -e 8000 a:cc1 c6.c -e 8000 a:cc1 c7.c -e 8000 a:cc1 c8.c -e 8000 a: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  MTC MACj“”©ª«¬­®DISKDRVRBAKb}�‚DISKDRVRMACb_e~ƒNSTAR DOC‹ERROR BAKŒERROR DOC�C SUBåMPLOGIC OVL±²³´ß #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; } #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 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 */ outpu /* 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 */ rg sp */ ncmp, /* # open compound statements */ errcnt, /* # errors in compilation */ cif, /* state of preprocess if statement */ lastst; /* last executed statment type */ char *cptr; 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 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 { 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 require 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(); 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 (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(); } 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; { s */ /* 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=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("(")) /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. */ jque[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(); /* deletble 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 ")" */ de } else if (amatch("default",7)) { end_label=getlabel(); sprintlabel(end_label); if (!match(":")) error("Missing colon"); } else if (match("}")) { jump(que[wqlab]); /* jump past switch data */ temp=0; sprintlabel(label_switch); exec_switch(count,label_switch=getlabel(),end_label); sprintlabel(label_switch); while(temp>>> 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+lptrturn ((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,"\""; 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); */ /* "continue" statement */ /* */ docont() { int *ptr; /* see if any "whiles" are open */ if ((ptr=readwhile())==0) return; /* no */ modstk((ptr[wqsp])); /* else clean up stk ptr */ jump(ptr[wqend]); /* jump to end label */ } /* */ /* "asm" pseudo-statement */ /* */ /* enters mode where assembly language statements are */ /* passed intact through parser */ doasm() { cmode=0; /* mark mode as "asm" */ while,")") == 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(); re); 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 } /* 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/* >>>>>> start of cc4 <<<<<<< */ #ifndef TRUE /* check to see if need include file */ #include #endif keepch(c) char c; { mline[mptr]=c; if (mptr=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(); outstre if (ch() == '\\') { keepch(ch()); gch(); if (!ch()) { error("missing escape character"); break; } keepch(ch()); gch(); } else if(ch()=='"') { keepch(ch()); gch(); while(ch()!='"') { if(!ch()) { error("missing quote"); break; } if (ch() == '\\') keepch(gch()); keepch(gch()); } gch(); keepch('"'); } else if(ch()=='\'') { keepch('\''); gch(); while(ch()!='\'') { if(!ch()) { erame)) while(c=macq[k++]) keepch(c); else { k=0; while(c=sname[k++]) keepch(c); } } else keepch(gch()); } keepch(0); 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("mar return c; } outstr(ptr) char *ptr; { while(outbyte(*ptr++)); } nl() { outbyte('\r'); outbyte('\n'); } tab() { outbyte('\t'); } col() { outbyte(':'); } error(ptr) char *ptr; { char buff[80]; int j,k; strcpy(buff,ptr); strcat(buff," \""); j=lptr-10; if (j<0) j=0; k=strlen(buff); while(j-15= 0; postion -=4) outbyte(hex[(value>>postion) & 0x0f]); outbyte('h'); } 0x0f]); outbyte('h'); }/* number of case statement in switch */ int label; /* label for switch ttring[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 */ /************************************/ /* ^ * heir3 * left to right */ /********************************************************/ /* | * heir2 * left to right */ /********************************************************/ /* && * heir1e * left to right */ /********************************************************/ /* || * heir1d * left to right */ /********************************************************/ /* = -= += *= %= * heir1 * left to right */ /* /= &= ^= |= * * */ /***************************************char ptr[]; { ot(ptr); nl(); } ot(ptr) char ptr[]; { tab(); outstr(ptr); } streq(str1,str2) char str1[],str2[]; { int k; k=0; while(str2[k]) { if (str1[k]!=str2[k]) return 0; k++; } return k; } astreq(str1,str2,len) char str1[],str2[];int len; { 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 posti**********************************/ /* + - * heir8 * left to right */ /********************************************************/ /* << >> * heir7 * left to right */ /********************************************************/ /* < <= > >= * heir6 * left to right */ /********************************************************/ /* == != * heir5 * left to rigth */ /********************************************************/ /* & * heir4 * left to rigth */ /***********************************************************/ #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 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("&&")) {nt 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 (matcush(); 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(); 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(); r=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); 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) ih("&")) { 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("!=")) { p 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(); value(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 } lt(); } else if ((streq(line+lptr,">")) && (streq(line+lptr,">>") == 0)) { inbyte(); push(); r/* >>>>>> 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(lvalitem 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) { r,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); rvD; } } 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 #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]; 2,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 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 *ptalue(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 LOADE,k); post_dec(lval); *status=TRUE; return LOADED; } else return k; } } k; } }  else return k;DED; } 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 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 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 (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(); } } /* */ /* writt 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 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; psubscript */ 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]; 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; en 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 : *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(); tr=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 : ie : 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]) { /* iden /* 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 etmem(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 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); } /* */ /* f (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 variablt =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; 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 g(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 */ 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; 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; '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,rn 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,u\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(); 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())) { 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@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\teqcall("@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 addr 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 seco 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"); natus) { 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(); mber 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-ess 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; charndary 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() {l(); 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 (!st } /* 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 nu-; } 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 */ /* */ /* (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(lv 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() { cc 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 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"); } /* testxsub c1 y $1.asm $1.c assemble $1 link $1 stdlib runtime )ˆm�» –C7 C j¼½¾¿C8 C 8ÀÁC9 C ÂCC SUBåCUSTOM COMsÎÏÐÑåTABLE DIRÒåMPSETUP FILãåMPERROR FILÛåINCOME LOGÓåMPEXT OVL`ÔÕÖרÙÚåMPMENU FILåååååååååååååååååååååååååååååååå(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 registersal) 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)all("@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"); } /* testclink c1 c2 c3 c4 c5 c6 c7 c8 c9.c c1 c2 c3 c4 c8 c9.c -s -r e00 )ˆm�» –C7 C j¼½¾¿C8 C 8ÀÁC9 C ÂCC SUBÃCL SUBåTABLE DIRÒåMPSETUP FILãåMPERROR FILÛåINCOME LOGÓåMPEXT OVL`ÔÕÖרÙÚåMPMENU FILåååååååååååååååååååååååååååååååå*ùÍ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þ!Éþ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;áÉå! >" à txtå! à .å`iåÍ­ÑÑå`iÑåͪÑÑ!b•å`iå͹ÑÑ#|µÂn `iå!A Ãe Unable to create %s as object fileåͶÑÑͧ!t Ãx asmå! Ã� .å`iåÍ­ÑÑå`iÑåͪÑÑ!"Sž"Wž"Kž"Ež"Cž"Mž"?ž"]ž"Qž"Ož!7"Iž!ÿ"Gž!È Ãñ å!u™åͪÑÑ! Ã( Page å!u™åͰÑÑ*¢"T!"Mž*Të! s#r! ~#fo#åͼÑ|µÊw *Mž#"Mž! ^#Vå!ëár+sÃI Í¿!å!„ È 000åÍÂÑÑ*Qž+"QžÍÅ*\‘åÍÈÑ!\‘å`iåͳÑÑ#|µÂÛ !¸ ÃÖ unable to rewind source fileåÍËÑÍÎÍÑ!b•å!$åÍÔÑÑ!b•å!QåÍÔÑÑ!b•åÍs#rz³Ê Í�åÍy ÑÃY ! åÍ| Ñ|µÊY ! åÍ Ñë`is#rz³ÊB Í�åÍ‚ ÑÃY Í�"ažÍ… |µÂY ! å͈ ÑÍ‹ ÍŽ *Cžå*UžÑ"CžÃ± ë! 9ùëÁÉÀ Ãö@ÚÅ!‡ à Control section namesåÍz Ñ*Qžå!$yåÍ} ÑÑ!¸ ÃÈ Symbol namesåÍz Ñ*Ožå!TåÍ} ÑÑÁÉÃâ Ã:=Å!é Ãí ORGåÍß Ñ|µÊü ! ÁÉ!ÃCSECTåÍß Ñ|µÊ!ÁÉ!Ã#DSECTåÍß Ñ|µÊ2!ÁÉ!8Ã;DSåÍß Ñ|µÊJ!ÁÉ!PÃSDBåÍß Ñ|µÊb!ÁÉ!hÃkDWåÍß Ñ|µÊz!ÁÉ!€ÄEQUåÍß Ñ|µÊ“!ÁÉ!™Ã�ENDåÍß Ñ|µÊ¬!ÁÉ!²øENTRYåÍß Ñ|µÊÇ!ÁÉ!ÍÃÓEXTRNåÍß Ñ|µÊâ! ÁÉ!èÃíPAGEåÍß Ñ|µÊü! ÁÉ!Ã#É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È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›!åÍÎÑë`i!åÍ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Ê®> ½Â>¼Ê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™åÍ„Ñë`Ãà*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Í�åÍ�åÍå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åͼ"Ñ|µÂ#`ins#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Þ*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>½ÂÓ>¼Ê¾>½Âß>¼ÊÑ> ½Âë>¼Êä>½Â÷>¼Ê[>½Â>¼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ÑÑ|µÊ !ÁÉ! å*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ó !Ãü ë!&Ã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&Ã)ë!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ÿÍÄ*! ¯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ÍùÚ+/ÍÁ-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 stwš*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ÃÑ!Ã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&Ã)Í·(ʈ+! 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;*-Íå 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šå`ack 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ž}2–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ëÎ<Ñ|µÍ£ÁÉÁÉÃ=ÃñGÅ*ažuœn&åÍ=ÑÁÉÁÉÃ/=ù=ÃÈ<ÅÍ)=Í,=ÁÉÁÉÃC=ù=Ãã=Å!üÿ9ùDMÍ==*ažë! s#r`i¯w#w! ~#foåÍ�Ñn}·Êª=Í@=å! ~#foåÍ�ÑnÑ&ÍåÊž=Í�"až!ð=`i^#Vr+sÃ_=!ð=ë!9ùëÁÉÃÅ=à =Ã_EÃã=Åͼ=|µÊá=ͼ=åÍ¿=Ñ|µÊá=ÍÂ=ÃÆ=ÁÉÃì=à =ÃñGÅÍæ=|µÊ >*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 ìCP9ù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##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! ~#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Õ!• ^#! 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<ê„Ní°ÁÉ~# x±Â„NÁÉ ë ë><ê Ní¸ÁÉ~+ x±Â NÁÉ|ºÀ}»ÉÍ Å_þ ÂÇN Í ÍÁÉÍ Åþ ÂæN Í ÍÃêN_Í ÍæÂöNÁÉÍþÊ*uÁÉ*£+"£*¡€"¡*u#"uÃÌPÍ Í,ÚÅ FN¯xg>G�oy òDQ$ÁÉå*ŸåÍ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þ!Éþ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;áÉå! >" à 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##~ÁÉÍ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#É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È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+|µÂ$ !#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åͺ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&åÍ�ÃÍ�åÍ”Ñ++åÍ�åÍ‘ÑÑÃ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Í�åÍ´Ñë! (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ùDÑ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 Ñ`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åÍŽÑÑÃáÍ�å͈Ñ$ÍåÂ.Í�å͈Ñ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ÍåÊ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*M*(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å*åÍ�)å*ð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ùëÁÉÃ%ç/Å!þÿ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!Ãý&ë!ÑÑÑåÍ�ÑÍåÊ)!ÿÿÃð)Í�+€Í?ë`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ùëÁÉÃ-Ã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±Âí.ÁÉ ë ë>!ÁÉÃ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`ÁÉ å¾Ê&0ãëÕÍÑáþÿÂ0ÑÁÃ:qwÕÍÑþÿÊ0! Ñ{æwëÁÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u*£|µÊŽ0*¡ëÍ*sëÕÍÑþÁÊÅþ“0! ~þ€ÂŽ06*uÁÉ*£+"£*¡€"¡*u#"uÃZ0Í7¯Í,Ú2që*ŸëÅÍ&ÍþÿÁÊ:qÍ):¡·Êê0=Êê0=Âr:qo&ÉÍ Åë!\Í&ÍÉÃ#Ã{,Å!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ùëÁÉà 'Ã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åÍ{()Å!üÿ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ÍúÃ<ê /í¸ÁÉ~+ 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&ÉÍ Åë!\Í&Í/* >>>>> 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 */; /* 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 declaf 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('ptr=cptr+symsiz; } } /* */ /* dump extrn function */ /* */ dumpextrn() { char *ptr; ptr=startglb; while(ptr!=glbptr) { if (!ptr[offset]) extrn(ptr); ptr=ptr+symsiz; } } /* */ /* Report errors for user */ /* */ errorsummary() { /* see if anything left hanging... */ if (ncmp) error("missing closing bracket"); /* open compund statment ... */ if (!cif) error("missing closing #endif"); nl(); comment(); outdec(errcnt); /* total # errors */ outst/* erase line */ output=0; /* start with none */ pl("Output filename? "); /* ask...*/ gets(line); /* get a filename */ if(ch()==0)return; /* none given... */ if ((output=fcreat(line,fout)) == ERROR) { output=0; /* can't open */ error("Open failure"); } kill(); /* erase line */ } /* */ /* Get (next) input file */ /* */ openin() { input=0; /* none to start with */ while (!input) /* any above 1 allowed */ { kill(); /* clear line */ 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()rations, */ /* 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 eo,'); /* separate bytes */ } } litptr=0; } /* */ /* Dump all static variables */ /* */ dumpglbs() { int j; dsect("@globals"); cptr=startglb; while(cptr=endloc) { error("local symbol table overflow"); return 0; } ptr=locptr; locptr+=symsiz; break; } 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; } 7ÑÍì7-ÍåÂ9Íþ7Ã9Í8`i6#6Ãô9Íò7Íò7Í�åÍ�åÍø7ÑÑÍ8`i6#6Ãô9Íò7Íò7Í�åÍ�åÍø7ÑÑÍ8`i6#6Ãô9Íò7Íò7Í�åÍ�åÍø7ÑÑÍ 8`i6#6Ãô9Íò7Íò7Í�åÍ�åÍø7ÑÑÍ 8`i6#6Ãô9Íò7Íò7Í�åÍ�åÍø7ÑÑÍ8`i6#6Ãô9Íò7Íò7Í�åÍ�åÍø7ÑÑÍ8`i6#6Ãô9Í�à :Í�åÍ�åÍ8ÑÑ!à :ë!9ùëÁÉÃ0:Ãí:Ãâ-à %Ã¥nÃÅLø$ÃÛ,Ã7eÃ�)Å!öÿ9ùDMÍ�åÍ�åÍ:ÑÑë`is#rÍ:Í:|ÍåÂh:Í:|ÍåÊo:Í�Ãá:Í�åÍ�åÍ!:ÑÑÍ$:ë! s#r!ê:åÍ':Ñ|µÊÏ:Í�~#foåÍ�åÍ*:ÑÑÍ�6#6Í�å! åÍ:ÑÑå! åÍ!:ÑÑÃÞ:Í�åÍ-:Ñ!Ãá:É:ë! 9ùëÁÉ||à ;ÃÈ;Ãâ-à %Ã¥nÃÅLÃ; if (input2) { error("nested include not allowed"); kill(); return; } if ((input2=fopen(fname,finp2)) == ERROR) { error("Open failure on include file"); input2=0; } kill(); } doifndef() { char sname[namesize]; int lval[2]; blanks(); if (constant(lval)) { cif=FALSE; return; } if (!symname(sname)) { error("invalid identifier"); kill(); return; } if (findloc(sname) || findglb(sname)) cif=FALSE; else cif=TRUE; } doifdef() { c j=pointer; ++count; while(ch()=='*') { ++count; gch(); } } else j=variable; if (!symname(sname)) illname(); if(findglb(sname)) multidef(sname); data_parse(sname,typ,statik,j,count); if (match(",")==0) return; } } declloc(typ) int typ; { int j; int count; char sname[namesize]; while(1) { count=0; if (endst()) return; if (match("*")) { j=pointer; ++count; while(ch()=='*') { ++count; gch(); } } else cint) size=size+size; } } else { ident_typ=pointer; size=2; } } else { if (ident_typ==pointer) size=2; else if (typ == cint) size=2; else size=1; } switch(class_id) { case statik : if (glbptr>=endglb) { error("global symnol table overflow"); return 0; } ptr=glbptr; glbptr+=symsiz; value=size; break; case stkloc : sp=modstk(sp-size); value=sp; if (locptr>=endloc) { error("local symbol table overflow"); ¸$ÃÛ,Ã)dÃ�)Å!öÿ9ùDMÍ�åÍ�åÍð:ÑÑë! s#rÍó:Íö:&ÍåÂE;Íù:&ÍåÊL;Í�ü;Í�åÍ�åÍü:ÑÑÍÿ:ë`is#r!Å;åÍ;Ñ|µÊª;Í�~#foåÍ�åÍ;ÑÑÍ�6#6Í�å! åÍð:ÑÑå! åÍü:ÑÑù;Í�åÍ;Ñ!ü;Ãd;ë! 9ùëÁÉ&&Ãã;Ê<Ãâ-à %Ã¥nÃÅLÃÛ,Ã�dÃëjÅ!øÿ9ùDMÍ�åÍ� åÍË;ÑÑë`is#rÍÎ;ÍÑ;|ÍåÂ'<ÍÔ;|ÍåÊ'<ÍÔ;=ÍåÂ.<Í�Ã<Í�åÍ� åÍ×;ÑÑ!ˆ<åÍÚ;Ñ|µÊv<ÍÝ;Í�å! åÍË;ÑÑå! åÍ×;ÑÑÍà;Í�6#6Ã|=åÍœ<Ñ|µÊ,=ÍŸ<Í�å! åÍ�<ÑÑå! åÍ™<ÑÑÍ¢<Í�6#6Ã2=!Ã5=Ãó<ë!9ùëÁÉ^Ã[=Ã>Ãâ-à %Ã¥nÃÅLÃÛ,Ã�dÿjÅ!øÿ9ùDMÍ�åÍ� åÍC=ÑÑë`is#rÍF=ÍI=&ÍåŸ=ÍL=&ÍåÊŸ=ÍL==Íå¦=Í�Ã÷=Í�åÍ� åÍO=ÑÑ!>åÍR=Ñ|µÊî=ÍU=Í�å! åÍC=ÑÑå! åÍO=ÑÑÍX=Í�6#6Ãô=!Ã÷=õ=ë!9ùëÁÉ&Ã>Ã?Ãâ-Ã*/ÃÅLÃÛ,Ã�dÃkÃkÅ!øÿ9ùDMÍ�åÍ� åÍ>ÑÑë`is#rÍ>!?å*š¤å!ú£ÑåÍ >ÑÑ|µÂt>! ?å*š¤å!ú£ÑåÍ >ÑÑ|µÂt>Í�Ãþ>Í�åÍ� åÍ>ÑÑ! ?åÍ>Ñ|µÊ¼>Í>Í�å! åÍ>ÑÑå! åÍ>ÑÑÍ>Í�6#6Ãû>!?åÍ>Ñ|µÊõ>Í>Í�å! åÍ>ÑÑå! åÍ>ÑÑÍ>Í�6#6Ãû>!Ãþ>Ã>ë!/********************************************************/ /* */ /* 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 */ 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,filenameconvert '^'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 return; /* line feed ignore */ case LF : break; /* must be a valid character put in output buffer */ default: putbuff(current); } } } dooutput() { int tempdo; tempdo=((line-1)*128); outbuff[tempdo]=(outoff-1); while(outoff<128) putbuff(0); if (++line>148) error("Too many lines"); } /********************************************************/ /* */ /* done */ /* */ /* function: to write output buffer out */ /* 9ùëÁÉ==!===!=ÃC?ùBÃâ-Ã*/ÃÅLÃÛ,Ã�dÃ*kÃ@kÃUkÃkkÃ&+ÀkÖkëkÃÁkÅ!øÿ9ùDMÍ�åÍ� åÍ?ÑÑë`is#rÍ?!™Bå*š¤å!ú£ÑåÍ?ÑÑ|µÂÊ?!›Bå*š¤å!ú£ÑåÍ?ÑÑ|µÂÊ?!�Bå*š¤å!ú£ÑåÍ?ÑÑ|µÂÊ?! Bå*š¤å!ú£ÑåÍ?ÑÑ|µÂÊ?Í�Ã�B!£Bå*š¤å!ú£ÑåÍ?ÑÑ|µÊé?Í�Ã�B!¦Bå*š¤å!ú£ÑåÍ?ÑÑ|µÊ@Í�Ã�BÍ�åÍ� åÍ?ÑÑ!©BåÍ"?Ñ|µÊ @Í%?Í�å! åÍ?ÑÑå! åÍ?ÑÑÍ�6#6! ~#fo~#fo"¾¤|µÊv@!¾¤~#fo n}þÂv@Í(?Ã@Í�"¾¤|µÊš@!¾¤~#fo n}þš@Í+?Ã@Í+?Ã�B!¬BåÍ"?Ñ|µÊ)AÍ%?Í�å! åÍ?ÑÑå! åÍ?ÑÑÍ�6#6! ~#fo~#fo"¾¤|µÊÿ@!¾¤~#fo n}þÂÿ@Í.?Ã@Í #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:) == 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 */ /* -$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 : 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; ***********************************************/ /* */ /* 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 */ } /*********/* set zero suppress */ putch(num); /* print character */ } number=number % place; place=place/10; } } ssagdec 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; clink c1 c2 c3 c4 c5 c6 c7 c8 c9 c1 c2 c3 c4 c5 c6 c7 c8 c9 -r e00 -s  8000 a:cc1 c5.c -e 8000 a:cc1 c6.c -e 8000 a:cc1 c7ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååcc1 b:c1.c -e 8000 cc1 b:c3.c -e 8000 cc1 b:c4.c -e 8000 cc1 b:c5.c -e 8000 cc1 b:c6.c -e 8000 cc1 b:c7.c -e 8000 cc1 b:c8.c -e 8000 cc1 b:c9.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  åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå 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; } /********************************************************/ /* */ /* 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; $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 $TGLå~·Ê\å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Íá#å…‰”ž¡¦«³$T¹"ÙÉ$R$T½!Ó"Ó"×!2Õ!¸ "ÙÉ$R $TÛ!9N#F#^#V#~#foÉ$Qå6ú ëÍÑbkFw#Â¥6 ÍáÉ$R$T¸ÅÅÍÁÁ}·!È!É$R$T"ËÁáÑÕåÅÕåÍúÑÑ,ÊéÍÖ@##Ã5$T91¯ÍhÂ[þ.ÂE#ÍhÂ[>ÂQ!É!ÿÿÉþaØþzÐæ_É~þ*>$T9k?ÊŠ~ÍšÚ�#ÂhÃ�·Êˆþ.À> Š~·Èþ.È#Ã�Í_þ?ʶþ$Ê$T¤¶þ0Øþ:Ú¶þAØþ[?É7?É$R !-18@CHNQ[tx{‚�"¾¤|µÊ#A!¾¤~#fo n}þÂ#AÍ.?Ã@Í1?Ã�B!¯Bå*š¤å!ú£ÑåÍ?ÑÑ|µÊØA!±Bå*š¤å!ú£ÑåÍ?ÑÑ|µÂØAÍ4?Í%?Í�å! åÍ?ÑÑå! åÍ?ÑÑÍ�6#6! ~#fo~#fo"¾¤|µÊ®A!¾¤~#fo n}þ®AÍ7?Ã@Í�"¾¤|µÊÒA!¾¤~#fo n}þÂÒAÍ7?Ã@Í:?Ã�B!´Bå*š¤å!ú£ÑåÍ?ÑÑ|µÊ‡B!¶Bå*š¤å!ú£ÑåÍ?ÑÑ|µÂ‡BÍ4?Í%?Í�å! åÍ?ÑÑå! åÍ?ÑÑÍ�6#6! ~#fo~#fo"¾¤|µÊ]B!¾¤~#fo n}þÂ]BÍ=?Ã@Í�"¾¤|µÊ�B!¾¤~#fo n}þÂ�BÍ=?Ã@Í@?Ã�B!Ã�BÃ@ë!9ùëÁÉ<><=>=>><<<=>=<<<>>>ÃÔBÃÐCÃâ-Ã*/ÃÅLÃÛ,Ã�dÃÖkÃìkÅ!øÿ9ùDMÍ�åÍ� åͼBÑÑë`is#rÍ¿B!ÄCå*š¤å!ú£ÑÂFÃâ-à %Ã¥nÃÅLÃÛ,Ã�dÀj×jíjÅ!öÿ9ùDM! ¯w#wÍ�å! åÍ�åÍEÑÑÑë`is#rÍEÍE*ÍåÊpEÍE/ÍåÊpEÍE%ÍåÂ|EÍ E=ÍåƒEÍ�ÃsFÍ�åÍ�åÍ EÑÑ!|FåÍEÑ|µÊÚEÍEÍ�å! å! åÍEÑÑÑë`is#rÍ�å! åÍ EÑÑÍEÍ�¯w#wÃpF!~FåÍEÑ|µÊ"FÍEÍ�å! å! åÍEÑÑÑë`is#rÍ�å! åÍ EÑÑÍEÍ�¯w#wÃpF!€FåÍEÑ|µÊjFÍEÍ�å! å! åÍEÑÑÑë`is#rÍ�å! åÍ EÑÑÍEÍ�¯w#wÃpF!ÃsFÃ’Eë! 9ùëÁÉ*/%ÃÁFÃÛ,ÂFÃùnÃÇTÃlÃ.lÃÂwÃ¥nÈJÃÅLÃZlÃŒ+Ã�eÃý.Ãh.ÃplÃÓUÃxÇlôlÅ!õÿ9ùDM!dJåÍ…FÑ|µÊ@GÍ�åÍ�åÍ�å͈FÑÑÑë`is#rë|µÂGÍ‹F!Ã[J}þ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$T^#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{‚åÍÂBÑÑ|µÂ+C!ÇCå*š¤å!ú£ÑåÍÂBÑÑ|µÂ+CÍ�ûCÍ�åÍ� åÍÅBÑÑ!ÊCåÍÈBÑ|µÊvCÍËB! åͼBÑë`is#rÍ�å! åÍÅBÑÑÍÎBÍ�¯w#wøC!ÍCåÍÈBÑ|µÊ²CÍËB! åͼBÑë`is#rÍ�å! åÍÅBÑÑÍÑBÍ�¯w#wøC!ûCÃ:Cë!9ùëÁÉ>><<>><<ÃñCÃýDÃâ-à %Ã¥nÃÅLÃ�dÃz%ËQÃcjÃMjÅ!øÿ9ùDMÍ�åÍ� åÍÓCÑÑë`is#rÍÖCÍÙC+ÍåÊ)DÍÙC-ÍåÂ5DÍÜC=ÍåÂ+½ÂZD>¼ÊiD>-½ÂfD>¼ÊªDÃëDÍâCÍåCÍ�å! åÍÓCÑÑë`is#rÍ�å! åÍßCÑÑÍ� åÍèCÑÍëCÍ�¯w#wÃñDÍâCÍåCÍ�å! åÍÓCÑÑë`is#rÍ�å! åÍßCÑÑÍ� åÍèCÑÍîCÍ�¯w#wÃñD!ÃôDÃKDë!9ùëÁÉÃE! ~#fo##å~#foåÍ�~#foÑëás#rÍ�åÍ�åÍŽFÑÑÍ�åÍ‘FÑ!Ã[JÃ[J!gJåÍ…FÑ|µÊÀGÍ�åÍ�åÍ�å͈FÑÑÑë`is#rë|µÂwGÍ‹F!Ã[J! ~#fo##å~#foåÍ�~#foÑëás#rÍ�åÍ�åÍŽFÑÑÍ�åÍ”FÑÍ�6#6!Ã[JÃ[J!jJåÍ…FÑ|µÊHÍšFåÍ—FÑ|µÊàGÍ�FÃHÍ�åÍ�åÍ�å͈FÑÑÑë`is#rÍ�åÍ�åÍ FÑÑÍ£FÍ�6#6!Ã[JÃ[J!lJåÍ…FÑ|µÊ™HÍ�^#Vr+sÍ�åÍ�åÍ�å͈FÑÑÑë`is#rÍ�åÍ�åÍ FÑÑ! ~#fo##å~#foåÍ�~#foÑëás#rÍ�¯w#wÍ�¯w#w!Ã[JÃ[J!nJåÍ…FÑ|µÊ8IÍ�åÍ�åÍ�å͈FÑÑÑë`is#rÍ�¯w#wÍ�|µÊãH! ~#fo~#fo|µÊôH!pJåͦFÑ!Ã[JÃ5I! ~#fo##~#fo|µÊI!Ã[JÃ5IÍ©F! ~#fo~#foë! s#rÕͬFÑͯF!Ã[JÃ[J!€JåÍ…FÑ|µÊzIÍ�åÍ�åÍ�å͈FÑÑÑåÍ�åÍ FÑÑͲFÍ�6#6!Ã[JÃ[JÍ�åÍ�å͵FÑÑë`is#r!Í?å! åÍ�å͸FÑÑÑ! å~#foåÍ�~#foÑëás#r!‚JåÍ…FÑ|µÊ JÍ�|µÂáIÍ‹F!Ã[JÍ�åÍ�åÍŽFÑÑÍ�åÍ»FÑÍ�6#6!Ã[JÃ[J!…JåÍ…FÑ|µÊTJÍ�|µÂ*JÍ‹F!Ã[JÍ�åÍ�åÍŽFÑÑÍ�å;FÑÍ�6#6!Ã[JÃ[JÍ�Ã[Jë! 9ùëÁÉ++---*&illegal address!++--æJÃòWÃ�eÃ.KýÂxP>¼Ê“P>½Â„P>¼Ê™P>½Â�P>¼ÊŸPâPÍPâPÍ PâPâP! å! åÍPÑÑå! åÍPÑÑë! 9ùëÁÉÃ×PÃùnÃÇTÃ�dÃÅLÃæ7Å!öÿ9ùDM! ~#fo~#foë`is#r`i~#fo n}þÂS!åÍÒQÑÃS!åÍ�åÍÕQÑÑÃWSÍ�+|µÂ= 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 ")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 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ë))("Bad hours range is 1-12 only"); return TRUE; } /* set 24 hour mode and am/pm bits */ if (am<0) clock[5] |= 8; else$EMAIÎ@GCHARSÓ @GCHARSÌ @GCHAÒ@SXÔ@GINTSÓ" @GINTSÌ/@GINÔ=@PCHARSÓB @PCHARSÌN @PINTSÓ[@PINTSÌi@PINÔx@INCDEÃ~b@OÒà @XOÒë @ANÄö @NLOÇ@COMÐ¥@ASÒ·@ASÌÈ @SUÂÒ $E @NEÇÜ@COÍá@MULÔè#@DIÖ a@SWITCÈlBIOÓŠBDOÓ£ EXIÔ¬@INIÔ±€$T Á o&9Å~Ã$R $T Á o g#9Å~Ã$R $T~Ã$R$ToŸgÉ$T "Á o&9Å~#foÉ$T/Á o g9Å~#foÉ$T=~#foÉ$T BëÁ o&9sëÅÉ$T NëÁ o g9sëÅÉ$T#,09=GKUZcgpt}��š$T·ÁÑÅë||g}oºÉ$R$T ÈÁÑÅë)ÂËÉ$R$T ÒÁÑÅ{•ozœgÉ$TÜÍá#É$R$Tá|/g}/oÉ$T#èÁÑÅDM!yÒö¯xGyO°È¯{_zW³ÈÃð$R !$T9 ÁÑÅDMz¨õz·üOx·üW>õë)Í_Ê;Ígú;}öo{‘_z˜Wñ=ÊDõÃ$$T(DñðÍOëÍOëÉz/W{/_Éx/Gy/OÉ{_zW³É{‘z˜É$R  !$37<@$Tlãë{¾#€z¾Â€#^#VëÁé###ÂnãÁé$R $TŠáÁÑ; 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 || 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 [ëÁ o&9s#rëÅÉ$T iëÁ o g9s#rÅëÉ$T x}|É$T 9~͢ͷÉÍ¢ÍÂÉÍ¢ÕÍ·áÉÍ¢ÕÍÂáÉÑÁ ÅÕ ·ò±^#VÉ^{ŸWÉ$T )·æƒ_zÎWÃÏæ/<ƒ_zÎÿWÃÏ ·òÛr+së|µÉsë|µÉ$R         - B O T $T àÁÑÅ}³o|²gµÉ$T ëÁÑÅ}«o|ªgµÉ$T öÁÑÅ}£o|¢gµÉ$T|µÂ !|µÉ!|µÉ$R$T9ÁÑÅ´ÅÍ™È+ÉÁÑÅ´ÅÍ™À+ÉÁÑÅ´ÅëÍ™Ø+ÉÁÑÅ´ÅÍ™Ø+ÉÁÑÅ$T9J´ÅÍ™ÈÐ+ÉÁÑÅ´ÅÍ™ÈØ+ÉÁÑÅ´ÅëÍ©Ø+ÉÁÑÅ´ÅÍ©Ø+ÉÁÑÅ´$T3„ÅÍ©Ð+ÉÁÑÅ´ÅÍ©ÈØ+É{•_zœ!ú¦³É³7Éz¼Â°{½!É|µÉ$RÕÅå*+++Í¢o&Éé$R$T £áÑÁÅÕåÃ$T¬Í$T9±*+ù!€^#6ø!€#~·Êëþ ÊÉ}| #~·Êëþ ÂÛ6ÃÉ$T9è!öÅåÍÃ***********************$T ***noname$R"!.38;@EGIKMOQSUWY[]_acegikmoqsuw$Q9J´ÅÍ™ÈÐ+ÉÁÑÅ´ÅÍ™ÈØ+ÉÁÑÅ´ÅëÍ©Ø+ÉÁÑÅ´ÅÍ©Ø+ÉÁÑÅ´$T3„ÅÍ©Ð+ÉÁÑÅ´ÅÍ©ÈØ+É{•_zœ!ú¦³É³7Éz¼Â°{½!É|µÉ$RµÊUÃÁU`i~#fo n}þÊ%UþÊiUþÊiUÃÁUÍÊTÍ�åÍÍTÑ! ~#fo~#fo|µÊcU!ÊUåÍÍTÑ! ~#fo~#foåÍÐTÑÍÓTÃÁUÍÊT`i~#fo nå`i~#fon&Í?Ñå! ~#fo~#foÑå*¢¤ÑÍúåÍÐTÑÍÓT!ÌUåÍÖTÑÍÓTÃÁUë!9ùëÁÉ+dad spà VÃ[Ãâ-à %Ãz%ÃkLàZÃI)ç7ËQÃiÃÇTÃ5iÃ�eÃ<.Ãh.ÃÅLÃo÷oÅ!öÿ9ùDMÍ�åÍ�åÍÖUÑÑë`is#r! ~#fo~#foë! s#rÍÙUÍÜU>[½ÂOV>¼Ê^V>(½Â[V>¼ÊºWÃÜWÍßU! ~#fo n}þÊ|VþÊWëWÍ�¯w#w! ~#fo##^#Vr+s! åÍâUÑ|µÊäVÍÜU]ÍåÂäV! ~#foåÍ�åÍåUÑåÍ�ÑÍ?ëás#r!ìWåÍèUÑ!ÃãWÃWÍëUÍ�åÍîUÑÍñU!åÍ�åÍôUÑ9ùëÁÉ0123456789ABCDEFinvaild hex constant0123456789ABCDEFÃKYÃÛ,à %ÃÃ]Ãz%Å!þÿ9ùDM`i¯w#w!ÆYåÍ?YÑ|µÂlY!ýYÍBY'ÍåÊ¢YÍBY|µÊ¢YÍ�ÿ|¢g}£oÍ?åÍEYÑë`is#rÃlYÍHY! ~#foåÍ�ëás#r!ýYë!9ùëÁÉ'ÃÚYÃÛ,à %ÃŒ+ÃÃ]Ãz%Å!ÿÿ9ùDM!‡ZåÍËYÑ|µÂõY!Ã~Z! ~#foå* ëás#rÍÎY"ÍåÊgZÍÎY|µÂZÃgZ* ÏÍùÚQZ!‰ZåÍÑYÑÍÎY"ÍåÊKZÍÎY|µÊKZÍÔYÃ1Z!Ã~Z* #" +>˜åÍÔYëásÃZÍ×Y* #" +>˜6!Ã~Zë!9ùëÁÉ"string space exhaustedÅ!þÿ9ùDM! ~#fo~#foë`is#rë|µÂÆZ!Ãv[`i~#fo n}þÊäZþÊ [þÊp[Ãv[`i~#fo n}þÊýZþÊ[à [!i~#fo å`i~#foå`i~#fo å`i~#fo sásásás! ~#foåÍ�ëás#r!Ã…]Ã]]! åÍ�[Ñ!Ã…]! åÍ [Ñ|µÊt]!Ã…]Ã…]!°]åÍ—[ÑÍ£[!Ã…]ë!9ùëÁÉ()global symbol table ofverflowinvalid expressionÃÒ]à %Ãz%Ã)rÃÂwÅ!ÿÿ9ùDMÍÆ]\ÍåÊì]ÍÉ]ï^ÍÉ]ÍÉ]ë`isÕÍÌ]Ñ>R½Â ^>¼Ê<^>N½Â^>¼ÊB^>B½Â!^>¼ÊH^>T½Â-^>¼ÊN^>F½Â9^>¼ÊT^ÃZ^! ï^! ï^!ï^! ï^! ï^`in&åÍÏ]Ñ|µÂq^`in&ï^`in&Ðÿë`isÍÆ]åÍÏ]Ñ|µÊ§^`in&Í?åÍÉ]ÑÐÿë`isÃ~^`in&ï^ë!9ùëÁÉÃÄ^Ãý.Ãh.à qÅ!¤_åÍ»^Ñ;^!²_åÍÁ^Ñ!¼_åÍÁ^Ñ!á_åÍÁ^Ñ!ü_åÍÁ^Ñ!"`åÍÁ^Ñ!G`åÍÁ^Ñuge equ @ucomp+6ch@ugt equ @ucomp+51h@ule equ @ucomp+79h@ult equ @ucomp+5fh@preinc equ @incdec@postinc equ @incdec+10h@predec equ @incdec+08h@postdec equ @incdec+1ahóaà qÅ!¾aåͰaÑÁÉendÃÈaÃîpÅ!ÓaåÍÅaÑÁÉdb ÃãaÃý.Ã+.à qÅ!9ùDMÍ�åÍÚaÑÍÝa!båÍàaÑÁÉdsectà bÃîpÅ!båÍ bÑÁÉds Ã%bÃý.Ãh.Å!9ùDM!CbåÍbÑÍ�åÍbÑÍ"bÁÉ extrn ÃQbÃ�.Å!;åÍNbÑÁÉÃnbà qÃiÃ�eÃ<.Ãh.Å!þÿ9ùDMÍ�å*¢¤ÑÍúë`is#rÍ�|µÂ™bÍ�Ã…cÍ�|·úùbÍ�ÍùÒùbÍ�|¢g}£o|µÊÒb!ŽcåÍ_bÑ`i^#Vr+sÍ�|µÊòb!•cåÍ_bÑÍ�++ë`is#rÃÒbÍ�Ã…cÍ�|·òÉlxi d,lxi h,mvi b,jmp @switchÃ(eÃîpÅ!3eåÍ%eÑÁÉdw ÃFeà qÃîpÃ%Ãh.Å!9ùDMÍ�|µÂge!}eåÍ:eÑ!…eåÍ:eÑ!‹eåÍ=eÑÍ�åÍ@eÑÍCeÁÉmov a,hora ljnz ÖeÃîpÅ!¡eåÍ“eÑÁÉlxi h,îeÃLiÅ!9ùDM! n}þÂÌe!ÖeåÍ«eÑÃÔe!ÝeåÍ«eÑÁÉ@gchar@gintÃïeÃ|iÃLiáiÅ!üÿ9ùDM! ~#fo~#foë`is#r`i~#fo nå`i~#fon&Í?Ñå! ~#fo~#foÑå*¢¤ÑÍúë! s#rÍ� ++|µÂfÍ�åÍæeÑ|µÊtf!²fåÍéeÑÃ|f!ºfåÍéeÑàfÍ�åÍæeÑ|µÊ˜f!ÂfåÍéeÑàf!ËfåÍéeÑÍ�åÍìeÑë!9ùëÁÉ@gintss@gintsl@gcharss@gcharslÃæfÃîpÃý.Ã<.Ãh.ÃLiÅ!9ùDMÍ�+|µÂ1g!agåÍ×fÑÑÍ÷U!îWåÍèUÑ!ÃãWÍ�¯w#w! åÍâUÑ|µÊhWÍÜU]ÍåÂhWÍúUÍ�åÍåUÑåÍ�ÑÍ?åÍýUÑÍVÍñU!åÍ�åÍVÑÑÍ÷UÈWÍëUÍ�åÍîUÑÍñU!åÍ�åÍVÑÑÍ÷U!ðWåÍèUÑ! ~#fo##å~#fo#ëás#r!ÃãWÍ�åÍVÑ!ÃãWÍ�¯w#wÍßU! ~#fo~#foåÍ VÑ!ÃãWÍ�ÃãWë! 9ùëÁÉ]]]à Xà %Ã¥nÃz%Ã)rÃ,{ÃŒ+Ãð(Å!üÿ9ùDMÍõW0ÍåÂ6XÍøWXÍåÊ _Í ÍæÂiyÁÉÍþÊÁÉÍ7Å:ŸO*¡ëÍo`ÁÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u€Í*£|µ*uÊîy*¡€€~#ÂÅy"¡*sëÍ·*uÂîy#"u*£+"£òyÁÉÃöyÃ{Í7:ŸÍ,ÚÅå*ŸåÍóyÑë:£*¡·Êz}|æ2qã å¾ÊIzãëÕÍÑáþÿÂ?zÑÁÃ:qwÕÍÑþÿÊ:z! Ñ{æwëÁÉ:w·oÊjz¯2w&ÉÅÍÁþÊþ!ÿÿÈoþ Â�zÅ ÍÁ. &ÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u*£|µÊæz*¡ëÍ*sëÕÍÑþÁÊÅþÂëz! ~þ€Âæz6*uÁÉ*£+"£*¡€"¡*u#ÃkóqÅ!kåÍkÑÁÉ@eqÃkóqÅ!&kåÍkÑÁÉ@neÃ0kóqÅ!;kåÍ-kÑÁÉ@uleÃFkóqÅ!QkåÍCkÑÁÉ@leÃ[kóqÅ!fkåÍXkÑÁÉ@ugeÃqkóqÅ!|kåÍnkÑÁÉ@geÆkóqÅ!‘kå̓kÑÁÉ@ultÜkóqÅ!§kåÍ™kÑÁÉ@ltñkóqÅ!¼kåÍ®kÑÁÉ@ugtÃÇkóqÅ!ÒkåÍÄkÑÁÉ@gtÃÜkóqÅ!çkåÍÙkÑÁÉ@asrÃòkóqÅ!ýkåÍïkÑÁÉ@aslà lÃLiÃálÅ!9ùDM!&låÍlÑÍ�åÍlÑÁÉ@preincÃ7lÃLiÃálÅ!9ùDM!RlåÍ1lÑÍ�åÍ4lÑÁÉ@predecÃ`lÃLiÅ!klåÍ]lÑÁÉ@negÃvlÃLiÅ!�låÍslÑÁÉ@nlogÃ�lÃLiÃálÅ!9ùDM!«låÍŠlÑÍ�åÍ�lÑÁÉ@postincýlÃLiÃálÅ!9ùDM!ØlåÍ·lÑÍ�åͺlÑÁÉ@postdecÃðlàZÃÂaÃ,qÃh.Å!üÿ9ùDM! ~#fo! oåÍünÑÁÉmust be lvalueÃ.oÃíuÃ5vÃt0ÃA%à %Ãz%Å!°ÿ9ùDM!Žoå`iåÍoÑÑÍ�Tå`iåÍoÑÑ!›oå`iåÍoÑÑ`iåÍ"oÑÍ%o|µÊmoÃ…oÍ(o]ÍåÂoÍ+oÃ…oÍ+oÃboë!P9ùëÁÉidentifier "" is not a vaild array baseÃÛoÃâ-Ã�dÃ*/ÃA%ç7ÃÔqÃÛ,ÃI)ÃLiÃêqÃ\bÅ!þÿ9ùDM`i¯w#wͺoÍ�|µÂøoͽo!‡på*š¤å!ú£ÑåÍÀoÑÑ|µÂLpÍÃo|µÊpÃLpÍÆoÍ�|µÂ*pÍÉoͽoÍ�##ë`is#r!‰påÍÌoÑ|µÂIpÃLpÃøo!‹påÍÏoÑÍ�|µÊipÍ�åÍÒoÑÃlpÍÕo*¢¤åÍ�ÑåÍØoÑ"¢¤ë!9ùëÁÉ),)ÙpÃíuÃ5vÃt0Å!°ÿ9ùDM!Öpå`iåÍ�pÑÑÍ�Tå`iåÍ“pÑÑ!ìpå`iåÍ“pÑÑ`iåÍ–pÑë!P9ùëÁÉundefine identifier ""Ã÷pÃé1Ãý.Å!9ùDMÍ sÃEyÃuyÈyÅ!9ùDMÍ�+|µÂ+s! n&åÍsÑÁÉÍ�++|µÂIs! n&å!åÍsÑÑÁÉÍ�+++|µÂhs! n&å!åÍsÑÑÁÉÍ�++++|µÂ s! n}þ Â�s! å!åÍsÑÑ! n&å!åÍsÑÑÁÉÍ�##^#Vr+sz³ÊÑsÍ�^#Vr+sÕ! nëásë&ÁÉ!åÍ�åÍ�~#foåÍsÑÑÑÍåÊûs!ÿÿÁÉÍ�##6ÿ#6Í�åÍ�ëás#rÍ�^#Vr+sÕ! nëásë&ÁÉÁÉÃHtÈyÃxÃðyÅ!þÿ9ùDMÍ�ÍëÒct!ÀuÍ�##~#foÍåÂ|t!ÀuÍ�##~#fo€ëÍËÍúë`is#rÍ�åÍ�åÍ�~#foåÍ?tÑÑÑåÍ�ÑÍåÊÉt!ÿÿÀuÍ�+€Í?ë`is#rÍ�##~#fo|µÊYu!€åÍ�åÍ�åÍ�åÍ�~#foåÍ vÑÑÑë`is#r!ÍÚ8wÍ�##^#Vr+sëÃ|wÍ�##åÍ�€Í?+ëás#rÍ�åÍ�ëás#rÍ�^#Vr+sën&Ã|wë!9ùëÁÉÅ!þÿ9ùDM`i¯w#w! ^#Vr+sën}·Ê²w`i^#Vr+sÓwÍ�ùwë!9ùëÁÉÅ!9ùDM! n&0ÍùͯÚíw! n&9ÍͯÁÉÁÉÅ!9ùDM! n&aÍùͯÚx! n&zÍͯÁÉÁÉÍ Åë!\Í&Í!ÁÉÍ Å6ÿ ëÕÕÕÍ Íá#F#Ñx·Ê]x~#ÃPx¯áÁÉÍ Å_þ Âwx Í ÍÁÉÃ#Í7*£|µÈÅDM*¡ë*ŸÍÊxÚ®x><ê¢xí°ÁÉ~# x±Â¢xÁÉ ë ë><ê¾xí¸ÁÉ~+ x±Â¾xÁÉ|ºÀ}»ÉÃÙxà xÃyÍ7*ŸÅåÍÓxÑ\ÍþÿÁÊ!å*ŸåÍÖxÑÑ"uòzÍ Í,ÚÅ FN¯xg>G�oy ò*{$ÁÉÍ7Å*Ÿë*¡·ÊW{¾Â:{Õ#~·Ê\{¾ÊG{ÑÃ7{Á!É`iÑÁÉ#ëÍo`ÁÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u€Í*£|µ*uÊîy*¡€€~#ÂÅy"¡*sëÍ·*uÂîy#"u*£+"£òyÁÉÃöyÃ{Í7:ŸÍ,ÚÅå*ŸåÍóyÑë:£*¡·Êz}|æ2qã å¾ÊIzãëÕÍÑáþÿÂ?zÑÁÃ:qwÕÍÑþÿÊ:z! Ñ{æwëÁÉ:w·oÊjz¯2w&ÉÅÍÁþÊþ!ÿÿÈoþ Â�zÅ ÍÁ. &ÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u*£|µÊæz*¡ëÍ*sëÕÍÑþÁÊÅþÂëz! ~þ€Âæz6*uÁÉ*£+"£*¡€"¡*u#